考虑到一些限制因素,每轮选择一支球队的最佳组

时间:2013-07-15 07:15:42

标签: algorithm math

问题

我有一个体育成绩表,我正在寻找在每轮中选择一支球队的最佳方式,以便相关分数的总和最大。此选择受以下约束条件限制:

  • 球队数量与球队一样多
  • 您必须选择每个团队一次且仅一次,并且每轮只选择一个
  • 有些团队在某些轮次中不会是合法的选择

详细

特定球队中特定球队的得分是他们所参加的比赛的边缘。如果他们已经获胜则为正,如果他们输了则为负数

为什么禁止给定选择有两个可能的原因。可能永远不会选择排名最低的队伍的对手(可能在轮次之间改变)。在某些游戏中可能会有一些人,也可能不会选择受影响的团队。

实施例

请考虑以下示例,其中括号中的数字是该球队的得分,而*表示正在进行最低排名球队的球队,因此无法在该轮次中进行选择。

Round 1: Team A* (+26) vs Team B  (-26), Team C  (-15) vs Team D  (+15)
Round 2: Team A  (+75) vs Team C  (-75), Team B  (+ 5) vs Team D* (- 5)
Round 3: Team A  (+85) vs Team D  (-85), Team B* (- 3) vs Team C  (+ 3)
Round 4: Team A  (  0) vs Team B  (  0), Team C  (+12) vs Team D* (-12)

在这种情况下,最好的组合是选择:

  1. 第1轮:D(+15)
  2. 第2轮:B(+5)
  3. 第3轮:A(+85)
  4. 第4轮:C(+12)
  5. 注意:我创建的示例不包含任何轮次。它也不需要为最佳总数选择负分,尽管这显然是可能的。

    已知解决方案

    显然,只要团队数量很少,你就可以通过尝试每一个组合来强行推动这一点。有没有办法解决更多的团队和轮次(比如20?)。

1 个答案:

答案 0 :(得分:1)

您基本上是在描述assignment problem:您正在寻找团队和回合之间的完美匹配,以便最大化与匹配边缘相关联的得分总和。可以使用-∞的socre对禁止的底层团队进行建模。 Hungarian algorithm是解决此类问题的既定方法。