我花了一整天的时间尝试实现极小极大,但并没有真正理解它。现在,我想我了解极小极大的工作原理,但不了解 alpha-beta 修剪。
这是我对极小极大的理解:
生成所有可能移动的列表,直到深度限制。
评估游戏场对底部每个节点的有利程度。
对于每个节点,(从底部开始),如果层为最大值,则该节点的分数是其子节点的最高分数。如果层是 min,则该节点的分数是其子节点的最低分数。
如果您尝试将其最大化,则执行得分最高的移动,或者如果您想要最小得分,则执行最低的移动。
我对 alpha-beta 剪枝的理解是,如果父层是 min 并且您的节点的分数高于最低分数,那么您可以对其进行剪枝,因为它不会影响结果。
但是,我不明白的是,如果您可以计算出一个节点的分数,您将需要知道低于该节点的层上所有节点的分数(以我对极小极大的理解)。这意味着您仍将使用相同数量的 CPU 功率。
谁能指出我做错了什么?这个答案(为白痴解释了 Minimax)帮助我理解了 minimax,但我不明白 alpha beta pruning 会有什么帮助。
谢谢你。