alpha beta 剪枝算法

minimax算法Alpha-Beta pruning实现英式跳棋 作业喜加一。 youtuber: Tech With Tim 看了他的教程……真的好厉害噢 这个跳棋和中国的三角式还不太一样,棋盘是8*8的 大概就是两边各执一方,然后正常跳,跳过去的时候会把对手棋子吃掉,跳到对面最后一列就会变成KING,然后可以往回反跳。 最后就是看谁剩下的棋子多谁赢。 所以 最大最小算法 他的总和就是比如图上。 白色棋子数减去红色棋子数。 白方希望这个数越大,而红方希望这个数越小。 对于每个棋子, 所有的可能性行为就是一棵树。 所以就成了经典的的最大最小博弈算法。 思路 构建whil 阅读详情

摘自wikipedia

alpha-β修剪的好处在于可以消除搜索树的分支。这样,搜索时间可以限制在“更有希望”的子​​树中,并且可以在同一时间执行更深入的搜索。该算法和极小化极大算法一样,都是分支限界类算法。若节点搜索顺序达到最佳优化或近似最佳优化(将最佳选择排在各节点首位),则同样时间内搜索深度可达极小化极大算法的两倍多。


算法使用两个值alpha和beta,分别代表大分玩家放心的最高分,以及小分玩家放心的最低分。alpha和beta的初始值分别为正负无穷大,即双玩家都以可能的最低分开始游戏。在选择某节点的特定分枝后,可能发生小分玩家放心的最小分小于大分玩家放心的最大分(beta <= alpha)。这种情况下,父节点不应选择这个节点,否则父节点分数会降低,因此该分枝的其他节点没有必要继续探索。

 

伪代码:

01 function alphabeta(node, depth,α, β, maximizingPlayer) // node = 节点,depth = 深度,maximizingPlayer= 大分玩家

02     if depth = 0 or node是终端节点

03         return 节点的启发值

04     if maximizingPlayer

05         v := -∞

06         for 每个子节点

07              v := max(v, alphabeta(child,depth - 1, α, β, FALSE)) // child = 子节点

08              α := ma

组合游戏系列1: Leetcode中的Minimax 和 Alpha Beta剪枝 本系列,我们来看看在一种常见的组合游戏——回合制棋盘类游戏中,如何用算法来解决问题。首先,我们会介绍并解决搜索空间较小的问题,引入经典的博弈算法和相关理论,最终实现在大搜索空间中的Deep RL近似算法。在此基础上可以理解AlphaGo的原理和工作方式。 本系列的第一篇,我们介绍3个Leetcode中的零和回合制游戏,从最初的暴力解法,到动态规划最终演变成博弈论里的经典算法: minimax 以及 alpha beta 剪枝。 第一篇 Leetcode中的Minimax 和 Alpha Beta剪枝 阅读详情

相关推荐

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

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

言川的博客 4万+

秒懂算法 | 围棋中的Alpha-Beta剪枝算法

Alpha-Beta剪枝算法

不断学习,不断进步,提高自己 7444

极大极小树的剪枝算法1 alpha-beta剪枝

Alpha-Beta 剪枝算法用于减小极大极小算法搜索的节点数目,Alpha-Beta 剪枝算法的效率很大依赖于节点的排列,在理想的排序下,算法复杂度为O(b^(d/2)),可以使搜索节点的数量减小一半,从而使在相同时间下的搜索深度增加一倍。在随机排序下,算法复杂度平均为O(b^(d*3/4)) 算法使用了两个值,分别为alphabeta,分别代表最佳得分的最小下界和最大上界,最初alpha

u012501320的专栏 1万+

数据结构与算法Alpha-Beta剪枝

数据结构与算法Alpha-Beta剪枝

weixin_47225948的博客 4263

Alpha-Beta 剪枝

Minimax$ 算法又叫极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。1在局面确定的双人对弈里,常进行对抗搜索,构建一棵每个节点都为一个确定状态的搜索树。奇数层为己方先手,偶数层为对方先手。搜索树上每个叶子节点都会被赋予一个估值,估值越大代表我方赢面越大。我方追求更大的赢面,而对方会设法降低我方的赢面,体现在搜索树上就是,奇数层节点(我方节点)总是会选择赢面最大的子节点状态,而偶数层(对方节点)总是会选择我方赢面最小的的子节点状态。

m0_61033277的博客 1万+

Alpha-Beta剪枝算法原理

1. 前言 前文:极小化极大(Minimax)算法原理 极小化极大算法在完全信息零和博弈中,基于己方努力使得在N步后优势最大化(即评估函数输出值最大化)和对方努力使得N步后己方优势最小化这两个出发点,构建决策树。在决策树上通过这两个出发点的内在逻辑进行搜索,最后给出行动策略。 显然,极小化极大算法需要展开整个决策树,对于局面复杂的问题,其搜索空间将会非常大。 同时,我们可以清晰地看到有部分节点是否被搜索不会影响最后的结果,因此,无需展开此类节点以及计算此类节点的子节点的估值。 通过上述方法,可节省算法搜索

RuizhiHe 2万+

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

Alpha-Beta剪枝算法(Alpha Beta Pruning) [说明] 本文基于<<CS 161 Recitation Notes - Minimax with Alpha Beta Pruning>>,文中的图片均来源于此笔记。 Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度。 假设α为下界,β为上界,对于α ≤ N ≤ β: 若 α ≤ β 则N有解。 若 α > β 则N无解。 下面通过一个例子来说明Alpha-B.

大隐隐于野 2243

一看就懂的Alpha-Beta剪枝算法详解

看了很多帖子,都没这个帖子讲的清楚.Alpha-Beta剪枝搜索是棋类走子计算的首选算法,由于估值函数问题,不适用于围棋

正在编程 11万+

理解Alpha-Beta 剪枝算法

Alpha-beta剪枝是一种搜索算法,用以减少极小化极大算法(Minimax算法搜索树的节点数。裁剪搜索树中没有意义的不需要搜索的树枝,提高运算速度。 搜索中传递两个值。 第一个值是Alpha,即搜索到的最好值,任何比它更小的值就没用了。(本方最少要得到的值) 第二个值是Beta,即对于对手来说最坏的值。(对方最多能给的值) 下面通过一个例子来说明Alpha-Beta剪枝算法。 上图为整颗搜索树。这里使用极小极大算法配合Alpha-Beta剪枝算法,正方形为自己(A),圆为对手(B)。 初始设置α为负

一路向北 1万+

最清晰易懂的MinMax算法Alpha-Beta剪枝详解

最清晰易懂的MinMax算法Alpha-Beta剪枝详解 参考文章 http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html 一、MinMax算法   Minimax算法(亦称 MinMax or MM)又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。   Minimax算法常用于棋类等由...

QDU_ZXF的博客 8万+

Alpha-beta剪枝算法实例分析

看本章之前,请先参看前一篇文章《Minimax算法及实例分析》 由于Minimax算法有一个很大的问题就是计算复杂性。由于所需搜索的节点数随最大深度呈指数膨胀,而算法的效果往往和深度相关,因此这极大限制了算法的效果。 Alpha-beta剪枝是对Minimax的补充和改进。采用Alpha-beta剪枝后,我们可不必构造和搜索最大深度D内的所有节点,在构造过程中,如果发现当前

我的专栏 2万+

算法——Alpha-Beta剪枝搜索

(1)将走棋方定为MAX方,因为它选择着法时总是对其子节点的评估值取极大值,即选择对自己最为有利的着法;(2)将应对方定为MIN方,因为它走棋时需要对其子节点的评估值取极小值,即选择对走棋方最为不利的、最有钳制作用的着法。(3)在对博弈树(博弈树是指由于动态博弈参与者的行动有先后次序,因此可以依次将参与者的行动展开成一个树状图形。)采取深度优先的搜索策略时,从左路分枝的叶节点倒推得到某一层MAX节点的值,可表示到此为止得以“落实”的着法最佳值,记为α。(4)显然此值可作为MAX方着法指标的下界。

oopxiajun博客专栏 5192

[算法导论] Alpha-Beta 剪枝(Alpha-Beta Pruning)

参考:https://www.7forz.com/3211/ Alpha-Beta剪枝用于裁剪搜索树中不需要搜索的树枝,以提高运算速度。它基本的原理是: max 只更新max的(阿尔法)。 min 只更新min的 (贝塔)。 从子结点开始更新。 当一个 Min 节点的 β值≤任何一个父节点的α值时 ,剪掉该节点的所有子节点 当一个 Max 节点的 α值≥任何一个父节点的β值时 ,剪掉该节点的所有子节点 Max min max min 原搜索树 ...

心宝的博客 2857

alpha-beta剪枝算法

实验报告 alpha-beta剪枝算法 姓名:张楚明 学号:18342125 日期:2021.01.15 摘要 本实验将搜索深度为4的Alpha-Beta剪枝算法应用于中国象棋中黑方走棋,实现了中国象棋的人机博弈博弈过程中综合考虑了棋力、对敌方棋子的攻击力、对己方棋子的保护能力、棋子的灵活性及其位置等多种因素计算当前棋子的评估值 使用说明 用vscode打开文件夹运行main.py即可(其中相应版本为Python3.8.2,Pygame1.9.6) 1. 导言 (1) 要解决的问题描述

Edith的博客 4324

对抗搜索Alpha-Beta剪枝算法

对抗搜索Alpha-Beta剪枝算法 什么是对抗算法 为了解决信息确定、全局可观察、竞争对手轮流行动、输赢收益零和假设下的两人博弈问题而提出的一种算法。即零和博弈,所谓零和博弈博弈论的一个概念,属非合作博弈。指参与博弈的各方,在严格竞争下,一 方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在合作的可能。 首先介绍一种常见的基础对抗算法:最大最小算法。 最小最大搜索是在对抗搜索中最为基本的一种让玩家来计算最优策略的方法.。在开始之前我们需要定义.

qq_44250808的博客 2597

alpha-beta剪枝算法原理(附代码)

alpha-beta剪枝算法原理(附代码)背景Max-Min算法alpha-beta剪枝代码 背景   由于笔者最近要写人工智能课的大作业,所以这两天在学习博弈论相关的知识,但网上对alpha-beta剪枝的原理讲的都不是很清晰,很多细节都忽略了,让初学者会有一种脑子说会了,但手并不会的感觉,导致一写起代码就懵,所以笔者决定整理一下知识点,让初学者更容易接收。本文适合想深入理解算法原理的读者,如果您只是需要在工程中使用,请直接到文章最后ctrl cv代码即可。   不管是alpha-beta剪枝算法还是它的

moonlight11111的博客 2万+
上一篇: LeetCode 45. Jump Game II
下一篇: 遗传算法 与旅行商问题
朔北冥
博客等级 码龄11年 14粉丝 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值