MinMax算法和Alpha-Beta剪枝

MinMax算法和Alpha-Beta剪枝

Minmax:一种用于博弈论暴力dfs搜索算法。

思想:

假设先手为 alpha(A),后手为 beta(B)。现在,每一个dfs的搜索状态有一个权值 w(可以是估价值),A想获得最大的w(即初始状态w最大),B想要A获得最小的w。其中,只有叶子节点才可以直接计算估价值

对于搜索树的一个节点(对应dfs中的一个状态),若现在轮到A走,那么A会走A的所有子节点中最小权值最大的节点,而B会走最大权值最小的点

如图:方点是A,圆点是B。答案为3。

Alpha-Beta剪枝

用于Minmax搜索的优化
复杂度?哪有什么复杂度?只要知道这玩意跑得的确很快就行了。适用于10 * 10以内的数据

正文
核心思想 :我们对每个结点记忆个可能的最小值α和可能的最大值β,即a<=w<=b,如果 a>b 了,那么这个点就没必要继续搜索它的子节点了。

那我们该怎么确定某一个节点的αβ呢?

首先我们来讨论先手:
先手A为了获得最大的w,那么A会走A的所有子节点中最小权值最大的节点,同时用当前最小权值最大的节点来作为临时的α,如果a已经大于b了(b可能是由父亲节点继承来的),那么继续搜索就没有意义了,直接break。

后手其实也类似,不过后手只会去更新β
(稍微有点抽象,建议画图,或看博客的图解)

posted @   花子の水晶植轮daisuki  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js
点击右上角即可分享
微信分享提示