α-β剪枝算法

article/2025/9/28 22:46:00

在写之前首先感谢:https://blog.csdn.net/wenjianmuran/article/details/90633418

这里主要介绍minmax算法和α-β剪枝,相当于对一下文章的翻译:

α-β剪枝

Minmax算法

正文:

看了很多关于α-β剪枝算法,大致明白了其中的含义,但有一个事情总是弄不明白,就是如何在一个状态下,决定采用那个分支进行搜索。我把对于上述两个英文链接的理解说下。

(一)α-β剪枝算法是深度优先搜索算法,深度优先就是先尽可能进行一个子节点的不断深度扩展,不考虑其它子节点。如果画图就像下面这样(图来自:http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html 以下不特殊说明,图形均来自该链接)

(二)搜索树上的每个节点都有一个评估值,如果用方形表示自己方现在的状态,上图中每一个连线都相当于从一个状态到另一个状态的转变,比如棋类比赛,一个连线就相当于走一步棋。

(三)搜索过程中为了减少搜索时间,对于每个节点的评估值设置一个上界β和下界α,搜索过程中更改上界和下界,使得他们决定的区间足够小,这样我们就可以更精确的定界。也就是说,搜索过程其实是不断减少上界和增加下界,用图像表示就是:、

开始的上界β和下界α

随着搜索进行,他们的变化可能是(注意a在增加,β在减少):

(四)己方和对方都足够聪明,己方采用最有利于己方的着法(就是采用那个分支),由于评估值的存在,己方倾向于取最大的评估值走法。所以对于方型节点(我方)称为Max节点,如果它的所有子节点都已经有明确的评估值,它的评估值是其所有子节点评估值的最大值。对方采取的走法必然是抑制我方的走法,就是对方要采用所有可能走法的最小评估值走法,所以对于对方节点(圆形节点)称为Min节点,如果它的所有子节点都已经有明确的评估值,它的评估值是其所有子节点评估值的最小值。

这里注意,一个节点想知道自己的评估值,是通过其子节点的评估值来确定的。当其所有子节点都具有评估值时,根据这个节点的类型(Max或Min),就可以直接计算出这个节点的评估值。

如果把搜索树全部扩展就是Max-Min算法。但全部扩展是不合算的,就产生了α-β剪枝算法。关于Max-Min算法参考:http://web.cs.ucla.edu/~rosen/161/notes/minimax.html

(五)对于一个当前状态,如何进行计算呢。

第一:决定深度搜索几层,也就是向下扩展几层子节点。节点当前层不算,下图是深度搜索4层。最开始时最上层节点(就是我们当前准备计算或所在的节点状态),这个节点的评估值我们是不知道的,但我们可以设置一个上界和下界,就像图中标注的那样,下界定于负无穷,上界定与正无穷。它是己方节点(方形),它走一步,到下面的圆形节点,此时就该对方走一步,对方处于圆形节点中。圆形节点的上界和下界直接复制其父(图中是顶层方形)节点的上下界。对方节点再,扩展一个子节点(注意不论是我方还是对方一次只向深度方向扩展一个子节点,这是深度搜索的精髓),来到图中从上数第二个方形节点。这样构成一个回合(full move)

第二:当到达指定的回合数比如2回合,就是4层时。此时我们就可以根据预设的静态评估函数计算方法,计算出最后这个节点的评估值。注意:这个评估值是直接算出来的,不是通过搜索得到的,在图中对应的就是最小面的方形的评估值3.

也许会有这样的疑惑,既然评估函数可以直接算出,为什么不直接算,还要构造搜索树呢。我的理解是这个评估函数本身是启发式的,对于结束的状态它是合理的,对于中间状态它并不合理。如果对于一个状态,我们采用宽度优先,并按照静态方法计算其所有子节点的评估值,然后采用最大或最小策略进行分支决定,这就是贪婪算法。

第三:计算出叶节点(图中方形框中3)的评估值,就可以利用它来估计其父节点(圆形节点)的上下界。由于圆形节点是最小值节点,就是说该圆形节点的评估值应该是它所有子节点(可能有很多,由于深度优先,我们现在只得到了一个,就是图中最底层那个方形,评估值为3)评估值中的最小值。现在圆形节点有一个评估值是3子节点,那么圆形节点的最大值不应该大于这个3,就是说对于圆形节点,可以更新它的上界值,β=3,如图:

扩展圆形节点的另外子节点,并直接计算评估值,如果有评估值小于3的就更新这个β,否则保留这个β,示例中另一个节点是17,所以没有更新β

第四:现在对于圆形节点A它的所有子节点都已经得到评估值,那么它的评估值可以直接按照它本身的类型得到了。由于它是Min节点,所以圆形节点具有3的评估值,A的父节点是B,B是最大值节点,就是说B的评估值是其所有子节点中最大的那个值,现在我们已经得到它的一个子节点A,具有评估值3,所以B最少取得3的评估值,就是B评估值下界是3,即B节点中a=3,如图:

第五:现在我们还计算不了B的评估值,因为它的子节点没有完全得到。扩展B形成其它子节点C,C继承B的门限值,如图:

C没有达到规定层,继续扩展C,得到子节点D ,如图:

计算D的评估值,假设是2.按照上面第一步类似的计算可以得到C的上界为2,即β=2,对于节点C而言,它的下界大于它的上界,这是不合理的,所以C的其它节点不用考虑了。把C的评估值赋值成违背规则的那个数,这里是2,如图:

第六:现在对于B而言,假设没有其它子节点(如果有按照类似扩展C的方式进行),现在B可以计算评估值,按照它的最大值特性,它具有评估值3,类似前面的计算它的父节点的beta值为3,如图:

第七:继续向上逆推

。。。。。。。。。。。。。。。。

规律:

(1)一个具有评估值节点如果其父节点是最小值节点,那么这个节点可以更新它父节点的beta值,就是上界值

(2)一个具有评估值节点如果其父节点是最大值节点,那么这个节点可以更新它父节点的alpha值,就是下界值

(3)父节点进行扩展子节点时,子节点携带父节点的上下界值

(4)节点的所有子节点都被计算得到评估值,该节点可以按照这个节点类型计算出评估值

(5)每次都要到达指定的层次才开始逆推计算得到各层节点的上下界值和评估值

(6)上界值一定大于下界值,否则剪枝。被剪枝的节点评估值,是最后计算得到的违背规则的那个数值(alpha或beta)

其它过程请看:http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html 

 

 


http://chatgpt.dhexx.cn/article/SKuppkxc.shtml

相关文章

α-β剪枝算法简单原理说明

看了一大堆文章实在看不懂,看视频也看不懂,但是看着看着突然顿悟了。这篇文章只讲大概的原理,不讲具体过程。 好了既然会搜这个算法,想必已经知道最大值最小值算法了(不知道就去搜吧)。这里直接讲例子。 …

alpha-beta剪枝算法

实验报告 alpha-beta剪枝算法 姓名:张楚明 学号:18342125 日期:2021.01.15 摘要 本实验将搜索深度为4的Alpha-Beta剪枝算法应用于中国象棋中黑方走棋,实现了中国象棋的人机博弈。博弈过程中综合考虑了棋力、对敌方棋子的攻击力、…

透析极大极小搜索算法和α-β剪枝算法(有案例和完整代码)

文章目录 前言minimax算法完整代码算法思想代码实现算法优化 α-β剪枝算法完整代码算法思想代码实现算法对比更多案例 结语 前言 先做了一版五子棋的小项目,后面又做了一个功能更强大的中国象棋的项目,但是始终都没有实现一版“智能”AI。 明知道这类博…

决策树后剪枝算法(二)错误率降低剪枝REP

​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四&…

C++实现的基于αβ剪枝算法五子棋设计

资源下载地址:https://download.csdn.net/download/sheziqiong/85883881 资源下载地址:https://download.csdn.net/download/sheziqiong/85883881 基于αβ剪枝算法的五子棋 五子棋介绍 简介: 五子棋是世界智力运动会竞技项目之一&#x…

决策树后剪枝算法(四)最小错误剪枝MEP

​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四&…

计算机博弈 基础算法 阿尔法-贝塔剪枝算法 α-β剪枝算法

计算机博弈大赛中 α-β剪枝算法剪枝算法是极大极小算法的一种优化,可以更快的搜索博弈树 预备知识: 广度优先搜索(BFS) 深度优先搜索(DFS) 极大极小算法(MaxMin算法) 介绍 剪枝算法来源于极大极小算法,在博弈树分枝过多时可以使用这个方法…

卷积神经网络通道剪枝算法小结

一、剪枝分类 目前常见的模型剪枝算法主要分成两类,即非结构化剪枝与结构化剪枝;在不少的神经网络加速器中已经应用了这些剪枝算法,早期常见的是非结构化剪枝,例如MIT的韩松组的前几年的相关工作中就有此类应用,但是在…

最大最小法及α-β剪枝算法图解

(网上讲的都不是很好理解,贡献一下之前听慕课做的笔记,适合初学者比较简洁明了。) 要想理解α-β剪枝算法,必须从最大最小法的博弈问题讲起!注意不懂的同学不要跳过这一节。 最大最小法 场景:…

剪枝算法实现一字棋-C++

博弈树 alpha & beta剪枝算法实现一字棋 剪枝算法首先就是要理解,把这个算法彻底弄清楚,我觉得这是一件非常有意义的事情!为后续书写其它棋类的AI打下了坚实的基础 剪枝操作的实现,遍历下一步所有可能取到的点,…

模型压缩:剪枝算法

过参数化主要是指在训练阶段,在数学上需要进行大量的微分求解,去捕抓数据中的微小变化信息,一旦完成迭代式的训练之后,网络模型推理的时候就不需要这么多参数。而剪枝算法正是基于过参数化的理论基础而提出的。 剪枝算法核心思想…

人工智能算法模型--Alpha-Beta剪枝算法学习笔记

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &a…

理解Alpha-Beta 剪枝算法

Alpha-beta剪枝是一种搜索算法,用以减少极小化极大算法(Minimax算法)搜索树的节点数。裁剪搜索树中没有意义的不需要搜索的树枝,提高运算速度。 搜索中传递两个值。 第一个值是Alpha,即搜索到的最好值,任何…

组合总和(剪枝算法)

组合总和(剪枝算法) 题目 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取 示例 示例 1:输入: candidates [2,…

Alpha-Beta剪枝算法原理

1. 前言 前文:极小化极大(Minimax)算法原理 极小化极大算法在完全信息零和博弈中,基于己方努力使得在N步后优势最大化(即评估函数输出值最大化)和对方努力使得N步后己方优势最小化这两个出发点&#xff0c…

GRNN广义回归神经网络

广义回归神经网络 GRNN (General Regression Neural Network) 广义回归神经网络是基于径向基函数神经网络的一种改进。 结构分析: 可以看出,这个结构与之前我们所讲过的径向基神经网络非常相似,区别就在于多了一层加和…

m分别使用BP神经网络和GRNN网络进行时间序列预测matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强的优势,网络最后普收敛于样本量集聚较多的优化回归&#xff…

广义回归神经网络(GRNN)

广义回归神经网络(GRNN) 一、GRNN神经网络概述 二、GRNN神经网络理论基础(如果对理论不感兴趣可直接看GRNN网络结构,网络结构理解更直观) 三、GRNN的网络结构 注意:一定要理解第三个求和层的概念&#xff0…

【GRNN情绪识别】基于GRNN神经网络的情绪识别算法matlab仿真

1.软件版本 matlab2021a 2.本算法理论知识 GRNN,即General Regression Neural Network,中文全称为广义回归神经网络,是由The Lockheed Palo Alto研究实验室在1991年提出的。GRNN是一种新型的基于非线性回归理论的神经网络模型[43,44]。GRN…

m基于C3D-hog-GRNN广义回归神经网络模型的人员异常行为识别算法的matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 实时的人群异常行为识别是一项极具挑战的工作,具有较高的现实意义和社会需求,快速准确地判断出异常行为并及时预警,一直是我们探索的方向。传统的机器学习算法…