通过大量比较对对象进行评分的算法

标签 algorithm compare

假设我有一个包含 500 个对象的列表。我需要给每一个评分(满分 10 分)。

我随机选了两个送给 friend 。然后我问 friend 他们更喜欢哪个。然后,我使用此比较(即 OBJECT1 优于 OBJECT2)来更改两个对象的评分(满分 10)。

然后我重复这个随机选择并与一群 friend 进行数千次比较,直到我得到一个包含 500 个对象的列表,并且在满分 10 分中获得可靠评级。

我需要找出一种算法,该算法采用两个对象的当前评级,并根据认为哪个更好来改变它们...

最佳答案

每个对象的评分可以是(胜利次数)/(参加比赛的次数)* 10。所以获胜者的评分会上升一点,失败者的评分会下降一点,这取决于他们参加了多少场比赛' 以前输入。

对于更复杂且对抽签运气不太敏感且试验次数较少的情况,我建议 http://en.wikipedia.org/wiki/Elo_rating_system ,但它不是 10 分。您可以重新调整每个人的分数,使最高分变为 10,但随后一场比赛可能会影响每个人的评分,而不仅仅是涉及的两个人的评分。

这完全取决于“可靠”的含义。不同 friend 的判断彼此之间不会一致,甚至可能随着时间的推移对同一个人也不一致,因此没有“真正的”排序顺序供您对排名进行健全检查。

关于更深奥的一点,阿罗不可能定理陈述了一些您希望在采用个人偏好并将它们组合以形成聚合组偏好的系统中具有的良好属性。然后它继续证明它们相互不一致 - 你不能拥有它们。任何关于“良好”总体评级的直觉想法都存在无法实现的真正风险。

关于通过大量比较对对象进行评分的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050774/

相关文章:

java - 有效期控制程序

java - 如何解决: compareTo >> cannot find symbol

ruby - 高效的置换树算法

algorithm - 给定数组 A,形成数组 M,使得乘积之和 (a1*m1+...+an*mn) 最大

c++ - 是否存在以下列方式对两个范围进行排序和划分的标准算法?

python - 检查 python 中浮点列的相等性

algorithm - 我们应该对两个列表进行排序然后合并,还是相反?

algorithm - 图搜索算法与图优化

比较多个文件的通用代码

javascript - 比较 JavaScript 中的字符串