用于奥赛罗/黑白棋游戏的Alpha-Beta修剪算法中的启发式功能

时间:2012-12-09 20:15:47

标签: algorithm artificial-intelligence alpha-beta-pruning

我正在实施一个Alpha-Beta修剪算法,用于在奥赛罗游戏中获得最佳动作。当算法到达叶节点(即没有有效移动或达到最大深度)时,我会根据此计算该节点的启发式值:

最大化玩家(运行算法的玩家是多少砖) 要使用算法返回的移动)在该节点的板上? (每块砖+1)

最大化玩家在此节点上有多少有效移动? (每次移动+10)

最大化玩家有多少角砖? (每个角砖+100)

问题是:当不是玩家在叶子节点中进行最大化时,我该怎么办?然后就不可能计算他的有效动作,因为轮到他了。我可能误解了整个alpha-beta修剪算法,或至少启发式函数应该如何工作。有人可以给我一个提示吗?

由于

1 个答案:

答案 0 :(得分:0)

无论您使用的是算法的传统极小极大公式,还是使用negamax公式,您都应该在侧面视图上评估电路板。

然后,两种算法都以不同的方式处理这些值; minimax只是单独的代码片段,无论是MAX还是MIN玩家,而negamax指定“val = - negamax(child)”。

ChessProgrammingWiki有很好的解释和伪代码:MinimaxNegamax