2

为了通过 Alpha-Beta 剪枝提高 Minimax 算法的性能,我实现了迭代深化:

 public Integer iterativeDeepening(int maxDepth, boolean isFirstPlayer) {

    Integer bestCell = -1;

    for (Integer depth = 1; depth <= maxDepth; depth++) {
        bestCell = alphabeta.minimax(depth, false, Integer.MIN_VALUE, Integer.MAX_VALUE)[1];
    }

    return bestCell;
}

where 方法iterativeDeepening只返回最佳移动的 id。

首先,我不确定这是否是实现迭代深化的正确方法。

其次,我注意到人工智能开始做出错误的动作。迭代深化是否可能影响决策?

在使用转置表和迭代深化时,我测量了算法速度的显着改进,但我真的不想为了速度而牺牲 AI 质量。

4

1 回答 1

4

首先,我不确定这是否是实现迭代深化的正确方法。

我认为这是正确的,但是如果您希望迭代深化以加快算法速度,您还应该为其添加移动排序。这个想法是您使用来自较浅搜索的结果,并且在下一次迭代中似乎最好的搜索移动。这意味着您有更好的机会在您的 alpha-beta 算法中快速截断。

其次,我注意到人工智能开始做出错误的动作。迭代深化是否可能影响决策?

为您的 alpha-beta 算法实施迭代深化不应该影响决策。您的实现一定有问题,但没有足够的信息来说明它是什么。

于 2016-01-12T21:53:11.033 回答