最大最小法及α-β剪枝算法图解

(网上讲的都不是很好理解,贡献一下之前听慕课做的笔记,适合初学者比较简洁明了。)

要想理解α-β剪枝算法,必须从最大最小法的博弈问题讲起!注意不要跳过第一节往下看。

  1. 最大最小法

       场景:双方博弈 

       前提:假设看所有状态节点走完后的最终评估值结果,MAX一方在评估值越大越会赢(+ꝏ一定赢),MIN一方评估值越小越会赢(-ꝏ一定赢)。值为0时平手。当设定考察深度为向后3步时,MAX在s节点选择后继节点时,评估值分别是3,1,则MAX应选择更大的一条路即SA。

(如图,S层看AB第一层,第一层值又取决于第二层,第二层取决于第三层,第二层时MAX作出决定,必选值更大的,因此对应CDEFG的评估值分别为最大的53331;第一层必选值更小的,即AB评估值为3,1。

——这里的假设前提:博弈双方均会选择对自己最有利的方法去做。)

考察深度越深,算法博弈水平越高。不需要生成所有博弈树,只要到规定的深度即可。

 最大最小法及α-β剪枝算法图解_第1张图片

最大最小法及α-β剪枝算法图解_第2张图片

       2.最大最小法优化:α-β剪枝

       目的是减少博弈树扩展,减少使用内存,增加决策深度。

当前节点为MAX时,取左侧第一个评估值就是α值,为下限,若其他下层节点小于α则可直接剪枝;

当前节点为MIN时,取左侧第一个评估值就是β值,为上限,若其他下层节点大于β则可直接剪枝。

最大最小法及α-β剪枝算法图解_第3张图片

最大最小法及α-β剪枝算法图解_第4张图片

实际使用案例:

最大最小法及α-β剪枝算法图解_第5张图片

下面为自己看图推理的过程:

第四层,CFJLOR都是想取MIN值; 第三层,BIVW都是想取MAX值;

第二层AU想取MIN值; 第一层S想取MAX值。

一层一层来看:首先C想取MIN,就从根节点的DE中,找到MIN值为D(0),则C的值取0,此时将C的值=0,赋给上层的B作为其α值;

B 想取MAX值,就要比较下方的C、F两个结点,F值不知,需要再往F下层看。由于F想取MIN值,先看下层最左边G值为-3,将G的值= -3作为F的β值。

到这里就很明确了:由于B 想取下方结点CF中的最大值、F想取下方结点GH中的最小值,所以不论H的值是多少,最终F的取值一定是小于等于G值的,也就是F此时的β值,-3 ; 

而此时再看B ,β= -3,小于α=0 , 所以接下来就没必要再看H 的值了,不论H是多少都改变不了C大于F的命运,因此可以直接把F这一枝直接剪枝!(唱一首destiny……~)

根据以上烦人的推理,总结出的结论就是前文所说的:

当前节点为MAX(此处指B)时,取左侧第一个评估值(此处指C)就是α值,为下限,若其他下层节点(此处指F)小于α则可直接剪枝;

同理推理A\B\I结点及其下方枝叶,也可以得到:

当前节点为MIN(此处指A)时,取左侧第一个评估值(此处指B)就是β值,为上限,若其他下层节点(此处指I)大于β则可直接剪枝。

综上,为了避免每次都死脑细胞的推理一遍,所以α-β剪枝直接给出一个结论,以后直接使用即可避免麻烦。

最大最小法及α-β剪枝算法图解_第6张图片

你可能感兴趣的:(AI,剪枝,算法,机器学习)