为了提高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质量来提高速度。
答案 0 :(得分:3)
首先,我不确定这是否是实现迭代的正确方法 深化。
我认为这是正确的,但是如果你想要迭代加深来加速你的算法,你还应该添加移动排序。 这个想法是你使用较浅的搜索结果,并在下一次迭代中搜索最好的搜索结果。 这意味着您在alpha-beta算法中获得快速截止的可能性更大。
其次,我注意到AI开始做出错误的动作。可能吗 迭代深化会影响决策吗?
为您的alpha-beta算法实施迭代深化不应该影响决策制定。 您的实施一定有问题,但没有足够的信息来说明它是什么。