回答:
tl; dr:
これらのアルゴリズムはいずれも現代の作業には実用的ではありませんが、教育的に開始するのに適した場所です。
ベアミニマックス検索よりも常にアルファベータ枝刈りを使用することをお勧めします。
有用なヒューリスティックを思い付くことができる場合は、何らかの形のヒューリスティックガイド検索を使用することをお勧めします。有用なヒューリスティックを思い付くには、通常、多くのドメイン知識が必要です。
優れたヒューリスティックが不足している場合、計算リソースが限られている場合、およびミスが実世界の結果を上回ることがない場合は、モンテカルロツリー検索を使用することをお勧めします。
詳細:
ミニマックス検索では、あまり賢くしようとはしません。標準の動的プログラミングアプローチを使用するだけです。ゲームの終わりに近づいた場合、差の動きの値を把握するのは簡単です(ゲームは次の動きで終わるので、あまり先を見る必要はありません)。同様に、対戦相手がゲームの最後の動きで何をするかを知っていれば、最後の2番目の動きで何をすべきかを簡単に把握できます。事実上、2番目の最後の動きをより短いゲームの最後の動きとして扱うことができます。その後、このプロセスを繰り返すことができます。このアプローチを使用すると、標準の大規模なフォームゲームで最高の戦略が明らかになりますが、すべての可能な動きを考慮する必要があります。これは、最も単純なゲーム以外では実行不可能です。
アルファベータ枝刈りは、Minimax検索の厳密な改善です。いくつかの動きが他の動きより明らかに悪いという事実を利用しています。例えば、チェスでは、たとえあなたがそのポジションから他のことをすることができたとしても、私をチェックメイトにする機会を与えるような動きを考慮する必要はありません。動きが負けにつながる可能性があることがわかったら、その時点から他に何が起こるかを気にするつもりはありません。他のものを見に行きます。このアルゴリズムは正しい結果をもたらすことも確実であり、高速ですが、実際にはほとんどの動きを考慮する必要があります。
これらの種類のゲームを正確に解決するための極端な計算コストを回避するには、2つの一般的な方法があります。
ヒューリスティックを使用します(A *検索は教育学的な目的のための通常のアルゴリズムですが、静止検索は2プレイヤーゲームでも同様のアイデアです)。これは、ゲームの状態の値の推定値を提供する単なる関数です。ゲーム内のすべての動きを考慮する代わりに、前方の有限距離への動きを考慮し、ヒューリスティックの値を使用して、到達した状態の値を判断できます。ヒューリスティックが一貫している場合(本質的に:常に状態の品質を過大評価している場合)、これにより正しい答えが得られますが、実際には非常に高速化されます。
ロールアウトを使用します(モンテカルロツリー検索など)。基本的に、すべての動きを考慮するのではなく、ランダムに行動するプレイヤー間で数千のシミュレートされたゲームを実行します(可能なすべての動きを考慮するよりも高速です)。それから始まるゲームの平均勝率に等しい状態に値を割り当てます。これは正しい答えをもたらさないかもしれませんが、ある種のゲームでは、確実に動作します。多くの場合、単独で使用されるのではなく、より正確な技術の拡張として使用されます。
NBこれら3つのアルゴリズムのみを選択した理由は、それらを理解するのに時間を費やしたためです。ちょっとした調査から、これらのアルゴリズムは基本的にミニマックスアルゴリズムに織り込まれていることがわかりました。したがって、1つを理解できれば、他の2つは適切な位置に収まります。
このコンテキストを考えると、Minimaxから始めることをお勧めします。3つのアルゴリズムのうち、Minimaxが最も理解しやすいです。
他の回答で他の人が言及したように、アルファベータはミニマックスに加えて厳密な改善です。Minimaxは基本的にAlpha-Beta実装の一部であり、Alpha-Betaを十分に理解するには、とにかくMinimaxを十分に理解することから始める必要があります。Minimaxを理解して実装した後に時間が残っている場合は、後でAlpha-Betaに進み、Minimaxの上に構築することをお勧めします。まだMinimaxを理解していない場合は、アルファベータから始めても意味がありません。
モンテカルロツリー検索は、実際には、深く理解するために、おそらくもう少し高度で複雑です。過去10年ほどで、MCTSは他の2つよりもはるかに人気が高まっているため、その観点からMCTSを理解することは「有用」である可能性があります。
MinimaxとMCTSの間の接続は、MinimaxとAlpha-Betaの間の接続より直接的/明白ではありませんが、少なくとも概念レベルでは接続が残っています。MCTSに飛び込む前に、まずMinimaxを十分に理解しておくことは有益だと思います。特に、Minimaxとその欠陥/弱点を理解することは、有用なコンテキストを提供し、MCTSが「必要」/人気となった理由を理解するのに役立ちます。
結論として、私の意見では: