2017-01-20 21 views
1

私は、ドットとボックスを再生するプログラムを作成しています。反復的な深化スキームのヒューリスティックな値に基づいて、アルファベータで考える動きを順序付けすることで時間効率を上げたいと考えています。基本的には、検索ツリーに入り、繰り返しごとに深度を増やし、各ノードをalphaBetaで評価したいと考えています。各連続反復において、ノードを考慮する順序は、前の反復からのノードのヒューリスティックな値によって決定される。しかし、私はこれがどのように実装されるのか理解するのが難しいです。誰かが標準的なalphaBetaプログラムが反復的な深化を使って検索する方法に擬似コードを提供できますか?ありがとうございました!アルファベータプルーニングで反復深化を実装する方法

答えて

1

まあ、Iterative Deepeningは実装が難しくありません。重要である何

for(int distance = 1; distance < MAX_DISTANCE && !outOfTime(); distance++) { 
    bestmove = alphaBetaAtRoot(position, distance); 
} 
play(bestmove); 

は、しかし、です:あなたはすでに検索を実行する機能を持っている場合は、のは、あなただけの距離を1から始めて、それを繰り返し呼び出して一定の距離で検索を実行alphaBetaAtRootを、それを呼びましょうTransposition Tableを実装します。そうしないと、各検索がゼロ知識で開始されるため、より良い移動順序の恩恵を受けることはありません。

+0

ありがとうございました!私は移調テーブルの必要性を理解していませんでした。私はもう少し読んだことがあり、これは多くの助けになりました。 –

0

私は以下のリンクを発見しました:https://github.com/nealyoung/CS171/blob/master/AI.java 私はあなたに役立つことを願っています。

+0

ようこそ。リンクのみの回答は、このサイトの基準を満たしていないことに注意してください。 http://stackoverflow.com/help/how-to-answer –

+0

Wow!を参照してください。どうもありがとうございます! –

関連する問題