详解Minimax算法与α-β剪枝

在局面确定的双人对弈里,常采用博弈树搜索。我方追求更大的赢面,而对方会设法降低我方的赢面。由于局面确定,因此可以对赢面进行评估。我方往较大赢面的方向走,同时考虑对方的走法。由于对方的走法不确定,就假设对方会选择最大程度降低我方赢面的方向走,我方应规避那些对方可以大幅降低我方赢面的走法。

Minimax算法

称我方为MAX,对方为MIN,图示如下:

https://jlice-top.oss-cn-beijing.aliyuncs.com/464e4b76002211e99eb2509a4c21c90b.png

例如,对于如下的局势,假设从左往右搜索,根节点的数值为我方赢面(倒推值):

https://jlice-top.oss-cn-beijing.aliyuncs.com/466b1b14002211e9bac5509a4c21c90b.png

我方应选择中间的路线。因为,如果选择左边的路线,最差的赢面是3;如果选择中间的路线,最差的赢面是15;如果选择右边的路线,最差的赢面是1。虽然选择右边的路线可能有22的赢面,但对方也可能使我方只有1的赢面,假设对方会选择使得我方赢面最小的方向走,那么经过权衡,显然选择中间的路线更为稳妥。

https://jlice-top.oss-cn-beijing.aliyuncs.com/468b9c8c002211e99464509a4c21c90b.png

实际上,在看右边的路线时,当发现赢面可能为1就不必再去看赢面为12、20、22的分支了,因为已经可以确定右边的路线不是最好的。这个过程就是剪枝,可以避免不必要的计算。

α − β \alpha-\beta αβ 剪枝

例如,对于如下的局势,假设从左往右搜索:

https://jlice-top.oss-cn-beijing.aliyuncs.com/46ad4d30002211e98548509a4c21c90b.png

若已知某节点的所有子节点的倒推值,则可以算出该节点的倒推值:对于MAX节点,取最大倒推值;对于MIN节点,取最小倒推值。

若已知某节点的部分子节点的倒推值,虽然不能算出该节点的倒推值,但可以算出该节点的倒推值的取值范围。同时,利用该节点的倒推值的取值范围,在搜素其子节点时,如果已经确定没有更好的走法,就不必再搜索剩余的子节点了。

v v v 为节点的倒推值,且 α ≤ v ≤ β \alpha \leq v \leq \beta αvβ,即 α \alpha α 为最大下界, β \beta β 为最小上界。当 α ≥ β \alpha \geq \beta αβ 时,该节点剩余的分支就不必继续搜索了(也就是可以进行剪枝了)。注意,当 α = β \alpha = \beta α

  • 263
    点赞
  • 636
    收藏
    觉得还不错? 一键收藏
  • 39
    评论
Minimax算法和Alpha-Beta剪枝算法都是用于实现AI对战的算法,下面简单介绍一下它们的原理和实现。 Minimax算法是一种博弈树搜索算法,它假设对手也是采用最优策略,针对所有可能的对手行动,计算出自己的最优解。算法的核心思想是递归搜索博弈树,每次选择能够最大化自己收益的节点,同时假设对手会选择能够最小化自己收益的节点。当搜索深度达到预定的层数或者到达终止状态时,评估叶子节点的价值,然后逐层向上返回最大值或最小值,直至根节点。这样可以保证在所有可能的对手行动中,自己的最小收益能够最大化。 Alpha-Beta剪枝算法是一种对Minimax算法的优化,它利用了博弈树的对称性,在搜索过程中剪去一些无用的分支,从而减少搜索的时间。在搜索过程中,维护两个变量alpha和beta,分别表示当前节点能够保证的最低价值和最高价值。当搜索到某个节点时,如果发现它的子节点的最大值比beta小,或者子节点的最小值比alpha大,那么就可以将这个节点剪去,因为对手不会选择这个节点。这样可以极大地减少搜索时间,提高AI的速度和效率。 需要注意的是,Minimax算法和Alpha-Beta剪枝算法都需要对游戏状态进行评估,以确定每个节点的价值。评估函数通常需要考虑多种因素,如棋子数量、位置、活动度等,需要根据具体的游戏规则和经验进行设计和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值