alpha beta 剪枝算法

摘自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              α := max(α, v)

09              if β ≤ α

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值