2015-11-06 60 views
1

爲了提高極小極大算法與α-β剪枝的表現,我已經實現了迭代深化:實現迭代深化

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質量的速度。

回答

2

首先,我不確定這是否是正確的方法來實現迭代 深化。

我認爲這是正確的,但如果你想迭代深化加快你的算法,你也應該添加移動排序。 這個想法是,你使用淺搜索的結果,搜索移動在下一次迭代時看起來最好。 這意味着您的alpha-beta算法中有更快的截止時間。

其次,我注意到,AI開始作出錯誤的舉動。迭代深化可能會影響決策嗎? ?

爲您的alpha-beta算法實現迭代加深不應該影響決策制定。 您的實施必須有問題,但沒有足夠的信息來說明它是什麼。