如何处理这种NIM游戏的变种?

时间:2017-03-09 12:25:06

标签: game-theory

最近我遇到了一个问题,它给你一个4 * 4的矩阵,只包含0和1和1。 2个玩家正在玩游戏,在每个回合中玩家可以选择任何仅由1个组成的子矩阵并使其成为0.无法移动的玩家输掉。如何应用sprague grundy定理?

例 - 0110 0000 0000 0001

然后玩家1将获胜(将在第一回合中删除一个" 1"在第二回合中,第二回合玩家2将获得一个1&因此p1将获得最后一个。

1 个答案:

答案 0 :(得分:0)

你不能在这里应用Sprague-Grundy定理。每当你玩多个游戏时都会使用该定理,例如你在两个棋盘上玩两个游戏。

如果你应用通常的递归定义,你可以简单地决定董事会是赢还是失败状态:董事会处于获胜状态,如果至少有一个移动导致失败状态。如果没有动作导致失去状态,那么董事会处于失败状态。

def is_winning_state(board):
    for each rectangle rect of 1s on the board:
        if not is_winning_state(board - rect):
             return True
    return false

您还希望应用动态编程,否则程序将无法在合理的时间内完成。