alpha-beta剪枝的代码实现
来源:互联网 发布:淘宝联盟官方网站首页 编辑:程序博客网 时间:2024/05/16 09:47
之前在极大化极小算法minimax说得不够清楚而且也没有附带伪代码,所以这里再写一篇专门关于剪枝的blog进行补充
http://blog.csdn.net/joshualiunsw/article/details/52131507
————————————————————————————————————————————————
现在已经有了普通的minimax的伪代码, 由于下文中需要用到α, β所以对应地将其转换成a(alpha)、b(beta)的形式
我们在此伪代码的基础上添加alpha-beta剪枝function minimax(node, depth) if node is a terminal node or depth = 0 return the heuristic value of node if the adversary is to play at node let b := +∞ foreach child of node b := min(a, minimax(child, depth-1)) return b else {we are to play at node} let a := -∞ foreach child of node a := max(b, minimax(child, depth-1)) return a
function minimax(node, depth, a, b)其实上述添加的两个if语句的条件判断是完全一样的,因为根据原理在min节点只能修改beta,而在max节点只能修改alpha,这样写只是为了让结构更为清晰。if node is a terminal node or depth = 0 return the heuristic value of node if the adversary is to play at node//let b := +∞foreach child of node b := min(a, minimax(child, depth-1, a, b)) if b <= a return b return b else {we are to play at node}//let a := -∞foreach child of node a := max(b, minimax(child, depth-1, a, b))return aif a >= b return a
下面再引用Alan Blair博士的图例来说明这个优化的过程,他的绘图规则我认为是比较清易懂的,特别是三角和倒三角的使用,能清晰地展示当前节点是min还是max节点,而且该图例中展示了多个子节点的情况和不能成功剪枝的情况,值得参考
0 0
- alpha-beta剪枝的代码实现
- 浅谈"对抗搜索"的alpha-beta 剪枝
- alpha-beta剪枝搜索
- 例析Alpha-Beta剪枝
- Alpha-Beta 剪枝算法
- alpha beta 剪枝算法
- alpha-beta剪枝
- Alpha-Beta剪枝算法
- Alpha-beta剪枝算法
- 例析Alpha-Beta剪枝
- Alpha-beta剪枝-井字棋
- 极大极小树的剪枝算法1 alpha-beta剪枝
- Alpha-Beta剪枝(Alpha Beta Pruning)
- Alpha-Beta剪枝算法(Alpha Beta Pruning)
- 练练手,近期实现的一个基于alpha-beta剪枝技术的机器人“追逐”程序
- 对抗博弈 alpha-beta剪枝
- 一看就懂的Alpha-Beta剪枝算法详解
- 一看就懂的Alpha-Beta剪枝算法详解
- Java @override报错的解决方法
- TabLayout
- 获取assets下资源
- JMeter学习(九)FTP测试计划
- WordPress代码实现 外链图片 自动本地化
- alpha-beta剪枝的代码实现
- 金士顿DT100G3(16G) U盘修复
- C++下棋牌游戏高性能洗牌算法
- 项目08-05
- C#入门6.6——字符串的截取
- 一个挺好的Window系统的小工具 —— mytodolist
- android学习笔记 单位转换工具类
- Android 解决ListView 和 ScrollView 共存冲突的问题
- scala编程实践---类