我阅读了关于minimax
算法的内容,然后阅读了关于alpha beta pruning
的内容。虽然我能够理解剪枝的概念,但我无法理解的是,我仍然需要提前知道终止状态/叶节点。
要知道终止状态,我必须在内存中绘制完整的图,并且还要提前遍历每个节点。不是吗?
我在下图中有一个一维的1 x 3网格。所以有3列但只有一行。我选择这个是为了便于说明。
如您所见,我通过找出所有可能的状态并遍历每个节点来计算每个MIN/MAX
。虽然剪枝确实可以防止额外的遍历,但既然我必须遍历完整的图,剪枝如何仍然有益呢?
回答:
您不必遍历完整的图,因为剪枝会确定那些肯定不会给您更好解决方案的分支,并将其从图中“删除”。这里有一个视频帮助我理解了这个算法。