实施迭代深化

时间:2015-11-06 12:37:33

标签: artificial-intelligence minimax iterative-deepening

为了提高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;
}

其中方法iterativeDeepening只返回最佳移动的ID。

首先,我不确定这是否是实施Iterative Deepening的正确方法。

其次,我注意到AI开始做出错误的动作。 Iterative Deepening是否有可能影响决策?

在使用Transposition表和Iterative Deepening时,我测量了算法速度的显着改进,但我真的不想牺牲AI质量来提高速度。

1 个答案:

答案 0 :(得分:3)

  

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

我认为这是正确的,但是如果你想要迭代加深来加速你的算法,你还应该添加移动排序。 这个想法是你使用较浅的搜索结果,并在下一次迭代中搜索最好的搜索结果。 这意味着您在alpha-beta算法中获得快速截止的可能性更大。

  

其次,我注意到AI开始做出错误的动作。可能吗   迭代深化会影响决策吗?

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