如何解决算法:淘汰不再有机会赢得锦标赛的玩家
我一直在研究这个问题的算法,但无法弄清楚。问题如下:
在 X 球员的比赛中,每位球员都在押注 NBA 篮球比赛的结果。
猜对比赛结果得3分,猜对MVP得1分,猜错得0分。
算法需要能够确定某个玩家是否无法在此投注游戏中排名第一。
例如,假设联赛总共有 30 场比赛,那么玩家猜对的最高分是 (3+1)*30=120。
在下表中,您可以看到玩家 X、Y 和 Z。 到目前为止,玩家 X 猜对了 20 场比赛,所以他有 80 分。 玩家 Y 和 Z 有 26 分和 15 分,由于只剩下 10 场比赛,即使他们猜对了所有剩余的 10 场比赛,也不足以达到第一名。 因此,算法确定他们被淘汰出局。
团队 | 点 | 每场比赛得分 | 总游戏 | 最大点数可能 | 游戏左 | 可用点 | 被淘汰了? |
---|---|---|---|---|---|---|---|
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 结果并且顺序/剩余配对开始重要 -> !更!更难进行最坏情况分析)。
也许你提到的棒球问题就是其中之一(没有检查)。但是您的用例听起来微不足道。
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 难决策问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。