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

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

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

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

最小最大搜索

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

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

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

minimax算法

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

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

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

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

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

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

alpha、beta剪枝搜索

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

  那如何来剪枝呢?

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

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

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

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

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

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

  • Alpha、Beta剪枝算法伪代码

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

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

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

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】相关推荐

  1. 基于python的AI五子棋实现(极大极小值搜索和alpha beta剪枝)

    1.极大极小值搜索介绍 人机博弈是人工智能的重要分支,人们在这一领域探索的过程中产生了大量的研究成果,而极小化极大算法(minimax)是其中最基础的算法,它由Shannon在1950年正式提出. M ...

  2. 五子棋AI算法第三篇-Alpha Beta剪枝

    剪枝是必须的 五子棋AI教程第二版发布啦,地址:https://github.com/lihongxun945/myblog/labels/%E4%BA%94%E5%AD%90%E6%A3%8BAI% ...

  3. alpha-beta剪枝五子棋c语言,五子棋AI算法第三篇-Alpha Beta剪枝

    剪枝是必须的 上一篇讲了极大极小值搜索,其实单纯的极大极小值搜索算法并没有实际意义. 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250 ...

  4. 五子棋AI算法-Alpha Beta剪枝

    上一篇讲了极大极小值搜索,其实单纯的极大极小值搜索算法并没有实际意义. 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250000,在我的 ...

  5. alpha,beta剪枝详解

    α,β剪枝详解\alpha,\beta剪枝详解α,β剪枝详解 示例图 步骤详解 基础原理 这里我们先要理解什么是α,β\alpha,\betaα,β剪枝:α\alphaα是下界,β\betaβ是上界. ...

  6. alpha beta 剪枝算法

    摘自wikipedia alpha-β修剪的好处在于可以消除搜索树的分支.这样,搜索时间可以限制在"更有希望"的子​​树中,并且可以在同一时间执行更深入的搜索.该算法和极小化极大算 ...

  7. python alpha beta 剪枝_一看就懂的 Alpha-Beta 剪枝算法详解

    Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度. 假设α为下界,β为上界,对于α ≤ N ≤ β: 若 α ≤ β  则N有解. 若 α > β 则N无解. ...

  8. python博弈树_博弈树alpha-beta剪枝搜索的五子棋AI

    最近机器学习很火, 乘着这把火,我也学习了一把,但是没有直接学习深度学习,而是遵从一位老前辈,一定要把人工智能的所有方法都了解掌握了,才能真正的掌握人工智能... 我只能说, 路漫漫.. 对于博弈类人 ...

  9. python博弈树_GitHub - xxttmmk/gobang_AI: 基于博弈树α-β剪枝搜索的五子棋AI

    最近机器学习很火, 乘着这把火,我也学习了一把,但是没有直接学习深度学习,而是遵从一位老前辈,一定要把人工智能的所有方法都了解掌握了,才能真正的掌握人工智能... 我只能说, 路漫漫.. 对于博弈类人 ...

  10. 【AI】对抗搜索:Alpha-Beta剪枝搜索图解及井字棋应用的python实现

    一.对抗搜索简介   对抗搜索也称为博弈搜索,在一个竞争的环境中,智能体之间通过竞争实现相反的利益,一方最大化这个利益,另外一方最小化这个利益.   最小最大搜索(Minimax Search)是对抗 ...

最新文章

  1. 2022-2028年中国微滤膜行业市场发展调研及投资前景分析报告
  2. scikit CountVectorizer源码
  3. Ubuntu12.04版本安装arm-linux-gcc 4.3.3
  4. mongodb索引生成HTML页面,MongoDB高级索引
  5. xshell无法连接linux虚拟机问题的解决办法
  6. 谷歌chrome浏览器的源码分析(五)
  7. MongoDB可视化工具--Robo 3T 使用教程
  8. 易语言服务端与客户端怎么传送_配置中心是怎么推送的?动手实现一个 Long Polling 长轮询...
  9. t–sql pl–sql_SQL Server –在T-SQL中使用最低的度量单位
  10. 基于visual Studio2013解决C语言竞赛题之1094纵横图
  11. 0+到10+随机数+java_Java随机数总结
  12. Github实用浏览器插件推荐
  13. 送一台高配电脑,吃鸡贼爽!
  14. c语言 验证用户名密码
  15. 转载:CAN:CAN矩阵、CAN网络、DBC、MDF关系
  16. 计算机开机出现ROM,求助电脑开机问题
  17. 单、多通道图像反差处理
  18. 论文模型构建的步骤_最新论文:智能安全情报分析模型的构建
  19. 联手腾讯八百客CRM实现“本土化”弯道超车
  20. 自动驾驶职位选择和常见术语

热门文章

  1. MS SQL Server 事务回滚处理!
  2. 聚合(Aggregation)和组合(Composition)的区别
  3. 【ProjectT】Tapestry • Quick Start • Forms
  4. HW 基于接口/全局地址池的DHCP
  5. 在 RHEL 和 CentOS 上检查或列出已安装的安全更新的两种方法
  6. 苹果iOS系统源码思考:对象的引用计数存储在哪里?--从runtime源码得到的启示...
  7. 百练 2965 玛雅历 解题报告
  8. WPF中同一窗口下的界面切换
  9. windows process activation service不能安装或启动的解决办法
  10. 利用自定义事件实现不同窗体间的通讯 -- C#篇