3

想象一下,你让你的队友就谁应该组织下一次烧烤进行选举。您的团队大约有 120 人,您想从 6 人中选择 3 人来完成这项工作。120 个人中的每一个人可以通过排名最多投票给 3 个人:第一最佳人是 X,第二最佳人是 Y,第三最佳人是 Z。

最后,所有投票应汇总在排名结果列表中。

| Candidate | Voter 1 | Voter 2 | Voter 3 |
-------------------------------------------
| A         | 1. Pos  |         | 2. Pos  |
| B         | 3. Pos  | 1. Pos  | 3. Pos  | 
| C         | 2. Pos  | 2. Pos  |         |
| D         |         | 3. Pos  |         |
| E         |         |         |         |
| F         |         |         | 1. Pos  |
-------------------------------------------

如果选民没有进行排名并且每次投票都相等,那么汇总结果会很好。B 得 3 票,A 和 C 得 2 票。所有其他人获得的选票更少。获胜者是:A、B、C。

我不知道存在哪些算法来聚合排名数据,也不知道结果应该是什么样子。F 获得了 pos.1 的投票,这很好,但是 A 和 B 也获得了这样的投票。从我的角度来看,A 和 B 更好,因为他们获得了更多的选票。但是A比B好吗?A 获得了 pos.2,但 B 获得了 2 次 pos.3,应该排名更高的是什么?2 次 pos.2 是否比 1 次 pos.1 和 2 次 pos.3 好?

听起来像是实施元搜索引擎排名算法。存在哪些算法?我应该使用什么算法?

4

2 回答 2

4

正如您问“我应该使用什么?” 正如 Terje D. 所提到的,我可以推荐一组称为“Condorcet 方法”的方法。如果您不想了解有关选举方法的复杂理论的更多信息,我可以推荐一种 condorcet 方法:“Schulze 方法”(也称为:路径获胜者或节拍路径获胜者)。这例如被 Debian、KDE ​​和德国海盗党使用。

您可以使用此在线投票来获得针对您的问题的临时解决方案:https ://modernballots.com/elections/qm65cnts/vote/

如果您想将其实施到您的公司网站(Intranet 或其他)中,我建议您为现有项目做出贡献。如果您是 PHP 开发人员,请查看:https: //bitbucket.org/robla/electowidget/src/14581ac7a5f2/lib/methods/SchulzeMethod.php Electowidget 最初是 MediaWiki 的插件。也许这是一个很好的起点,也许您想贡献一些更改以使其成为一个库。

于 2013-06-28T23:55:13.107 回答
0

也许就这样吧:第一名得3分,第二名得2分,第三名得1分。然后检查哪些候选人得分最高。

于 2013-06-27T15:39:39.243 回答