你如何处理游戏,如果满足条件,同一个玩家移动?
我试过这样的事情,但我不认为这是对的:
function negamax(node, depth, ?, ?, color)
    if node is a terminal node or depth = 0
        return color * the heuristic value of node
    else
        foreach child of node
            if (condition is met) // the same player moves
               val := negamax(child, depth-1, ?, ?, color)
            else
               val := -negamax(child, depth-1, -?, -?, -color)
            if val??
                return val
            if val??
                ?:=val
        return ?
Phi*_* JF 11
不要尝试为此更改minimax算法本身,而是修改游戏表示以适应.基本上有两种解决方案:
我知道没有任何文献能够讨论你的特定问题.当我想出上面的解决方案2时,我感到很聪明,但我怀疑很多其他人发明了同样的技巧.
我应该说,让极小极大家庭正确行动是非常困难的.在高级语言中设计游戏搜索AI时的一个技巧是在更简单的游戏(缩小的板尺寸,使用井字游戏等)上测试您的搜索算法以确保正确性.如果游戏很小,你就可以了.通过手动玩游戏确保其结果有意义.通过确保他们给出与天真的negamax相同的答案来测试像negascout这样的高级算法 .尝试将代码与游戏特定行为(评估函数,板表示,搜索和存储启发式等)保持在远离执行树搜索的代码的位置也是一个好主意.