【发布时间】:2015-11-30 04:31:32
【问题描述】:
我花了一整天的时间尝试实现极小极大,但并没有真正理解它。现在,我想我了解极小极大的工作原理,但不了解 alpha-beta 修剪。
这是我对极小极大的理解:
生成所有可能移动的列表,直到深度限制。
评估游戏场对底部每个节点的有利程度。
对于每个节点,(从底部开始),如果层为最大值,则该节点的分数是其子节点的最高分数。如果层是 min,则该节点的分数是其子节点的最低分数。
如果您想达到最高分,则执行得分最高的动作,如果您想获得最低分,则执行得分最低的动作。
我对 alpha-beta 剪枝的理解是,如果父层是 min 并且你的节点的分数高于最低分数,那么你可以剪掉它,因为它不会影响结果。
但是,我不明白的是,如果您可以计算出一个节点的分数,那么您将需要知道比该节点低一层的所有节点的分数(以我对极小极大的理解)。这意味着您仍将使用相同数量的 CPU 功率。
谁能指出我做错了什么?这个答案(Minimax explained for an idiot)帮助我理解了极小值,但我不明白 alpha beta pruning 会有什么帮助。
谢谢。
【问题讨论】:
-
这个website可以帮助你
-
我对它的直观理解是,如果对手对你的招式有一个很好的反击,那么看你招式的所有变化是没有意义的。你知道他会反击。
标签: algorithm language-agnostic artificial-intelligence minimax alpha-beta-pruning