python alpha beta 剪枝_一看就懂的 Alpha-Beta 剪枝算法详解
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 剪枝算法详解相关推荐
- python布尔型数组_对numpy中布尔型数组的处理方法详解
布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...
- python的格式化输入_一看就懂的Python输入和输出、格式化字符串方法
程序的输出可以有多种形式:我们可以将数据以人类可读的形式打印到屏幕上,或者将其写入到文件中以供后续使用. 格式化输出 迄今为止,在 Python 中存在两种输出值的方法:表达式语句以及 print() ...
- linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解
1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...
- python 西门子触摸屏通讯_实例 | 博途V15 西门子S7-1200与触摸屏通信详解
1. 创建项目 创建名称为PLC_HMI 2. 添加PLC添加一个PLC到项目中 3. 添加HMI,添加一个HMI到项目中,不根据HMI设备向导设置,点取消 ,然后确定 ,这样子就添加了一个触摸屏HM ...
- 对装饰器@wraps的解释(一看就懂)-- 并对装饰器详解
1. 先看一段代码 def is_login(func):def foo(*args,**kwargs):return func(*args,**kwargs)return foodef test() ...
- 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】
Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...
- 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现
0.前排提示 csdn有些数学公式编辑不出来,所以本博用容易书写的表达式来表示专业数学公式,如: (1) 在本博客中用α<T>(i)来表示 (2)在本博客中用[i=1, N]∑来表示 注 ...
- 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)
基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...
- 自动驾驶算法详解(5): 贝塞尔曲线进行路径规划的python实现
一.理论知识 1.路径规划定义 路径规划智能物流.无人驾驶等智能领域中重要的组成部分.路径规划的目标是实现从目的地到终点之间寻找一条安全(无碰撞).高效(最短距离或 最短时间)的一条最优或接近最优的路 ...
最新文章
- opc ua_UA Web挑战会议:针对初创公司的SpringIO
- opencv入门 - 显示图像学习总结
- cgi硬盘安装增强版怎么用_天津专业补光灯怎么用-安装
- 数据库:MySQL常见的设计规范误区
- Hadoop HA集群的搭建
- 关于异地高考引发的又一次舆论攻势
- C++学习 高级编程
- 每周进步要点(第50周12.4-12.11)
- 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线
- HTML页面布局适配不同分辨率
- 数据库学生学籍管理系统
- 4-渔夫打鱼晒网问题
- Python常用英文单词
- 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
- Linux 安装Oracle10g
- c#语言中怎么实现延时功能,timer-在C#中创建“一次运行”延时功能的最佳方法...
- 软件测试简历投递小技巧,百分百避免已读不回,成功入职增加30%
- 通过mkdocs 编辑文档
- 数据结构和非数据结构详解
- vs2010 ajax客户端,Visual Studio 2010 - Functional Testing