私は同僚から、(従来の 3 つではなく) 5 列のゲームをプレイする Tic Tac Toe ゲーム AI の作成に挑戦されました。私の最初の考えは、「スコアボード」を作成することです。つまり、ゲーム内のすべてのセルが 0 から無限のスコアを獲得します。AI が形を見つけ、どの場所にどれだけの価値があるかを判断し、細胞にスコアを付けます。最終的に、最高得点のセルが選択されます。
この問題にアプローチするより良い方法はありますか?
私は同僚から、(従来の 3 つではなく) 5 列のゲームをプレイする Tic Tac Toe ゲーム AI の作成に挑戦されました。私の最初の考えは、「スコアボード」を作成することです。つまり、ゲーム内のすべてのセルが 0 から無限のスコアを獲得します。AI が形を見つけ、どの場所にどれだけの価値があるかを判断し、細胞にスコアを付けます。最終的に、最高得点のセルが選択されます。
この問題にアプローチするより良い方法はありますか?
5x5 の Tic-Tac-Toe は、時間の制約によっては、ボードの対称性に精通している場合でも、直接解くのに十分小さいかもしれません。奇妙なことに、私は昨夜、この質問のために一般的なテクニックの説明を書きました:
Windows Phone のボード ゲーム用に単純な AI をコーディングするにはどうすればよいですか?
そうでない場合でも、それは良い出発点です。私にとって次の最も明白なことは、ボード評価関数を変更し、時間の制約で実行可能なツリーの深さだけを検索することです。アイデアは、人間として、強い立場と弱い立場が何であるかについていくつかのアイデアを持っているかもしれないということです. したがって、推測として、5 回連続で勝利することがわかっているので、X の勝利を +5、O の勝利を -5 と割り当てます。勝つ方法の 1 つは、それよりも前に 4 つ連続で取得することです。つまり、X が 4 つ連続していれば、4 の価値があるかもしれません。また、O が 4 つ連続していれば、-4 の価値があるかもしれません。ツリーを下まで検索できない場合は、ミニマックス手法を使用して可能な限り検索し、強い位置に向かって進んでいると確信するという考え方です。
そのボード評価機能は単なる例です。優れたボード評価関数を考え出すのは難しい場合があり、私が説明したものにはいくつかの明らかな詳細が欠けています。
もう 1 つの試みは、遺伝的アルゴリズムとニューラル ネットワークを使用してボード評価関数を進化させることです。ここでのアイデアは、ボードの位置をニューラル ネットワークにフィードし、ボードの評価を行い、上で説明したトーナメント スタイルの手法に従ってプレイさせることです。次に、トーナメント ラウンドの後、勝者と敗者から新しいニューラル ネットワークが (遺伝的アルゴリズムによって) 作成されます。ボード評価機能は自然に進化します。