算法:淘汰不再有机会赢得比赛的玩家

Algorithm: Eliminating players that no longer have a chance to win the tournament

我一直在研究这个问题的算法,但无法弄清楚。问题如下:

在有 X 名球员参加的锦标赛中,每位球员都在为 NBA 篮球比赛的结果下注。

猜对比赛结果的选手得 3 分,猜对比赛的 MVP 得 1 分,猜错得 0 分。

算法需要能够判断某个玩家是否无法在本次投注游戏中获得第一名。

例如,假设联赛共有30场比赛,则玩家猜对最多可获得的分数为(3+1)*30=120。

在下面的 table 中,您可以看到玩家 X、Y 和 Z。 玩家 X 到目前为止猜对了 20 场比赛,所以他有 80 分。 选手Y和Z分别有26分和15分,由于只剩下10场比赛,即使他们猜对了剩下的10场比赛,也不足以达到第一名的位置。 因此,算法判定他们被淘汰出局。

Team Points Points per match Total Games Max Points possible Games left Points Available Eliminated?
X 80 0-L 1-MVP 3-W 30 120 10 0-40 N
Y 26 0-L 1-MVP 3-W 30 120 10 0-40 Y
Z 15 0-L 1-MVP 3-W 30 120 10 0-40 Y

The baseball elimination这个问题貌似和这个问题最像,其实不完全是

我应该如何减少最大流量问题来解决这个问题?

谢谢。

我不明白你为什么要研究非常复杂的最大流算法。对于非常复杂的事情可能需要这些(特别是当配对导致 zero-sum 结果并且 order/remaining 配对开始重要时 -> !更难进行最坏情况分析)。

也许你提到的棒球问题就是其中之一(没有检查)。但是您的用例听起来 微不足道

1. Get current leader score LS
2. Get remaining matches N
3. For each player P
  4. Get current player score PS
  5. Eliminate iff PS + 3 * N < LS

(assumes parallel progress: standings always synced to all players P have played M games
 -> easy to generalize though)

这很简单。根据您的描述,没有什么能阻止我们总结其他所有玩家的最坏情况表现,也就是其他所有玩家对所有即将到来的猜测都猜错的有效场景 -> 玩家 P 的分数 S剩下的所有比赛都可以留在S。

当有更复杂的边约束(例如统计分布/期望)时,事情可能会很快变成 NP-hard 决策问题