Minimax算法的优点/缺点

时间:2016-04-27 14:28:12

标签: algorithm minimax

  

minimax算法的一个缺点是每个板状态都有   两次访问:一次找到它的孩子,第二次   评估启发式值。

minimax算法还有其他缺点或优点吗?比如国际象棋这样的游戏,还有更好的选择吗? (当然还有使用alpha-beta修剪的minimax,但还有其他什么?)

1 个答案:

答案 0 :(得分:2)

对于像国际象棋这样的游戏,Minimax往往太慢了。对于每个回合,玩家有很多选择可以决定,国际象棋游戏的分支因素是巨大的,因此我们越深入,它就越慢。国际象棋的分支因子平均为30.这就是每回合创建30个子树。

在提供特定算法之前,它们都使用我们称之为alpha beta修剪的方法。 Alpha beta减少了要扩展的节点数量,因此我们减少了分支因子。

请记住,minimax和alpha beta有许多不同的变体,但最重要的算法是:

  • Negamax:这里的想法是,一个玩家的移动得分始终是另一个玩家的得分,但相同的幅度允许你计算max(a,b)= -min (-a,-b)。

简单解释:

score = -negamax(depth-1,-player)
best = max(score,best)

窗口搜索算法

以下算法使用窗口来减少搜索空间。 该窗口最初将假定为alpha和beta值。

  • 主要变体方法:此方法减少了访问的节点数量"猜测"最初的alpha和beta。它通过仅探索一个分支并选择候选值来实现。使用此值我们修剪。如果我们发现矛盾,那么这个值会比我们再次开始对候选人进行处理的候选人产生更高的分数。

  • MTD(f)极小极大的另一种变体。使用零窗口搜索。这意味着,在我们找到候选者(比如" v")之后,我们假设alpha beta值将是(v-1,v),因此只有v是可能的解决方案。如果我们发现矛盾,改变候选人并重复。

目前国际象棋计算机程序中最好和最常用的算法是MTD(f),带有一些变化/启发式算法。

来源:Converting Minimax to Negamax (python)