对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】

  本节这里我们讨论的是确定的、完全可观测、序贯决策、零和游戏下的对抗搜索。

  所谓零和博弈是博弈论的一个概念,属非合作博弈。指参与博弈的各方,在严格竞争下,一 方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在 合作的可能。

  对抗搜索(Adversarial Search)一般指的是博弈双方会阻止对方收益最大化,也称为博弈搜索(Game Search)。在博弈游戏中经常会碰到,比如围棋这种零和游戏。智能体(agents)之间通过竞争实现相反的利益。

  对抗搜索主要有三种:最大最小搜索(Minimax Search)、Alpha-Beta剪枝搜索(Pruning Search)和蒙特卡洛树搜索(Monte-Carlo Tree Search)。

最小最大搜索

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

基本定义

  以Tic-Tac-Toe游戏的对抗搜索 为例,如下图所示:

Tic-Tac-Toe游戏

  上图中的MAXMIN可以看作是两个对手,MAX希望游戏的终局得分高,MIN希望游戏的终局得分低。其所形成游戏树的叶子节点有9!=362880种。

minimax算法

  那minimax算法大体的工作流程是怎样的呢?我们给出如下例子:

minimax算法流程示意图

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

  用人话来逻辑理解一下:从最糟糕的情况中选择一个最好的情况。比如让你选择掉100块钱还是50块钱,两种情况都不好,但是你依旧会选择掉50块钱这一个相对来说不那么糟糕的情况。

  在minimax算法里面,MAX会选择后续玩法最大的一种玩法。而MIN会选择后续玩法里面最小的一种玩法。两者轮流竞争。

minimax算法伪代码

  minimax的算法非常简单有效的对抗搜索算法,如果计算资源足够的话,这种算法可返回最优结果。但是就是这个计算资源可能会导致在对一些复杂的情况下无法穷举,无法在有效时间内返回结果。

  由此后人改进提出了:用alpha-beta pruning算法来减少搜索节点;或者对节点进行采样、而非逐一搜索 (蒙特卡洛树搜索)。

alpha、beta剪枝搜索

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

  那如何来剪枝呢?

alpha、beta剪枝搜索

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

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

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

alpha、beta剪枝搜索

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

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

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

alpha、beta变化示意图

  • Alpha、Beta剪枝算法伪代码

  AlphaBeta剪枝算法的伪代码如下图所示:

Alpha、Beta剪枝算法伪代码

  • 剪枝本身并不会影响算法输出结果。节点先后次序会影响剪枝效率。

我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值