多数投票算法

✍ dations ◷ 2025-11-28 15:23:39 #算法

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

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

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

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

相关

  • 异亮氨酸异亮氨酸(Isoleucine、简写:三字母: Ile;一字母: I)是二十种基本氨基酸的其中一种,几乎在所有蛋白质的结构里都存在着。其化学组成和亮氨酸完全一样,但原子连接/排列顺序不同,因此
  • 尼古丁酸维生素 B3,维生素 PP烟酸(英语:niacin、nicotinic acid,也称维他命B3、维他命PP、吡啶-3羧酸),分子式:C6H5NO2,耐热,能升华。首次描述于Hugo Weidel于1873年对尼古丁的研究。它是人体
  • 国家认同国族认同(又称为国家认同、民族认同,又可称为“国家身份”、“民族身份”、“国族身份”)是人对于国家或民族的归属感或认同感。这是种将国族视为一凝聚整体的观念,通常以一个国
  • 弹性素食主义弹性素食主义(英语:Flexitarianism)或锅边素是一种半素食主义(英语:Semi-vegetarianism)。弹性素食者坚持素食,基本上不吃肉食,但不强制性,也就是有时候环境原因,或者个人心情原因,偶尔
  • 单克隆抗体单株抗体(英语:monoclonal antibody,缩写:mAb),简称单抗,是仅由一种类型的免疫细胞制造出来的抗体,相对于多克隆抗体(由多种类型的B细胞所制造出来的一种抗体)。单克隆抗体由可以制造
  • 双连坡断层双连坡断层是台湾桃园的一条断层,根据经济部中央地质调查所2000年的资料,将双连坡断层列为存疑性活动断层,该断层始于上阴影窝附近的纵贯铁路南侧,截断伯公冈台地北侧社子溪的河
  • Modula-2Modula-2是由图灵奖获得者尼克劳斯·维尔特(Niklaus Wirth)所提出的一个编程语言。Modula-2之名是根据其3个编译单元的模块而来,这些模块分别为程序模块(Program Module),定义模块
  • 东南暗沙东南暗沙位于南沙群岛北部,双子群礁东南缘,奈罗礁以东约3海里,最浅处水深约5.1米。1983年中国地名委员会公布的标准名称为“东南暗沙”。西方文献一般称为“Sabine Patches”。
  • 长仓长仓(英语:Long Position)与短仓相反,指投资人买入金融产品部位后,持有不出脱的操作方式。通常预设后市看好看涨,是传统的证券操作方式。股票投资人根据股市行情价格波动而进行波
  • 生成对抗网络生成对抗网络(英语:Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。该方法由伊恩·古德费洛等人于2014年提出。