我正在实现一种 Alpha-Beta 剪枝算法,该算法将用于在黑白棋游戏中获得最佳着法。当算法到达叶节点时(即没有有效移动或它达到最大深度)我基于此计算该节点的启发式值:
最大化玩家(正在运行算法并且是 将使用算法返回的移动)在这个节点的棋盘上? (每 block 砖+1)
最大化玩家在该节点有多少有效移动? (每一步+10)
最大化玩家有多少角砖? (每个角砖+100)
问题是:叶节点上交的不是maximisings player怎么办?那么就不可能计算出他的有效 Action ,因为还没有轮到他。我可能误解了整个 alpha-beta 修剪算法,或者至少误解了启发式函数的工作原理。有人可以给我提示吗?
谢谢
最佳答案
无论您使用的是算法的传统极小极大公式,还是负最大公式,您都应该从要移动的一侧的角度评估棋盘。
然后,两种算法以不同方式处理这些值;无论轮到 MAX 还是 MIN 玩家,minimax 都有单独的代码片段,而 negamax 分配“val = - negamax(child)”。
关于algorithm - 黑白棋/黑白棋 Alpha-Beta 修剪算法中的启发式函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791360/