多数投票算法

✍ dations ◷ 2025-12-03 20:16:15 #算法

博耶-摩尔多数投票算法(英语:Boyer–Moore majority vote algorithm),中文常作多数投票算法、摩尔投票算法等,是一种用来寻找一组元素中占多数元素的常数空间级时间复杂度算法。这一算法由罗伯特·S·博耶(英语:Robert S. Boyer)和J·斯特罗瑟·摩尔(英语:J Strother Moore)在1981年发表,也是处理数据流(英语:streaming algorithm)的一种典型算法。

这一算法应用的问题原型是在集合中寻找可能存在的多数元素,这一元素在输入的序列重复出现并占到了序列元素的一半以上;在第一遍遍历之后应该再进行一个遍历以统计第一次算法遍历的结果出现次数,确定其是否为众数;如果一个序列中没有占到多数的元素,那么第一次的结果就可能是无效的随机元素。对于数据流而言,则不太可能在亚线性空间复杂度的情况下中就寻找到出现频率最高的元素;而对于序列,其元素的重复次数也有可能很低。

算法可以用伪代码如下表示:

即便输入序列没有多数元素,这一算法也会返回一个序列元素。然而如果能够进行第二轮遍历,检验返回元素的出现次数,就能判断返回元素是否为多数元素。因此算法需要两次遍历,亚线性空间算法无法通过一次遍历就得出输入中是否存在多数元素。

相关

  • IM肌肉注射(英语:Intramuscular injection,常常简称为 IM),是指将物质直接注射至肌肉之中的注射方式。在医学领域中,它是几个给药途径之一。由于肌肉比皮下组织中的血管更多更大,肌肉
  • 第八届世界运动会第八届世界运动会(简称2009高雄世运,英语:The World Games 2009),于2009年7月16日至26日在中华民国台湾高雄市举行,是首次在台湾举办的国际性大型综合运动会,亦是第二次在亚洲举办
  • span class=nowrapScClsub3/sub/span氯化钪是一种无机化合物,化学式为ScCl3。它是一种白色、高熔点的离子化合物,极易溶于水。无水氯化钪可以由氧化钪和碳的混合物与氯气反应得到。六水氯化钪可由氧化钪、氢氧化
  • 郾城.mw-parser-output ruby.zy{text-align:justify;text-justify:none}.mw-parser-output ruby.zy>rp{user-select:none}.mw-parser-output ruby.zy>rt{font-feature-settings:
  • 西周 (启蒙家)西周(日语:西 周/にし あまね 、1829年3月7日-1897年1月31日),日本江户时代后期幕末至明治初期的启蒙家、教育家。江户幕府将军德川庆喜的政治顾问、明治贵族院议员。男爵,勋一等
  • 北京新园区力学研究所试验基地北京新园区力学研究所试验基地,是钱学森回中国之后亲自选址和创建的中国第1个火箭研究和科学试验基地,为中国“两弹一星”研究基地。地址位于北京市怀柔区。 怀柔火箭试验基地
  • 遗忘 (消歧义)遗忘可以指:
  • 本杰明·丘奇菲利普国王战争威廉王之战Queen Anne's War本杰明·丘奇上校(英语:Benjamin Church,约1639年生-1718年1月17日),生于普利茅斯殖民地,曾参与菲利普国王战争、威廉王之战与安妮女王战
  • 朱印状朱印状是指日本战国时代到江户时代的古文书史料中,盖上朱印的命令文书。最古的朱印状是今川氏亲在永正9年(1512年)免除西光寺的栋别钱(房屋税)而发给的文书。以后,印判状这个制度
  • 2 Be Free2 Be Free为 Twins 2012年推出的十周年纪念粤语专辑,于2012年3月1日发行,亦是到目前为止最后一张粤语大碟,随后的几张都是以粤语EP为主。为保持神秘感,专辑封面在推出前一天才对