20160712排名概述.md
2016-07-18 12:17
190 查看
最近看了一本书,名叫《谁排第一》,讲的是关于评分排名的一些算法,主要应用领域是在对对象的排名上(体育队伍,网页,政治候选人等等)。网上相关的中文资料较少,搜索一些关键词,诸如梅西法,科利法,基纳法,搜不出与之相关的东西来。google上与之相关的英文资料有许多,特在此记录一下读书心得,给大家分享一下Rating以及Ranking算法的魅力。
对于有3个或更多候选人时,没有任何投票体系能同时满足以下4条常识性准则:
其定义域不受限制,即它适用于所有可能的个人偏好类型。也就是说每一个投票者都能按照自己意愿的任何方式对候选者进行排名。
非独裁,即社会偏好不以一个人或者少数人的偏好所决定,没有任何投票者能够对投票选举产生不成比例的控制力。
帕累托原则,即如果所有人都偏好A胜于B,则社会也偏好A胜于B。
无关变化的独立性,这一要求可以简单理解为:只要所有人对A和B的偏好不变(不管对例如A和C的偏好如何变化),则社会对A和B的偏好不变。比如:投票者总是将候选人A排在B之前,则当候选人集合被扩展为包括所有候选人时,也应该保持这种排序,如果有AC的排序发生变化,但是AB的排序是不受影响的。
这里举了个例子就是5支队伍的比赛得分,这个例子将贯穿接下来的几个章节。
第一章就这么简单,接下来,就正式开始各种有趣的算法和评分体系的介绍了,下一篇博客将介绍BCS里的两种评分方法。
1. 阿罗的不可能性定理
说到排名,就不得不说到投票。目前最流行的是简单多数投票和偏好列表投票,但是最完美的投票应该是怎样的,是否存在?数学家Kenneth Arrow提出了不可能性定理。对于有3个或更多候选人时,没有任何投票体系能同时满足以下4条常识性准则:
其定义域不受限制,即它适用于所有可能的个人偏好类型。也就是说每一个投票者都能按照自己意愿的任何方式对候选者进行排名。
非独裁,即社会偏好不以一个人或者少数人的偏好所决定,没有任何投票者能够对投票选举产生不成比例的控制力。
帕累托原则,即如果所有人都偏好A胜于B,则社会也偏好A胜于B。
无关变化的独立性,这一要求可以简单理解为:只要所有人对A和B的偏好不变(不管对例如A和C的偏好如何变化),则社会对A和B的偏好不变。比如:投票者总是将候选人A排在B之前,则当候选人集合被扩展为包括所有候选人时,也应该保持这种排序,如果有AC的排序发生变化,但是AB的排序是不受影响的。
这里举了个例子就是5支队伍的比赛得分,这个例子将贯穿接下来的几个章节。
Duke | Miami | UNC | UVA | VT | 胜负次数 | 分差 |
---|---|---|---|---|---|---|
Duke | 7-52 | 21-24 | 7-38 | 0-45 | 0-4 | |
Miami | 52-7 | 34-16 | 25-17 | 27-7 | 4-0 | |
UNC | 24-21 | 16-34 | 7-5 | 3-30 | 2-2 | |
UVA | 38-7 | 17-25 | 5-7 | 14-52 | 1-3 | |
VT | 45-0 | 7-27 | 30-3 | 52-14 | 3-1 |
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法