码迷,mamicode.com
首页 > 其他好文 > 详细

Alpha-Beta Pruning

时间:2015-11-22 00:20:27      阅读:612      评论:0      收藏:0      [点我收藏+]

标签:

Game tree :博弈树

有双人/多人博弈树,如下two-ply game tree

技术分享

一般博弈树从leaf开始向上搜索,leaf深度为0,依次往上加,每层代表不同方状态。

比如上图0层我有9种可能的状态,对应于我不同的得分,我的目标就是MAX,即操作使得我能得分最大,而1层是对手可能的状态,他的目标是MIN,即让我的分数最小化。

则对于B,他可能取3,12,8,由于对手要MIN,故B=3。同理,C=2,D=2。

而对于A,可以取3,2,2,我需要MAX,因此我取A=3。

这样可以暴力搜索最佳路径,使得root最大,即我最大化自己的得分。

 

Alpha-Beta pruning是一种剪枝搜索策略,把明显不满足的枝叶剪掉。

还是以上图为例子,比如我们得到了B=3,可推得A我们至少可以得到A=3这个结果了。

此时搜索C的时候,发现第一个C=2,由于对手要MIN,因此C最多为2,2<3 =>我们是不可能选择C的,因为有更优的B。因此C无需继续搜索即可剪枝。

因此,具体搜索流程如下:

技术分享

节点有[a,b]表示可取值范围

(a)刚开始只有一个状态3,故B可取最小值为3

(b)12>3,B操作是MIN,不取12

(c)8>3,同理,不取。此时确定B=3,同时向root深搜,A做MAX操作,目前最大可取到3

(d)2的出现表明C不可能取超过2的数(对C来说MIN操作有更优解是2),但A最小都可以取到3,因此C是不可能被A考虑的,故无需考虑C的其他分支,剪枝。

(e)D可取到14,14>3,延伸上去

(f)最终D只能取到2,A取最优解3.

 

伪代码,有点像剪枝深搜:

技术分享

技术分享

Alpha-Beta Pruning

标签:

原文地址:http://www.cnblogs.com/IvanSSSS/p/4985072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!