python alpha beta 剪枝_alpha-beta​ 剪枝算法

$\alpha-\beta$ 剪枝算法

The minimax algorithm is a way of finding an optimal move in a two player game. Alpha-beta pruning is a way of finding the optimal minimax solution while avoiding searching subtrees of moves which won't be selected. In the search tree for a two-player game, there are two kinds of nodes, nodes representing your moves and nodes representing your opponent's moves. Nodes representing your moves are generally drawn as squares (or possibly upward pointing triangles):

博弈的基本概念

零和博弈 有完整信息的, 确定性的, 轮流的(回合的), 两个参与者的博弈

有完整信息 双方都可以查询本场游戏的完整历史记录完整信息举例不完整信息举例象棋、围棋、五子棋斗地主、红警、文明6

零和 双方的效用值在游戏结束时的代数和为0.

效用值 utival 是游戏结束时用于表征比赛胜负的变量, 如围棋中黑方 utival = 1, 白方 utival = -1, 可表示黑方获胜. 在博弈树上, 若根节点为 MAX 节点, 则叶节点上的值即为 MAX 方的效用值.

极小极大算法

极大值搜索 对于当前局面(父节点), 计算所有可能的落子点的局面得分, 选取其中得分最大者(最大子节点), 作为落子点.

极小极大搜索 设我方为 MAX 方, 对方为 MIN 方, utival 为效用值. 假设双方都同样地足够明智. MAX 方的目标是使效用值 utival 最大化, 而 MIN 方的目标是使 utival 最小化, 两方轮流落子.

现在我们从下到上倒着考虑. 考虑顶点为 MAX, 深度为n, 从上到下各层依次为 MAX1, MIN2, MAX3, MIN4, ..., MIN_n 的博弈树. 这棵树 MIN_n 层之下全为终局叶节点.

考虑 MIN_n 层结点 Ni , Ni 的子节点全为终局(叶)节点. 此时是 MIN 方的最后一步, 因此其一定会选择效用值最小的叶节点来落子, 因此在零和博弈的情况下结点 Ni 的下一步是确定的. 也就是说, MIN_n 层的全部结点的下一步都是可确定的. 我们将结点 Ni 的极小极大值 minimax 保存在 Ni 上. 同理, 对于 MAX_(n-1) 层的节点 Mi, 下一步也是确定的. 对其所有子节点取最大值, 即为 Mi 的 minimax 值, 保存在 Mi 上. 依次类推, 直到计算出根节点 MAX1 的 minimax 值.

极小极大算法使用了简单的递归算法, 计算根节点的每个后继结点的极大极小值. 算法自上而下一直前进到树的叶节点, 然后将极小极大值逐层回传. 将极小极大值回传的过程中, 记录落子位置, 也就是记录子节点的索引. 最后, 我们得到了根节点处的落子策略.

python实现class Tree:

def __init__(self, val, childs=None, maxormin='max'):

self.val = val

self.childs = childs # list

self.maxormin = maxormin

def is_leaf(self): # 当前结点是否是叶节点

return self.childs is None

def Max(self): # 返回子节点的最大值

return max([child.val for ch

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值