minimax算法的一个缺点是每个板状态都有 两次访问:一次找到它的孩子,第二次 评估启发式值。
minimax算法还有其他缺点或优点吗?比如国际象棋这样的游戏,还有更好的选择吗? (当然还有使用alpha-beta修剪的minimax,但还有其他什么?)
答案 0 :(得分:2)
在提供特定算法之前,它们都使用我们称之为alpha beta修剪的方法。 Alpha beta减少了要扩展的节点数量,因此我们减少了分支因子。
请记住,minimax和alpha beta有许多不同的变体,但最重要的算法是:
简单解释:
score = -negamax(depth-1,-player)
best = max(score,best)
窗口搜索算法
以下算法使用窗口来减少搜索空间。 该窗口最初将假定为alpha和beta值。
主要变体方法:此方法减少了访问的节点数量"猜测"最初的alpha和beta。它通过仅探索一个分支并选择候选值来实现。使用此值我们修剪。如果我们发现矛盾,那么这个值会比我们再次开始对候选人进行处理的候选人产生更高的分数。
MTD(f)极小极大的另一种变体。使用零窗口搜索。这意味着,在我们找到候选者(比如" v")之后,我们假设alpha beta值将是(v-1,v),因此只有v是可能的解决方案。如果我们发现矛盾,改变候选人并重复。
目前国际象棋计算机程序中最好和最常用的算法是MTD(f),带有一些变化/启发式算法。