为了通过 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 质量。