まず、移動9が常に強制されていることを確認する必要があります。ボードには空のマス目が1つだけあります。7回の移動後、正確に3つの状況が発生する可能性があるため、移動も8回の強制と見なすことができます。
O
次の動きで勝つことができます、その場合それは勝ちます
X
残りの2つの正方形のいずれかにを置くと、のゲームに勝ちますX
。この場合O
、次の動きに関係なく負けます。
X
勝利への道は0または1つあり、その場合O
はブロックして引き分けを強制します
これは、最大7回の移動でゲームが終了することを意味します。
また、中央、コーナー、または側面の3つの開口部の動きしかないことにも注意してください。ボードは「標準的な」開口部(左上隅または上面の中央)に一致するように回転できるため、4つのコーナーまたは側面のどちらを使用するかは関係ありません。
これで、状態分析コードを作成できます。3つの可能な開口部のそれぞれから始めて、移動するまでに開いているすべての正方形を使用して、最大6つの追加の移動をバックトラックして検索します。各移動後、位置を分析して、勝ったかどうX
かを確認します。O
マークX
はWxとして勝ち、O
Woとして勝ちます。残りのポジションは未定です。
WxまたはWoの後に位置を探索しないでください。前のステップに戻って、対応する側の勝利を報告してください。
7番目の動きに到達したら、位置を静的に分析して、それが上記の3つの状況のいずれかに該当するかどうかを判断し、位置にWx、Wo、またはDrawのマークを付けます。
ここで最も重要なステップに移ります。N-1
プレーヤーによる移動に戻るときp
、
- 次のレベルのすべての位置がWpになるような動きを試みる場合は、現在の位置もWpと宣言します。
- あなたが試みるすべての動きが対戦相手の勝利につながる場合、現在の位置を対戦相手の勝利と宣言します
- それ以外の場合は、現在の位置をドローと宣言し、前のレベルに戻ります。
これを正しく行うと、3つのオープニングポジションすべてがドローとして分類されます。あなたは3つの動きの後にいくつかの強制的な勝利を見るはずです。
この手順を実行すると、各位置がWx、Wo、またはDrawとして分類されます。AIが、Wpとして分類された位置でプレーヤーp
に勝利をもたらした場合、または引き分けとして分類された位置で引き分けを獲得した場合、AIは完璧です。一方、AIがp
引き分けのみを取得するWpとして静的に分類される位置がある場合は、AIエンジンを改善する必要があります。
追加の読み物: Tic-Tac-Toeの可能なゲームを数える方法を説明する
この記事
で、ゲームに関する追加の洞察を見つけることができます。