对抗搜索之Alpha-Beta剪枝算法

 

  • 什么是对抗算法

为了解决信息确定、全局可观察、竞争对手轮流行动、输赢收益零和假设下的两人博弈问题而提出的一种算法。即零和博弈,所谓零和博弈是博弈论的一个概念,属非合作博弈。指参与博弈的各方,在严格竞争下,一 方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在合作的可能。

 

  • 首先介绍一种常见的基础对抗算法:最小最大搜索算法。

最小最大搜索是在对抗搜索中最为基本的一种让玩家来计算最优策略的方法.。在开始之前我们需要定义如下基本概念:

基本定义

  以井字棋游戏的对抗搜索为例,如下图所示:

Tic-Tac-Toe游戏

  上图中的MAX和MIN可以看作是我和对手之间的博弈,但需要注意的是这个遍历树是以自己的视角出发所构建的,即在该游戏中max代表自己需要获得的高分,而min代表对手希望自己获得的低分 。其所形成游戏树的叶子节点有9!=362880种,即会出现的情况。

minimax算法流程
  我们给出如下例子:

minimax算法流程示意图

如果最后一排是终止节点,那么MIN则会选择其中最小的数值,如上图中红色框中所选择出来的数值。而MAX会从MIN选择最小的数值之后从中选择一个最大的数值3

 

  • Alpha-Beta剪枝算法

一种对最小最大搜索进行改进的算法,即在搜索过程中可剪除无需搜索的分支节点,且不影响搜索结果。该算法需要尽量去剪除那些不用搜索的节点从而节省时间和空间。

如何进行剪枝呢?请看下图:

alpha、beta剪枝搜索

如上图所示,假设我们已近搜完了B节点,得到其最小收益为3,然后开始搜C节点,当搜到2的时候,剩下的两个46就没有必要搜索下去了,因为不管接下来搜到什么,整个C得出来的结果都会比B的结果3要小。

  可以看出,如果对于一颗非常巨大的树来说,如果可以剪枝一部分对搜索结果没有影响的分支,将会大大提高搜索的效率。

  整个的搜索流程可展示为下图所示过程:

alpha、beta剪枝搜索

  alphabeta剪枝搜索中的AlphaBeta又是什么呢?

  • Alpha值α:假设n是MIN节点,如果n的一个后续节点可提供的收益小于α,则n及其后续节点可被剪枝。因为你是MIN节点,搜到一个更小的节点对手不会这么干,所以没必要搜索下去。
  • Beta值β:假设n是MAX节点,如果n的一个后续节点可获得收益大于β,则n及其后续节点可被剪枝。因为你是MAX节点,搜到一个更大的节点虽然你自己很喜欢,但是对手也不会让你这么干的。

  每个节点有两个值,分别是α值和β值。节点α和β值在搜索过程中不断变化。其中α从负无穷大逐渐增加、β从正无穷大逐渐减少,如果一个节点中α > β ,则该节点的后续节点可剪枝。

更详细的算法流程可参考视频:https://www.bilibili.com/video/av91898135

 

值得注意的是,剪枝本身并不会影响算法输出结果,而节点先后次序会影响剪枝效率。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值