为了提高使用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。
首先,我不确定这是否正确的方式实施迭代深化。
其次,我注意到AI开始做出错误的举动。迭代深化是否有可能影响决策?
在处理换位表和迭代深化时,我测量了算法速度的显著提高,但我并不想为了速度而牺牲AI质量。
发布于 2016-01-12 21:53:11
首先,我不确定这是否正确的方式实施迭代深化。
我认为这是正确的,但如果您想要迭代深化以加快您的算法,您还应该添加移动排序。其思想是,您使用的结果从浅层搜索,搜索移动似乎最好的第一次在下一次迭代。这意味着一个更好的机会,在您的α-β算法快速削减。
其次,我注意到AI开始做出错误的举动。迭代深化是否有可能影响决策?
为您的alpha-beta算法实现迭代深化不应影响决策。您的实现肯定有问题,但是没有足够的信息来说明它是什么。
https://stackoverflow.com/questions/33566977
复制相似问题