人工智能---最清晰的α-β剪枝算法

基本思想:根据倒推值的计算方法,或中取大,与中取小,在扩展和计算过程中,能剪掉不必要的分枝,提高效率。
    定义:
α值:有或后继的节点,取当前子节点中的最大倒推值为其下界,称为α值。节点倒推值>=α;
β值:有与后继的节点,取当前子节点中的最小倒推值为其上界,称为β值。节点倒推值<=β;
α-β 剪枝:
(1) β剪枝:节点x的α值不能降低其父节点的β值,x以下的分支可停止搜索,且x的倒推值为α;
(2) α 剪枝:节点x的β值不能升高其父节点的α值,x以下的分支可停止搜索,且x的倒推值为β ;
 
 
再上个例题图,方便大家理解:
 
先做个说明:有画弧线的是与,取较小值,没有的是或,去最大值。
第一步:2、9、3做比较,取最小值2,I点确定为2
第二步:J点的1和I点2大小进行比较,如果1是J点的最小值,由于J的父节点是取较大值,1<2,无法升高D的值,所以J点的-1可以点可停止搜索,我们划掉该值。
第三步:I点2接着与K点的左值-1进行比较,如果-1是最小值,由于K的父节点取较大值,-1<2,无法升高D的取值,所以K点的右值可以停止搜索。
第四步:D的值可以确定为2
第五步:L点的作用值进行比较,取较小值6,D值与L值相比较,由于E去较大值,假设L就是最大值,E=6,二B点取得是D和E的较小值,2<6,E的结果值无法降低B的取值,所以E的右枝可以截掉。
第六步:B的值可以确定为2
第七步:N的左右值进行比较,取0,N点在和O点的左值-5进行比较,假设-5是最小值,0>-5,O点的取值无法升高父节点F的值,所以可以停止搜索O点的右枝。
第八步:F确定为0.
第九步:F点假设是C的最小值,它和B点的值比较,2>0,也就是说C点的取值无法升高A点的取值,所以G和H都停止搜索。
 
第十步:A点取2.
 
 
 
-----------------------------------------------------------------------------------------------【转】
 
 
 
 
 
 
 

posted on 2016-10-30 01:20  Honey_Badger  阅读(40854)  评论(9编辑  收藏  举报

导航

github