【发布时间】:2010-10-14 20:21:38
【问题描述】:
我想对一个项目集合(大小可能大于 100,000)进行排名或排序,其中集合中的项目没有内在(可比)价值,而是 我所拥有的只是任何两个项目之间的比较 由用户以主观方式提供。
示例:考虑一个包含元素[a, b, c, d] 和用户比较b > a、a > d、d > c 的集合。这个集合的正确顺序是[b, a, d, c]。
这个例子很简单,但可能有更复杂的情况:
- 由于比较是主观的,用户也可以说
c > b。在这种情况下,这会导致与上述顺序发生冲突。 - 此外,您可能没有“连接”所有项目的比较,即
b > a、d > c。在这种情况下,排序是不明确的。可能是[b, a, d, c]或[d, c, b, a]。在这种情况下,任何一种排序都是可以接受的。
如果可能,最好以某种方式考虑相同比较的多个实例,并为出现次数较多的实例赋予更多权重。但是没有这种条件的解决方案仍然可以接受。
扎克伯格的 FaceMash 应用程序使用了该算法的一个类似应用程序,他根据比较对人进行排名(如果我理解正确的话),但我无法找到该算法实际上是什么。
是否已经存在可以解决上述问题的算法?如果是这样的话,我不想花精力去想出一个。如果没有特定的算法,是否有某些类型的算法或技术可以指点我?
【问题讨论】:
标签: algorithm sorting comparison ranking