Alpha-Beta剪枝算法(Alpha Beta Pruning)

[说明] 本文基于<<CS 161 Recitation Notes - Minimax with Alpha Beta Pruning>>,文中的图片均来源于此笔记。

Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度。

假设α为下界,β为上界,对于α ≤ N ≤ β:

若 α ≤ β  则N有解。

若 α > β 则N无解。

下面通过一个例子来说明Alpha-Beta剪枝算法。

上图为整颗搜索树。这里使用极小极大算法配合Alpha-Beta剪枝算法,正方形为自己(A),圆为对手(B)。

初始设置α为负无穷大,β为正无穷大。

对于B(第四层)而已,尽量使得A获利最小,因此当遇到使得A获利更小的情况,则需要修改β。这里3小于正无穷大,所以β修改为3。

(第四层)这里17大于3,不用修改β。

对于A(第三层)而言,自己获利越大越好,因此遇到利益值大于α的时候,需要α进行修改,这里3大于负无穷大,所以α修改为3

B(第四层)拥有一个方案使得A获利只有2,α=3,  β=2, α > β, 说明A(第三层)只要选择第二个方案, 则B必然可以使得A的获利少于A(第三层)的第一个方案,这样就不再需要考虑B(第四层)的其他候选方案了,因为A(第三层)根本不会选取第二个方案,多考虑也是浪费.

B(第二层)要使得A利益最小,则B(第二层)的第二个方案不能使得A的获利大于β, 也就是3. 但是若B(第二层)选择第二个方案, A(第三层)可以选择第一个方案使得A获利为15, α=15,  β=3, α > β, 故不需要再考虑A(第三层)的第二个方案, 因为B(第二层)不会选择第二个方案.

A(第一层)使自己利益最大,也就是A(第一层)的第二个方案不能差于第一个方案, 但是A(第三层)的一个方案会导致利益为2, 小于3, 所以A(第三层)不会选择第一个方案, 因此B(第四层)也不用考虑第二个方案.

当A(第三层)考虑第二个方案时,发现获得利益为3,和A(第一层)使用第一个方案利益一样.如果根据上面的分析A(第一层)优先选择了第一个方案,那么B不再需要考虑第二种方案,如果A(第一层)还想进一步评估两个方案的优劣的话, B(第二层)则还需要考虑第二个方案,若B(第二层)的第二个方案使得A获利小于3,则A(第一层)只能选择第一个方案,若B(第二层)的第二个方案使得A获利大于3,则A(第一层)还需要根据其他因素来考虑最终选取哪种方案.

Alpha-Beta剪枝(Alpha Beta Pruning)相关推荐

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

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

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

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

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

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

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

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

  5. alpha,beta剪枝详解

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

  6. Java中Beta、Alpha、RC、RELEASE、GA、SNAPSHOT等版本分别代表什么意思?

    这两天 Apache Log4j2 的漏洞被闹的沸沸扬扬,一方面是大家热衷于炒作,另一方面是好久没有热闹的消息了,沉寂了太久,需要爆发一波! 回归理性来看,Apache 这波漏洞修复,来来回回发了好几 ...

  7. 测试中的Alpha(α)、Beta(β)和Gamma(γ)

    Alpha(α).Beta(β)和Gamma(γ) Beta,目前普遍认为是"测试"的意思.广义上对测试有着三个传统的称呼:Alpha(α).Beta(β)和Gamma(γ),用来 ...

  8. 【博弈论】极小极大搜索(Minimax Algorithm)与α-β剪枝(Alpha-Beta Pruning)

    文章目录 一.极大极小搜索(Minimax Algorithm) 二.α-β剪枝(Alpha-Beta Pruning) 三.解题技巧 一.极大极小搜索(Minimax Algorithm) 在零和博 ...

  9. R语言并行计算 deviation of null beta diversity(beta多样性零偏差)

      群落构建分析是微生物生态学分析的重要组成部分,成为目前文章发表的热点技术.之前我们介绍了计算beta-NTI(beta nearest taxon index)来进行群落构建分析(https:// ...

  10. Beta分布(Beta Distribution)

    定义: beta分布可以看作一个概率的概率分布,当你不知道一个东西的具体概率是多少时,它可以给出了所有概率出现的可能性大小. 举一个简单的例子,熟悉棒球运动的都知道有一个指标就是棒球击球率(batti ...

最新文章

  1. windowskb2685811补丁_KB898461补丁
  2. MongoDB 计划从“Data Sprawl”中逃脱
  3. 【转】Go Micro(2)——微服务工具箱
  4. 初三中考比一模能提高多少分?
  5. oracle用户密码规则,使用Oracle自带profile以及函数简单设定Oracle用户名密码规则...
  6. MFC m_pMainWnd
  7. surface 3安装android x86,Android-x86 9.0-r2稳定版发布 修复Microsoft Surface 3音频问题
  8. 17. PHP 表单处理
  9. 深度学习图像分类(五): ResNet
  10. Simscape Multibody 多体动力学仿真教程(一)
  11. 超分算法之SRCNN
  12. 008 解决问题的策略 转化(苏教版 五下)
  13. flask自定义过滤器,flash,form表单
  14. 在微信小游戏中开发一个贪食蛇
  15. 序列化Serializable serialVersionUID的作用
  16. 10招教你练就“最强大脑“”
  17. ping命令简单总结
  18. php模式设计之 适配器模式
  19. 甲方乙方项目管理的差别
  20. 杰理之开FM会串linein【篇】

热门文章

  1. App界面交互设计规范
  2. 用函数递归的方法解决汉诺塔问题
  3. 公司以最低工资标准缴纳五险一金,工资分成2次发放合法吗?
  4. 李弘毅机器学习:第四章—梯度下降法
  5. python文件打不开 环境变量错误,《自拍教程27》环境变量的常见错误,环境变量错误...
  6. Vue3 UI组件库对比,Naive UI、Element Plus、 Ant Design Vue
  7. qq邮箱服务器连接不上,无法登录
  8. WebRTC Native M96 回调音频裸数据IAudioFrameObserver--采集和播放语音混音后的数据(onMixedAudioFrame)
  9. Bellhop 海底地形起伏条件下的传播特性
  10. Matlab:Matlab软件之Simulink的简介、特点、使用方法、界面介绍之详细攻略