排序结果的元排名算法

时间:2013-06-27 14:21:14

标签: algorithm search-engine ranking meta

想象一下,你要求你的队友做一个关于谁应该组织下一次烧烤的选举。你的团队约有120人,你想从6人的池中选出3人来完成这项工作。 120人中的每一人都可以通过排名来投票最多3人:第一人最好是X,第二人最好,第三人是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好吗?得到了一个pos.2但B得到2次pos.3,应该排名更高?是2倍pos.2优于1倍pos.1和2倍pos.3?

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

2 个答案:

答案 0 :(得分:3)

当你问“我该怎么用?”我可以推荐一组名为“Condorcet方法”的方法,如Terje D.所述。如果你不想进一步了解选举方法的复杂理论,我可以推荐一种condorcet方法:“Schulze方法”(也称为:路径获胜者或胜利路径获胜者)。这是例如由Debian,KDE和德国海盗党使用。

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

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

答案 1 :(得分:0)

也许这样做:每个第一个地方分配3个点,每个第二个地方分2个点,每个第3个地方分1个点。然后检查哪些候选人得分最多。