机器博弈———α-β 算法原理

首先明了极大极小搜索https://baike.baidu.com/item/%E6%9E%81%E5%A4%A7%E6%9E%81%E5%B0%8F%E5%80%BC%E7%AE%97%E6%B3%95/19473878

在极大极小搜索的过程中,存在着2 种明显的冗余现象:

极大值冗余

第1 种现象是极大值冗余。在上图中,节点A 的值应是节点 B 和节点C 的值中之较大者。现在已知节点 B 的值大于节点D 的值。由于节点C 的值应是它的诸子节点的值中之极小者,此极小值一定小于等于节点D 的值,因此亦一定小于节点B 的值,这表明,继续搜索节点C 的其他诸子节点E ,F ...已没有意义,它们不能做任何贡献,于是把以节点 C 为根的子树全部剪去。这种优化称为Alpha 剪枝。

极小值冗余

第二种是与极大值冗余对偶的现象,称为极小值冗余。节点A 的值应是节点B 和节点C 的值中之较小者。 现在已知节点B 的值小于节点D 的值。 由于节点C 的值应是它的诸子节点的值中之极大者,此极大值一定大于等于节点 D 的值,因此也大于节点B的值,这表明,继续搜索节点C 的其他诸子节点已没有意义,并可以把以节点C 为根的子树全部剪去,这种优化称为Beta剪枝。

把Alpha -Beta 剪枝应用到极大极小算法中,就形成了Alpha -Beta搜索算法。

下面给一个例子,非常清晰

 

先做个说明:有画弧线的是与,取较小值,没有的是或,去最大值。

第一步: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,结束

本文章转自https://www.cnblogs.com/tk55/articles/6012314.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值