极大极小搜索算法 minimax search
minimax search
设计象棋等AI模型时常常需要使用博弈论的思想,minimax search就是一种基于当前状态推测出使我方最有利而对方最不利的行动,在实际模型中需要考虑状态函数,树的深度,时间成本等等因素,这里只讲一个最简单的例子说明minmax search的计算过程。
假设根据当前局面我们得到一个下图所示的博弈树:
从上往下,单数层是我方行动,双数层是对方行动,我方行动需要选择对我最有利的行动,即value大的行动,对方行动则是选择使我方最不利的行动,即value小的行动。
我们需要从最底层第四层开始考虑,双数层所以是对方行动。对于node I,会选择值更小的node M,node I的值更新为0。再考虑第三层,单数层是我方行动。node F会选择I,J中值更大的J,更新为5,G会选择K,L中值更大的L,更新为8。依次一层层向上类推,可以得到最终结果为:
alpha-beta prune
当树的深度很大的时候,遍历一遍的代价非常大,alpha-beta prune是一种优化方法,其根据遍历顺序分为left-to-right和right-to-left两种,前者从左边开始遍历,后者从右边开始遍历。
alpha-beta剪枝的基本思想是对于每个max结点设置一个目前已知下界alpha,每个min节点设置一个目前已知上界beta。alpha代表我方可以搜索到的最好值,beta代表了对方可以接受的最坏值。如果某个行动的结果小于或等于alpha,那么它就是很差的行动,我方可以选择更好的行动(当前alpha值的行动)。反之,如果某个行动的结果大于或等于beta,那么整个节点就作废了,因为对手不希望走到这个局面,而它有一定有别的行动(即走当前beta值的行动)可以避免到达这个局面。
但发生下面两种情况时可以剪枝,即停止搜索该节点的其余子节点:
1)当计算一个min结点时,如果它的beta值小于等于其父结点的alpha值,则可以立即停止此结点的计算(alpha剪枝)。
2)当计算一个max结点时,如果它的alpha结点大于等于其父结点的beta值,也可以立即停止此结点的计算(beta剪枝)。
简单来说,当α≥β\alpha \geq \betaα≥β时,发生剪枝,因为后续搜索到的行动一定会差于之前的行动或是对方一定不会采取后续的行动。通过剪枝可以减少遍历的节点数,从而加快速度。
还是以之前的博弈树为例(left-to-right)
- Initially node A α=−∞,β=∞\alpha = -\infty, \beta = \inftyα=−∞,β=∞, pass to node B and D.
- Starting form node D, beta=min(∞,3)=3beta = min(\infty,3) = 3beta=min(∞,3)=3 for node B.
- Search node E, beta=min(3,6)=3beta = min(3,6) = 3beta=min(3,6)=3 for node B.
- For node A, α=max(−∞,3)=3\alpha = max(-\infty,3) = 3α=max(−∞,3)=3. Then node A passes α=3,β=∞\alpha = 3, \beta = \inftyα=3,β=∞ to node C, F and I.
- For node I, β=min(∞,0)=0<α=3\beta = min(\infty,0) = 0 < \alpha = 3β=min(∞,0)=0<α=3. So we do not need to consider node I’s another child node N. And pass the result back to node F. For node F, α=max(3,0)=3\alpha = max(3,0) =3α=max(3,0)=3.
- Search node J, α=max(3,5)=5\alpha = max(3,5) =5α=max(3,5)=5 for node F. For node C, β=min(∞,5)=5\beta = min(\infty, 5) = 5β=min(∞,5)=5 and α=3\alpha = 3α=3.
- Node C passes its value to node G. For node G, β=5,α=3\beta = 5, \alpha = 3β=5,α=3.
- Search node K, α=max(3,7)=7>β=5\alpha = max(3,7) = 7 > \beta = 5α=max(3,7)=7>β=5 for node G. So we do not need to consider node G’s another child node L. Return to node C, β=min(5,7)=5\beta = min(5,7) = 5β=min(5,7)=5.
- Search node H, β=min(5,4)=4\beta = min(5,4) =4β=min(5,4)=4. Return to node A, α=max(3,4)=4\alpha = max(3,4) = 4α=max(3,4)=4.
最后的结果:
即对于当前局面,我的选择最好可以达到4。
极大极小搜索算法 minimax search相关推荐
- 深度优先搜索算法(Depth-First-Search,DFS)与广度优先搜索算法(Breadth-First Search,BFS)理解
最近学习到了这两种经典的算法,谈一下自己的理解 深度优先搜索算法(Depth-First-Search,DFS) 这个算法会尽可能深的搜索树的分支.当节点v的所在边都己被探寻过,搜索将回溯到发现节点v ...
- 量子搜索算法 Grover search
量子搜索算法 Grover search 问题定义: Problem: f:{0,1,2,3,--,N−1}→{0,1}f:{0,1,2,3,--,N−1}→{0,1} 找到 f(x)=1 的x 解法 ...
- 人工智能算法模型--Minimax(极大极小)搜索算法学习笔记
⬜⬜⬜
- 【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例
01 什么是禁忌搜索算法? 1.1 先从爬山算法说起 爬山算法从当前的节点开始,和周围的邻居节点的值进行比较. 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点):反之就用最高的邻居 ...
- 禁忌搜索算法(tabu search)解决TSP及其Matlab代码
1.算法简介 禁忌搜索算法TS(Tabu search),顾名思义核心在于"禁忌",简单来说就是在某一个过程中把一些不太好的操作给禁止了,直到搜索到一个"最优秀" ...
- 人工智能博弈树极大极小搜索算法alpha-beta剪枝实现五子棋,带禁手
由于2020的特殊情况,导致了一个被拖了挺久的大作业.... 五子棋其实大家很多时候会在闲暇时刻和朋友随便玩玩,这不仅让我回忆起了高中时候摸鱼休息就喜欢和同学在自己打的格子中用铅笔来一盘五子棋,回想起 ...
- minimax search算法
局面估价函数:给每个局面(state)规定一个估价函数值f,评价它对于己方的有利程度.胜利的局面的估价函数值为,而失败的局面的估价函数为- Max局面:假设这个局面轮到己方走,有多种决策可以选择,其中 ...
- 选择性搜索算法(Selective Search)超详解(通俗易懂版)
Selective Search(选择性搜索)基于Graph-Based图像分割,是RCNN和Fast RCNN的区域推荐算法. SS算法由IJCV 2012的论文<Selective Sear ...
- 禁忌搜索算法例题 c语言,禁忌搜索算法(Tabu Search)
由7层不同的绝缘材料构成的一种绝缘体,应如何排列顺序,可获得最好的绝缘性能. 编码方式:顺序编码 初始编码:2-5-7-3-4-6-1 目标值:极大化目标值. 邻域移动:两两交换 TabuSize:3 ...
- 二分搜索算法 (binary search)
二分搜索算法 二分的本质并不是单调性,但是具有单调性一定可以使用二分,可以使用二分不一定具有单调性.二分的要点是"边界问题" 二分算法看似很容易实现,但是对于处理二分的边界上的细节 ...
最新文章
- MapReduce英语面试
- 济南女子学院计算机科学与技术,山东女子学院计算机科学与技术专业2016年在山东理科高考录取最低分数线...
- bouml 逆向分析c++_JS逆向之漫画柜
- gluPerspective的具体含义
- 前端学习(2024)vue之电商管理系统电商系统之根据分页获取订单列表数据
- UNIX网络编程——shutdown 与 close 函数 的区别
- django之get filter
- 【代码笔记】iOS-账号,密码记住
- ansys软件linux安装教程,ansys 15 for linux 安装纪录
- Texture贴图材质资源网站分享
- 通过.reg文件修改注册表
- Bilibili拜年祭启发的小小探索
- 几何与导数——微分几何初步(二)
- 做一名「技术掮客」去变现自己的技术
- 。三十功名尘与土,八千里路云和月。莫等闲,白了少年头,空悲切
- DataX 异构数据源离线同步
- Excel VBA将所有Sheet重命名为单元格a1的名称
- 图像渲染测试软件,Arnold渲染器之aiImage(ai图像)着色器介绍及渲染测试
- 社科院与杜兰大学金融管理硕士项目——有规划的人生值得期待,你当下的规划是什么呢
- Web全栈开发1+x(中级)PHPMySQL知识
热门文章
- word里双横线怎么打_word 双下横线怎么打出来
- pdf文件如何生成目录 wps_WPS文档如何生成目录你会了吗?
- 下载论文,电子书籍(中英文),专利,数据库和课件
- [链接汇总]在用Matlab解微分方程时比较有用
- C++图形函数库EGE、raylib和EasyX及可以使用的开发工具小龙Dev-C++、小熊猫C++介绍
- MATLAB图形句柄
- 2021-08-18
- 悲痛!深圳马拉松名将在甘肃遇难 【转载】
- 百度竞价推广:关键词首页指导价分析及竞价出价技巧
- 手机tim邮箱服务器密码错误,qq邮箱登录失败显示session timeout解决方法