我正在寻找一种算法来对象进行排名。可以比较两个对象。然而,比较是真实世界的比较,可能是有缺陷的。此外,我更关心的是找出最好的对象而不是最差的对象。
认为我在科学上评估材料。我结合了两种材料。我想找到最好的工作材料进行深入测试。所以,我并不关心那些没有希望的材料。但是,每个测试都可能是假阳性,或者在这两种材料之间存在异常。
想象一下,你的任务是聘请一支拳击手团队。你对评估拳击手一无所知,但可以让两个拳击手互相争斗。世界上有无限数量的拳击手。但是飞行它们的成本很高。理想情况下,你想雇用最好的拳击手。实际上,你不知道拳击手是否会接受你的报价。另外,你不知道其他拳击俱乐部竞标的竞争力。你将只向最好的n名拳击手提供优惠,但必须准备好知道接下来会有哪些n名拳击手发送优惠。你只能得到最差的拳击手是不太可能。
我能想到以下方法。但是,它们都有缺点。我觉得应该有更好的方法。
可以使用传统的排序算法。
缺点: - 误报可能会严重影响算法的正确性。 - 排序算法将花费一半时间对包的下半部分进行排序,这是不重要的。 - 排序算法从所有项目开始。有了这个问题,我们可以进行第一次测试,不知道是否允许我们进行第二次测试。我们最终可能只允许做两次测试。或者我们可以被允许进行一百万次测试。
缺点: - 这似乎很有希望。困难在于找到允许一次添加一个玩家的一个,因为我们可以进行更多的比较。似乎应该有一个高度专业化的解决方案,比标准的锦标赛算法更好。
缺点: - 该算法不能纠正误报。如果早期出现误报,则可能会使整个测试结果出现偏差。
缺点: - 这种方法非常好,因为它可以纠正误报。它还允许轻松地向测试池添加更多对象。但是,它并不认为对顶级对象的胜利比对底对象的胜利要重要得多。因此,比较被浪费了。
缺点: - 我不知道如何压扁这样一个杂乱的图形,它可能有周期和模糊的终端节点。可能有多个不败的对象。如何在如此凌乱的图表中挑选一名获胜者?如何知道哪种比较最有价值?
缺点 - 这种方法看起来很有希望,因为很容易将新对象添加到测试对象池中。它还考虑到对顶级对象的胜利应该算得更多。我无法想出确定要点的好方法。第一次比较,获得1分。一旦10,000个对象进入池中,平均获胜将达到5,000点。两项测试的奖励应大致相等。后来的比较压倒了早期的比较,并在不应该被忽略时被忽略。
有没有人对解决这个问题有好主意?
答案 0 :(得分:0)
我会搜索一个易于计算的对象值,可以在对象之间进行比较,以提供足够好的近似顺序。您可以准确地将每个新对象与当前最佳对象进行比较,然后使用其计算值将输入符号排序到其余列表中。
最好的总是准确的。其余的顺序取决于您的"值"。
答案 1 :(得分:0)
我建议研究Elo Rating系统及其衍生产品。 (例如Glicko,BayesElo,WHR,TrueSkill等)
因此,您为每个对象分配了初步的评分,然后根据您进行的匹配/比较来更新该值。 (评分的变化越大,结果越出乎意料)
这仍然悬而未决,即如何决定将哪个对象与哪个其他对象进行比较以获取最多信息的问题。为此,我建议研究锦标赛系统和季后赛格式。尽管我怀疑最佳解决方案肯定比这更临时。