算法:淘汰不再有机会赢得比赛的玩家
Posted
技术标签:
【中文标题】算法:淘汰不再有机会赢得比赛的玩家【英文标题】:Algorithm: Eliminating players that no longer have a chance to win the tournament 【发布时间】:2021-04-02 07:16:45 【问题描述】:我一直在研究这个问题的算法,但无法弄清楚。问题如下:
在与 X 球员的比赛中,每个球员都在赌 NBA 篮球比赛的结果。
猜对比赛结果的玩家得 3 分,猜对比赛的 MVP 得 1 分,猜错的都得 0 分。
该算法需要能够确定某个玩家是否无法达到该投注游戏的第一名。
例如,假设联盟总共有 30 场比赛,那么玩家猜对的最高分是 (3+1)*30=120。
在下表中,您可以看到玩家 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 问题似乎和这个问题最相似,但又不完全一样。
我应该如何构建最大流量问题的约简来适应这个问题?
谢谢。
【问题讨论】:
输入是什么?球员是否会提前下注本赛季的所有比赛?我们知道他们的赌注吗? 球员在每场比赛前下注,我们知道他们的赌注是的。 我们只知道下一场比赛的投注吗?或者我们是否知道下一场比赛的赌注,一场接一场,等等? 【参考方案1】:我不明白您为什么要研究非常复杂的最大流量算法。对于非常复杂的事情可能需要这些(尤其是当配对导致 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 难决策问题
【讨论】:
以上是关于算法:淘汰不再有机会赢得比赛的玩家的主要内容,如果未能解决你的问题,请参考以下文章
数据结构与算法之深入解析“石子游戏IV”的求解思路与算法示例