多数投票算法

✍ dations ◷ 2025-11-25 22:05:41 #算法

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

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

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

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

相关

  • 形成层形成层是一个植物组织层,提供未分化细胞给植物生长。有几种不同种类的形成层被发现在植物的茎和根中:
  • 日本银行日本银行(日语:日本銀行/にっぽんぎんこう Nippon ginkō */?),简称日银(日语:日銀/にちぎん Nichigin */?),是日本的中央银行,依据日本银行法(日语:日本銀行法)为财务省主管的认可法
  • 钉螺见内文钉螺泛指所有钉螺属(学名:Oncomelania)的物种,是一种在田间生活的腹足纲软体动物。钉螺属曾经属于觿螺科(Hydrobiidae)及麂眼螺总科,今属截螺总科盖螺科。钉螺外壳小,呈圆锥形
  • 开化县开化县是中国浙江省衢州市下辖的一个县,位于浙江省的最西部,钱塘江源头。面积2224平方千米,人口34万。邮政编码324300。县人民政府驻城关镇解放街54号。森林覆盖率达79.2%,是全
  • 陶孟和陶孟和(1887年11月5日-1960年4月17日),原名履恭,字孟和,以字行,天津人,祖籍浙江绍兴,社会学家。陶孟和幼时就读于教育家严修创办的中西学并重的“严氏家塾”(1904年改称私立敬业中学堂
  • 恩斯特·策梅洛恩斯特·策梅洛(德语:Ernst Friedrich Ferdinand Zermelo,1871年7月27日-1953年5月21日),生于柏林,是德国数学家,其工作主要为数学基础,因而对哲学有重要影响。1889年,他毕业于柏林。
  • 天牛科10个亚科,详见内文天牛科(学名:Cerambycidae),其物种通称作天牛,是鞘翅目昆虫的一个科。已知26,000种以上,分布于全世界,当中有稍微多于一半分布于东半球。这些物种以食草动物为主,包
  • 虵皇后虵皇后(?-397年),后秦开国皇帝武昭帝姚苌的皇后,文桓帝姚兴的母亲。虵氏是羌人,在姚苌称帝前就是他的妻子。建初元年(386年)夏,姚苌称帝,册封虵氏为皇后,姚兴为皇太子。建初九年(394年),姚
  • 卢基乌斯·科尔内利乌斯·苏拉卢基乌斯·科尔内利乌斯·苏拉(幸运者)(拉丁语:LVCIVS·CORNELIVS·L·F·P·N·SVLLA·FELIX,前138年-前78年),古罗马政治家,军事家,独裁官。苏拉长期在军队中担任统帅,前88年他当选执
  • 清流镇 (成都市)清流镇,是中华人民共和国四川省成都市新都区下辖的一个乡镇级行政单位。清流镇下辖以下地区:顺河社区、均田社区、黄龙村、广泉村、翠云村、三尺村、飞石村、九龙村、同义村、