【问题标题】:Calculating scores from incomplete league tables从不完整的排名表中计算分数
【发布时间】:2026-02-07 21:00:01
【问题描述】:

当我在高中学习矩阵时,向我们展示了一种可以在这种情况下提供帮助的技术:

一个联赛中有许多棋手,他们需要为所有棋手确定一个排名,但没有足够的时间让每个棋手与其他人下棋。如果最终玩家 A 击败玩家 B,玩家 B 击败玩家 C,那么您可以肯定地说玩家 A 比玩家 C 好,因此奖励玩家 A 一些分数,而不是他们实际互相比赛.

正如我所说,这是不久前的事情,我不记得如何实际执行该算法,但我认为它被称为“支配矩阵”之类的东西。有时在网络上搜索是没有结果的,而且很可怕,所以我认为这是不对的。

谁能帮帮我?理想情况下,我可以将一种算法用于我正在开发的这个程序,但甚至只是一个指向有关该过程的更多信息的指针。

【问题讨论】:

    标签: algorithm math matrix


    【解决方案1】:

    听起来您正在记住 Perron-Frobenius 定理的介绍 - 这至少是一个更安全的搜索词 :-)。一个这样的在 http://www.math.utah.edu/~keener/lectures/rankings.pdf 国际象棋选手使用 Elo 系统,在 http://en.wikipedia.org/wiki/Elo_rating_systemhttp://www.chesselo.com/ 中进行了描述,这将更容易实现。即使您什么都知道,也可能没有好的排名 - 请参阅http://en.wikipedia.org/wiki/Nontransitive_dice。模拟足球比赛的人通常分别跟踪防守和进攻优势。

    【讨论】:

      【解决方案2】:

      听起来您所描述的是Swiss System tournament 或链接的*条目中描述的非常相似的变体。虽然不是给一个不完整的锦标赛来计算评分,而是一种组织锦标赛的方式,将最好的棋手与最好的棋手配对,将最差的棋手与最差的棋手配对,以确定排名,而不需要每个人都与其他人比赛。

      【讨论】:

        【解决方案3】:

        也许某种类型的PageRank 算法可能对你有用。

        想象一下,每个人都有一个网页,他们在其中超链接到每个击败他们的人。

        在此数据上运行页面排名算法将为您提供链接矩阵的稳定状态,这可能向您表明每个人的相对重要性(我猜)。

        例如,一个人只玩了一场比赛,但在那次比赛中击败了一个击败了很多人的人,其页面排名可能比击败了 10 个人而没有赢得一场比赛的人的页面排名更高。

        【讨论】:

          【解决方案4】:

          也许是min-max 算法?

          【讨论】: