原贴:http://blog.csdn.net/tangchenyi/article/details/22925957

Alpha-Beta剪枝算法(Alpha Beta Pruning)

[说明] 本文基于<<CS 161 Recitation Notes - Minimax with Alpha Beta Pruning>>,文中的图片均来源于此笔记。

Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度。

假设α为下界,β为上界,对于α ≤ N ≤ β:

若 α ≤ β  则N有解。

若 α > β 则N无解。

下面通过一个例子来说明Alpha-Beta剪枝算法。

上图为整颗搜索树。这里使用极小极大算法配合Alpha-Beta剪枝算法,正方形为自己(A),圆为对手(B)。

初始设置α为负无穷大,β为正无穷大。

对于B(第四层)而已,尽量使得A获利最小,因此当遇到使得A获利更小的情况,则需要修改β。这里3小于正无穷大,所以β修改为3。

(第四层)这里17大于3,不用修改β。

对于A(第三层)而言,自己获利越大越好,因此遇到利益值大于α的时候,需要α进行修改,这里3大于负无穷大,所以α修改为3

B(第四层)拥有一个方案使得A获利只有2,α=3,  β=2, α > β, 说明A(第三层)只要选择第二个方案, 则B必然可以使得A的获利少于A(第三层)的第一个方案,这样就不再需要考虑B(第四层)的其他候选方案了,因为A(第三层)根本不会选取第二个方案,多考虑也是浪费.

B(第二层)要使得A利益最小,则B(第二层)的第二个方案不能使得A的获利大于β, 也就是3. 但是若B(第二层)选择第二个方案, A(第三层)可以选择第一个方案使得A获利为15, α=15,  β=3, α > β, 故不需要再考虑A(第三层)的第二个方案, 因为B(第二层)不会选择第二个方案.

A(第一层)使自己利益最大,也就是A(第一层)的第二个方案不能差于第一个方案, 但是A(第三层)的一个方案会导致利益为2, 小于3, 所以A(第三层)不会选择第一个方案, 因此B(第四层)也不用考虑第二个方案.

当A(第三层)考虑第二个方案时,发现获得利益为3,和A(第一层)使用第一个方案利益一样.如果根据上面的分析A(第一层)优先选择了第一个方案,那么B不再需要考虑第二种方案,如果A(第一层)还想进一步评估两个方案的优劣的话, B(第二层)则还需要考虑第二个方案,若B(第二层)的第二个方案使得A获利小于3,则A(第一层)只能选择第一个方案,若B(第二层)的第二个方案使得A获利大于3,则A(第一层)还需要根据其他因素来考虑最终选取哪种方案.

一看就懂的Alpha-Beta剪枝算法详解相关推荐

  1. python alpha beta 剪枝_一看就懂的 Alpha-Beta 剪枝算法详解

    Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度. 假设α为下界,β为上界,对于α ≤ N ≤ β: 若 α ≤ β  则N有解. 若 α > β 则N无解. ...

  2. alpha beta 剪枝算法

    摘自wikipedia alpha-β修剪的好处在于可以消除搜索树的分支.这样,搜索时间可以限制在"更有希望"的子​​树中,并且可以在同一时间执行更深入的搜索.该算法和极小化极大算 ...

  3. 对装饰器@wraps的解释(一看就懂)-- 并对装饰器详解

    1. 先看一段代码 def is_login(func):def foo(*args,**kwargs):return func(*args,**kwargs)return foodef test() ...

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

    剪枝是必须的 五子棋AI教程第二版发布啦,地址:https://github.com/lihongxun945/myblog/labels/%E4%BA%94%E5%AD%90%E6%A3%8BAI% ...

  5. alpha-beta剪枝五子棋c语言,五子棋AI算法第三篇-Alpha Beta剪枝

    剪枝是必须的 上一篇讲了极大极小值搜索,其实单纯的极大极小值搜索算法并没有实际意义. 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250 ...

  6. 五子棋AI算法-Alpha Beta剪枝

    上一篇讲了极大极小值搜索,其实单纯的极大极小值搜索算法并没有实际意义. 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250000,在我的 ...

  7. 基于python的AI五子棋实现(极大极小值搜索和alpha beta剪枝)

    1.极大极小值搜索介绍 人机博弈是人工智能的重要分支,人们在这一领域探索的过程中产生了大量的研究成果,而极小化极大算法(minimax)是其中最基础的算法,它由Shannon在1950年正式提出. M ...

  8. alpha,beta剪枝详解

    α,β剪枝详解\alpha,\beta剪枝详解α,β剪枝详解 示例图 步骤详解 基础原理 这里我们先要理解什么是α,β\alpha,\betaα,β剪枝:α\alphaα是下界,β\betaβ是上界. ...

  9. 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?...

    简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...

最新文章

  1. 使用Python,OpenCV实现图像之间超快速的颜色转移
  2. css为元素添加样式,JQuery如何为元素添加样式
  3. WS-Addressing 了解
  4. agc018B Sports Festival
  5. 利用正则表达式去掉html代码
  6. 排序算法的实现(C/C++实现)
  7. element手机验证格式_Excel数据验证:给数据把个关,工作效率有保障。
  8. 笔记整理-信息系统工程监理(四控三管一协调)-监理规划、监理实施细则
  9. 2656: [Zjoi2012]数列(sequence)(递归+高精度)
  10. Python 网络爬虫的常用库汇总
  11. HBase中Bloomfilter类型的设置及使用的理解
  12. 27、很酷的C语言技巧
  13. Nignx出现failed (3: The system cannot find the path specified)问题
  14. 【编程好习惯】通过命名规则区分变量
  15. 多个类共同继承一个父类
  16. LNMP详解(四)——LNMP原理与简单部署
  17. Oracle-并行多线程和视图view的应用
  18. CocosStudio(八)AtlasLabel数字标签、BitmapLabel自定义字体、Label文本框
  19. js和jsp互相传值的问题解决办法
  20. python给矩阵赋值_python – 基本Numpy数组值赋值

热门文章

  1. 借贷宝是真的吗?有到账的吗?多久到账?到账了没?——笔者亲测已到账,附提款、到账截图...
  2. mysql 千位分隔符号_如何在MySQL记录中放置千位分隔符?
  3. Appium: Android KEYCODE键值
  4. Multi Paxos
  5. vue 监听页面刷新或关闭
  6. 考试系统实现题目列表和答案的提交
  7. 微软认证考试注册有礼“逢8抽奖”活动,幸运星揭晓
  8. HTML菊花图案绘制,国画菊花绘画(图解)
  9. android:ImageView选择本地图片并显示
  10. Android 超高仿微信图片选择器 图片该这么加载