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(第一层)还需要根据其他因素来考虑最终选取哪种方案。

python alpha beta 剪枝_一看就懂的 Alpha-Beta 剪枝算法详解相关推荐

  1. python布尔型数组_对numpy中布尔型数组的处理方法详解

    布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...

  2. python的格式化输入_一看就懂的Python输入和输出、格式化字符串方法

    程序的输出可以有多种形式:我们可以将数据以人类可读的形式打印到屏幕上,或者将其写入到文件中以供后续使用. 格式化输出 迄今为止,在 Python 中存在两种输出值的方法:表达式语句以及 print() ...

  3. linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解

    1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...

  4. python 西门子触摸屏通讯_实例 | 博途V15 西门子S7-1200与触摸屏通信详解

    1. 创建项目 创建名称为PLC_HMI 2. 添加PLC添加一个PLC到项目中 3. 添加HMI,添加一个HMI到项目中,不根据HMI设备向导设置,点取消 ,然后确定 ,这样子就添加了一个触摸屏HM ...

  5. 对装饰器@wraps的解释(一看就懂)-- 并对装饰器详解

    1. 先看一段代码 def is_login(func):def foo(*args,**kwargs):return func(*args,**kwargs)return foodef test() ...

  6. 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】

    Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...

  7. 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现

    0.前排提示 csdn有些数学公式编辑不出来,所以本博用容易书写的表达式来表示专业数学公式,如: (1)  在本博客中用α<T>(i)来表示 (2)在本博客中用[i=1, N]∑来表示 注 ...

  8. 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)

    基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...

  9. 自动驾驶算法详解(5): 贝塞尔曲线进行路径规划的python实现

    一.理论知识 1.路径规划定义 路径规划智能物流.无人驾驶等智能领域中重要的组成部分.路径规划的目标是实现从目的地到终点之间寻找一条安全(无碰撞).高效(最短距离或 最短时间)的一条最优或接近最优的路 ...

最新文章

  1. opc ua_UA Web挑战会议:针对初创公司的SpringIO
  2. opencv入门 - 显示图像学习总结
  3. cgi硬盘安装增强版怎么用_天津专业补光灯怎么用-安装
  4. 数据库:MySQL常见的设计规范误区
  5. Hadoop HA集群的搭建
  6. 关于异地高考引发的又一次舆论攻势
  7. C++学习 高级编程
  8. 每周进步要点(第50周12.4-12.11)
  9. 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线
  10. HTML页面布局适配不同分辨率
  11. 数据库学生学籍管理系统
  12. 4-渔夫打鱼晒网问题
  13. Python常用英文单词
  14. 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
  15. Linux 安装Oracle10g
  16. c#语言中怎么实现延时功能,timer-在C#中创建“一次运行”延时功能的最佳方法...
  17. 软件测试简历投递小技巧,百分百避免已读不回,成功入职增加30%
  18. 通过mkdocs 编辑文档
  19. 数据结构和非数据结构详解
  20. vs2010 ajax客户端,Visual Studio 2010 - Functional Testing

热门文章

  1. 腾讯云内容生态助力猿辅导,线上线下全方位推动教育云进入快车道
  2. Wordpress用文件记录访客 IP和访问量
  3. 强化学习—— 离散与连续动作空间(随机策略梯度与确定策略梯度)
  4. 分析nginx日志屏蔽攻击者ip
  5. 计算机教 学计划,计算机教学计划
  6. 微信Android客户端的ANR监控方案
  7. 新媒体时代下如何践行网络口碑营销?
  8. newman跟newman-reporter-html安装
  9. Python dict字典基本操作
  10. Google卫星地图的URL计算