博弈树搜索之alpha-beta剪枝——一步一步教你写一字棋智能程序

博弈树搜索

在下图中,第一层节点表示开始局面,我方先走,第二层节点表示我方可走的三个位置,第三层节点表示对于我方的每一种走法对手的各种走法,下方数字代表了对每个局面的评价值。这里的评价值都是相对于我方来说的。
这里写图片描述

根据常规,我方在第二层选择时会选择评价值最大的节点去走,在第三层选择时,要考虑对手走相对我方最不利的棋,因此选择评价值最低的节点,这样评价值从最底层更新到最高层,被称为极小极大搜索过程。

举例说明,节点值为-2, 2节点值为1,选择最小值,因此3节点被更新为-2,传递到上层,目前4节点>=-2,接着走中间这条路,根据5节点传递到6节点,目前6节点<=-3,现在因为4节点>=-2,6节点<=-3,出现剪枝,6节点的其余节点便可以不用访问,这就被称为alpha-beta剪枝技术。

以上说明了父子节点间可以进行alpha-beta剪枝,那隔代之间可不可以呢,如下图已知1节点<=0,2节点>=4,选择为空集,是不是应该出现剪枝呢?
这里写图片描述

下面我们来证明这个问题。
假设2节点值经过中间节点传递到了3节点(若3节点值不是由2节点传递的,则2节点的剪枝与否与3节点不起关系),2节点处发生剪枝,当且仅当其他子节点值大于4才会对2节点值产生影响,假设为5,不管2节点值为4还是5传递到3节点,都对1节点产生不了影响,因为1节点要求<=0,因此2节点处可以发生剪枝。

引入alpha值和beta值

由上面论证看出,隔代剪枝可行,这样也大大提升了剪枝的效果,但同时带来了编程的复杂度,于是我们想到,为每个节点设立 α 值和 β 值,初始 α=

  • 22
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值