知识点-极大极小搜索+alpha_beta剪枝

解决问题

​ 博弈类游戏

概要

​ 其实就是用深度搜索搜索博弈的策略,博弈中两个人轮流进行游戏,在算法里转化为在搜索的不同深度下选取不同的搜索策略,一般是奇数层选择值值最大的策略,对应第一个人要让自己的收益最大,而偶数层选择值最小的策略,因为第二个人想要赢的话,必定是要让对手的收益最小

​ 下面用一个经典的问题举个例子:你可以选择你朋友手里的两个钱包中的其中一个,然后你的朋友会从这个钱包里面拿出一张钱给你,你当然希望拿到的钱越多越好,而你的朋友希望给出的钱越少越好,假设两个钱包里面分别有面额为2、4的钱和1、3的钱,那么搜索树的样子就会是下面这样,交替取max和min

​ 而alpha_beta剪枝其实就是针对这种极大极小搜索的剪枝,alpha是第一个人期望得到的最大收益,初始设为-INF,而beta是对手能接受的最小收益,初始设为INF。而这个剪枝就是在搜索max层时,若是当前搜索的min层子树已经搜到一个比alpha值小的分叉,那么剩余的分叉就都不需要搜了,因为在min层里面是取最小值的,而目前的最小值比已经找到的最大值要小了,那么继续搜索下去也是同样无法更新最大值,所以就进行剪枝。在min层也是这样根据beta值剪枝

​ 例如上面那个例子,在搜完左边的子树之后,alpha更新为2,然后在搜索右边的子树时,左边分叉直接找到了一个1,那么在右边的分叉不管是什么值,它不可能会让最后取到的值大于1,也就不可能大于2,所以实际上搜到这里已经确定了答案是2,所以接下来的3就不需要再去访问了

例题

POJ1085

参考代码


int alpha_beta(int player, int cur_state, int alpha, int beta, int ca, int cb)
{int remain;// 如 A 得到 5 分以上则 A 赢// 如 B 得到 5 分以上则 A 输if(ca >= 5) return 1;if(cb >= 5) return -1;remain = ((~cur_state) & end_state); // 计算剩余可走的边if(player){ // A 走while(remain){ // 有可走边int move = (remain & (-remain)); // 选择一条可走边int ta = ca;int val;// A 填了边后形成新的局面int new_state = next_state(cur_state, move, &ta);if(ta > ca) // 如果 A 得分了,则 A 继续填一条边val = alpha_beta(player, new_state, alpha, beta, ta, cb);else // 否则轮到 B 填val = alpha_beta(player^1, new_state, alpha, beta, ca, cb);if(val > alpha)alpha = val;if(alpha >= beta) //剪枝return alpha;remain -= move; // 把边 move 从剩余可选边 remain 中移除}return alpha;}else{ // B 走while(remain){int move = (remain & (-remain));int tb = cb;int val;int new_state = next_state(cur_state, move, &tb);if(tb > cb)val = alpha_beta(player, new_state, alpha, beta, ca, tb);elseval = alpha_beta(player^1, new_state, alpha, beta, ca, cb);if(val < beta)beta = val;if(alpha >= beta)return beta;remain -= move;}return beta;}
}

知识点-极大极小搜索+alpha_beta剪枝相关推荐

  1. 五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计

    源代码 GitHub上:Github livingsu/Gobang-ai:极大极小搜索和α-β剪枝 引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算 ...

  2. (只此一篇便绝b能懂的)五子棋AI算法原理,博弈树、极大极小搜索、αβ剪枝

    我在最近撰写五子棋AI程序设计报告时,翻阅了很多的资料博客,但却发现大佬们的博客,没有一篇是能让我只看它就能理解全部的AI算法.在看了众多博客后,我终于对博弈树.极大极小搜索.αβ剪枝恍然大悟,其实这 ...

  3. 五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(四)算杀模块的简单实现

    一.什么是算杀?为什么要算杀? 算杀就是只算杀棋. 我用五子棋ai跟别人下了一阵子之后发现,用博弈树看6层深度(模拟ai走4步,模拟人走3步)其实根本不够,因为真正的高手看到的远比6层要多.高手进行谋 ...

  4. 零和博弈-极大极小搜索Alpha-Beta剪枝(井字游戏)

    零和博弈概念 二人利益对立完备信息博弈过程,在我们分析表达中就是对一个过程进行按规定双方交替操作,每次操作即搜索时选择对自己有利的情况(获益选最大,损失选最小),借助的数据结构自然是树.博弈树中每一层 ...

  5. 一张图读懂极大极小搜索和α-β剪枝

    极小极大算法 (The Minimax Algorithm) [说明] 本文基于 <<CS 161 Recitation Notes - The Minimax Algorithm> ...

  6. 算法笔记--极大极小搜索及alpha-beta剪枝

    参考1:https://www.zhihu.com/question/27221568 参考2:https://blog.csdn.net/hzk_cpp/article/details/792757 ...

  7. 极大极小搜索 α-β剪枝的实现

    极大极小搜索 α-β剪枝的实现 //---------搜索当前搜索状态极大值--------------------------------// //alpha 祖先节点得到的当前最小最大值,用于al ...

  8. POJ -1568 Alpha-Beta剪枝极大极小搜索

    极大极小搜索策略一般都是使用在一些博弈类的游戏之中: 理论上可以穷举所有的走法,这就需要生成整棵博弈树.这样就会使得时间复杂度非常的大.怎么解决这个问题呢? 因此搜索时可以限定博弈树的深度,相当于只往 ...

  9. 人工智能博弈树极大极小搜索算法alpha-beta剪枝实现五子棋,带禁手

    由于2020的特殊情况,导致了一个被拖了挺久的大作业.... 五子棋其实大家很多时候会在闲暇时刻和朋友随便玩玩,这不仅让我回忆起了高中时候摸鱼休息就喜欢和同学在自己打的格子中用铅笔来一盘五子棋,回想起 ...

最新文章

  1. R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据
  2. 高并发Nginx,Tomcat8,mysql数据库配置
  3. Visual Studio 2017创建XAML文件
  4. Netsharp下微信菜单以及OAuth
  5. MySQL数据备份方式,及热备与冷备的优缺点
  6. php webservice 上传,PHP实现WebService服务
  7. Peacock:大规模主题模型及其在腾讯业务中的应用-2015
  8. 黑客是互联网的高危职业,选择不慎,很可能如“他们”一样入门到入狱!
  9. CV初级研究工程师,苏黎世联邦理工学院招聘
  10. 【转】Java学习---内存溢出的排查经历
  11. mysql like 数字结尾_MySQL中的Like和正则表达
  12. 修改Linux用户的UID、GID
  13. SQL Server远程连接操作
  14. 大学学计算机用游戏本好吗,大学学建筑学用什么配置的笔记本电脑好?
  15. 记录 Kindle Fire HDX 7 安装 Google Play 服务过程
  16. CSND帐号居然又能用了,发个文章庆祝一下
  17. 利用idea 打包jar包
  18. 移动安全(1) - Win10 drozer环境搭建
  19. html5 制作游戏
  20. Unity敌人生成器

热门文章

  1. linux添加组管理员,centos下添加管理员组和添加管理员用户及相关操做
  2. go依赖注入--google开源库wire
  3. 人工智能:新技术的“双刃剑”
  4. Northern Data AG:与技嘉科技成功建立开发合作伙伴关系
  5. vue+echarts实现热力图
  6. 微信小程序-下载文件并打开/下载视频播放视频/下载音频文件-Android和IOS调试终版
  7. minipcie接口CAN卡解决工控机扩展CAN通道的难题 minipcie CAN
  8. pythoncqt_Librosa常数Q变换(CQT)在谱图的开始和结束处都存在缺陷
  9. bmp文件格式详细解析(转载)
  10. 我的.emacs(Ubuntu版)(二十二)