Alpha-Beta Pruning

Game tree :博弈树

有双人/多人博弈树,如下two-ply game tree

一般博弈树从leaf开始向上搜索,leaf深度为0,依次往上加,每层代表不同方状态。

比如上图0层我有9种可能的状态,对应于我不同的得分,我的目标就是MAX,即操作使得我能得分最大,而1层是对手可能的状态,他的目标是MIN,即让我的分数最小化。

则对于B,他可能取3,12,8,由于对手要MIN,故B=3。同理,C=2,D=2。

而对于A,可以取3,2,2,我需要MAX,因此我取A=3。

这样可以暴力搜索最佳路径,使得root最大,即我最大化自己的得分。

Alpha-Beta pruning是一种剪枝搜索策略,把明显不满足的枝叶剪掉。

还是以上图为例子,比如我们得到了B=3,可推得A我们至少可以得到A=3这个结果了。

此时搜索C的时候,发现第一个C=2,由于对手要MIN,因此C最多为2,2<3 =>我们是不可能选择C的,因为有更优的B。因此C无需继续搜索即可剪枝。

因此,具体搜索流程如下:

节点有[a,b]表示可取值范围

(a)刚开始只有一个状态3,故B可取最小值为3

(b)12>3,B操作是MIN,不取12

(c)8>3,同理,不取。此时确定B=3,同时向root深搜,A做MAX操作,目前最大可取到3

(d)2的出现表明C不可能取超过2的数(对C来说MIN操作有更优解是2),但A最小都可以取到3,因此C是不可能被A考虑的,故无需考虑C的其他分支,剪枝。

(e)D可取到14,14>3,延伸上去

(f)最终D只能取到2,A取最优解3.

伪代码,有点像剪枝深搜:

时间: 2024-12-13 06:37:24

Alpha-Beta Pruning的相关文章

C++alpha beta剪枝算法 实现4*4 tic-tac-toe

先上一张alpha beta原理图,一看就懂 代码有点长,主要是因为算评估值得时候用的是穷举. 玩家是1,电脑是2,可以选择难度以及先手. // // main.cpp // Tic-Tac-Toe // // Created by mac on 2017/4/2. // Copyright ? 2017年 mac. All rights reserved. // #include <iostream> #include <vector> #include <math.h&g

扩增子分析解读6进化树 Alpha Beta多样性

分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们的OTU获得了物种注释,并学习OTU表的各种操作————添加信息,格式转换,筛选信息. 接下来我们学习对OTU序列的进化分析.同时计算Alpha和Beta多样性值. 16. 进化树构建 进化树是基于多序列比对的结果,可展示丰富的信息,我们将在R绘图中详细解读.此处只是建树,用于Alpha, Beta多样性分析的输入文件. # clustalo多序列比对,如果没有请安装Clustal Omega clustalo -i

软件版本GA,RC,alpha,beta含义

软件版本GA,RC,alpha,beta含义 (1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release.Candidate.就是发行候选版本.和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! 是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版 (2)GA:(general availability) 比如:Ap

软件版本GA,RC,alpha,beta,Build 含义

(1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release.Candidate.就是发行候选版本.和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! 是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版 (2)GA:(general availability) 比如:Apache Struts 2 GA 这是Apac

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

剪枝是必须的 上一篇讲了极大极小值搜索,其实单纯的极大极小值搜索算法并没有实际意义. 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250000,在我的酷睿I7的电脑上一秒钟能计算的节点不超过 5W 个,那么 625W 个节点需要的时间在 100 秒以上.电脑一步思考 100秒肯定是不能接受的,实际上最好一步能控制在 5 秒 以内. 顺便说一下层数的问题,首先思考层数必须是偶数.因为奇数节点是AI,偶数节点是玩家,如果AI下一个子不考

K 班1-7,alpha,beta 作业成绩汇总

K 班1-7,alpha,beta 作业成绩汇总 千帆竞发 详细得分 短学号 名 1 2 3 4 5 6 7 alpha beta TOTAL 505 基智 4.55 1 -2 0 0 -10 4.37 5.65 5.21 8.78 414 圳源 5.43 2.28 1.67 5 -10 5 4.01 7.52 6.33 27.24 125 文智 1 1 1.67 0 0 5 7.89 8.17 7.37 32.1 204 斌豪 3.18 2.28 2 5.24 6.11 -10 7.95 5

软件发布版本区别介绍-Alpha,Beta,RC,Release

Alpha: Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用. 是希腊字母的第一位,表示最初级的版本 alpha就是α,beta就是β alpha版就是比beta还早的测试版,一般都是内部测试的版本 -------------------- Beta: 很容易理解就是测试版,这个阶段的版本会一直加入新的功能. RC:RC就是Release Candidate(候选版本)的简称 Candidate是候选人的意思,用在软件上就是候选版本.Release.

(转)软件版本中的Alpha,Beta,RC,Trial是什么意思?

版本号:V(Version):即版本,通常用数字表示版本号.(如:EVEREST Ultimate v4.20.1188 Beta )Build:用数字或日期标示版本号的一种方式.(如:VeryCD eMule v0.48a Build 071112)SP:Service Pack,升级包.(如:Windows XP SP 2/Vista SP 1) 开发阶段划分:α(Alpha)版:内测版,内部交流或者专业测试人员测试用.Bug较多,普通用户最好不要安装.β(Beta)版:公测版,专业爱好者大

软件版本中的Alpha,Beta,RC,Trial是什么意思?

转自:http://blog.csdn.net/linxinzheng/article/details/2201043 版本号:V(Version):即版本,通常用数字表示版本号.(如:EVEREST Ultimate v4.20.1188 Beta )Build:用数字或日期标示版本号的一种方式.(如:VeryCD eMule v0.48a Build 071112)SP:Service Pack,升级包.(如:Windows XP SP 2/Vista SP 1) 开发阶段划分:α(Alph

各软件发布版本简写(Alpha Beta RC GA DMR)

Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用. Beta:也是测试版,这个阶段的版本会一直加入新的功能.在Alpha版之后推出. RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本.系统平台上就是发行候选版本.RC版不会再加入新的功能了,主要着重于除错. GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的. RTM:(Release to Manufacture)是给工厂