多数投票算法

✍ dations ◷ 2025-11-09 05:49:41 #算法

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

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

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

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

相关

  • 呋喃苯胺酸呋塞米(Furosemide),市面常见的商品名为来适泄锭(Lasix),系一种用来治疗因心脏衰竭、肝硬化或肾病变引起的水肿,也可治疗高血压的药。使用剂量依人而定,可以经静脉注射或口服给药,口
  • 药学国际单位国际单位(英语:International unit,简写为IU;法语:unité internationale,简写为IU)是用生物活性来表示某些抗生素、激素、维生素及抗生素量的药学单位。
  • 普里阿邦期普里阿邦期(亦被称为杰克逊期或鲁南甘期)是始新世的最后一个阶段,起止时间分别为37.8百万年前和33.9百万年前。
  • 奥地利议会联邦大会(德语:Bundesversammlung (Österreich))(两会联合召开)244政治主题奥地利议会(德语:Österreichisches Parlament)是奥地利共和国的立法机关,由两院组成,分别为国民议会(下议
  • 莱卡 (苏联太空犬)莱卡(俄语:Лайка,约1954年-1957年11月3日)是一只苏联太空犬,是史上最早进入太空的动物之一,也是第一只进入地球轨道的动物。莱卡原先是只在莫斯科街头寻获的雌性混种流浪狗,后
  • 2019冠状病毒病日本国内病例 (2020年3月上旬) 除特别注明外,本文所有时间均以东九区时间(UTC+9)为准。3月1日,公布再多1宗死亡个案,死亡个案增至6宗。死者(#153)是北海道钏路地方70余岁男性,自身有吸入性肺炎,29日晚间7时左右不
  • 转向过度转向过度(oversteering),俗称甩尾,为车辆在弯中的实际转向角度比前轮的转动角度大,也就是后轮出现了向弯道外侧滑动的现象。通常,车辆进入衡定状态需要一定的速度,转向过度可以使车
  • 2009年澳大利亚羽毛球大奖赛2009年澳大利亚羽毛球大奖赛为2009年度的澳大利亚羽毛球公开赛,是2009年世界羽联大奖赛的其中一站。本届赛事于2009年7月22日至7月26日在澳大利亚墨尔本内的Melbourne Sports
  • 克兰诗克兰诗(法语:Clarins)是一家法国生产化妆品的公司,于1954年由医学院学生Jacques Courtin-Clarins在巴黎创办,1974年进入国际市场,2000年公司改由创办人长子Christian Courtin-Clar
  • 姚渡镇 (成都市)姚渡镇,是中华人民共和国四川省成都市青白江区下辖的一个乡镇级行政单位。姚渡镇在1981年以前一直是金堂县所辖乡镇,东邻赵镇、西挨日新、北望城厢、南与福洪相望。1981年元月