根据两个人之间的关系排序数据

时间:2015-05-23 06:58:21

标签: algorithm

这个想法很简单,我有2000行关于团队之间匹配的数据。我想根据他们过去的比赛结果,通过相互比较的力量对队伍进行排序。

让我们说这是已经发生的比赛:

1 vs 2 => 2 Won
2 vs 1 => 2 Won
3 vs 1 => 1 Won
4 vs 3 => 3 Won
5 vs 3 => 5 Won
1 vs 5 => 5 Won

现在根据这些信息,我想订购团队。对此有何想法或已知算法?结果应该是这样的:

1st: Team 2
2nd: Team 5
3rd: Team 1
4th: Team 3
5th: Team 4

ofc这里的数据非常有限且简单。

数据: 数据包含去年所有联赛的所有比赛。两个团队可能没有游戏,也没有一个或多个游戏。周期也有可能。像A vs B => B,B vs C => C和C vs A => A这些是真实世界的数据。我想要的是一种对数据进行排序并猜测彼此相关的力量的方法(不是游戏。就像根据他们的胜利添加或删除分数一样),对我来说最重要的是最终结果。因此,如果这意味着从等式中删除一些匹配以更好地计算结果,我就可以了。

准确性注意: 根据这些信息,没有迹象表明团队2是否优于团队5,反之亦然。因此,如果我们能找到一种方法来计算一个数字作为位置的权重或类似的东西,那将是很好的。

2 个答案:

答案 0 :(得分:2)

你应该有一个字典/查找team->点。每当一支球队获胜时都会增加一分。如果它输了减去一点。

对所有游戏(每场游戏两次)执行此操作后,您可以使用“点”作为排序键对此查找进行排序。

如果两支球队拥有相同数量的分数,你可以表明这一点(与...相同的等级)

没有“准确性”这样的东西。团队比另一个团队更好或者具有相同的等级。

如果游戏产生更详细的结果,例如“目标数量目标”,您可以使用非常类似的方法根据“目标差异”创建第二个排名。

答案 1 :(得分:2)

这个答案假设获胜者对中有一个正确的顺序(并且没有"周期")。

在我看来,您正在寻找topological sort中的DAG。这可以在线性时间内解决。

顶点是球队,边缘是谁赢得每对的关系。

关于准确性:这可能有点复杂,但处理它的一种(部分)方法可能是:
在拓扑排序期间,当您在某个时间点有k个选项时,随机选择一个,并给出所有可能性概率1/k

概率问题只是一个原始的试用版,您需要更好地调整它以准确地获得您想要正确处理所有情况的内容。