2

私は三目並べAIを作成しました。各ボードの状態を考えると、私のAIは移動する正確な場所を1つ返します。(動きが同じように正しい場合でも、毎回同じものを選択し、ランダムなものを選択することはありません)

また、AIで可能なすべてのプレイをループする関数を作成しました

つまり、これはAIが特定のボードに対して移動できるようにする再帰関数であり、次に他のプレイがすべての可能な移動を実行できるようにし、可能な移動ごとに新しいボードを使用して再帰関数を呼び出します。

これは、AIが最初に行われるときと、もう一方が最初に行われるときに行います...そしてこれらを足し合わせます。最終的には、勝ちは418回、引き分けは115回、負けは0回になります。

しかし今、私の問題は、どうすれば勝利の量を最大化できるかということです。この統計を何かと比較する必要がありますが、何と比較すればよいかわかりません。

4

3 に答える 3

5

ウィキペディアの記事を読みましたか?リンク

端子位置の数

ボードの状態のみを考慮し、ボードの対称性(つまり、回転と反射)を考慮した場合、ターミナルボードの位置は138になります。Xが毎回最初の動きをすると仮定すると:

  • (X)が91のユニークなポジションを獲得
  • (O)が44のユニークなポジションを獲得
  • 3つのユニークな位置が描かれています

可能なゲームの数

対称性を考慮せずに、可能なゲームの数は、255,168の可能なゲームにつながる正確な式を使用して手作業で決定できます。Xが毎回最初の動きをすると仮定すると:

  • 131,184の完成したゲームが(X)によって勝ち取られます
  • 77,904の完成したゲームが(O)によって勝ち取られました
  • 46,080の完成したゲームが描かれます

最初の段落から138のターミナルボード位置を生成できます

また

Yoはランダムなフィールドで十分なテストを実行し、結果をここのリンクからの統計と比較する場合があります

Win in 5 moves    1440     0.6%
Win in 6 moves    5328     2.1%
Win in 7 moves    47952   18.8%
Win in 8 moves    72576   28.4%
Win in 9 moves    81792   32.1%
Draw              46080   18.1%    
Total             255168 100.0%
于 2012-12-01T23:40:55.757 に答える
0

実際にブルートフォースでゲームを実行し、勝利戦略があるたびにAIが正しい動きを選択することを証明できます。次に、他のプレーヤーがランダムにプレイしていると仮定して、すべてのポジションについて、AIが勝利戦略を持つ可能性を最大化する動きを選択することを証明できます。可能性はそれほど多くないので、すべてを排除できるはずです。

また、他のプレーヤーが実際にはわずかにインテリジェントであると想定することで、可能性のスペースを大幅に減らすことができます。たとえば、常に動きをブロックしようとすると、すぐに勝利します。

于 2012-12-01T23:58:21.390 に答える
0

akaRemの答えに関する1つの問題は、最適なプレーヤーが全体的な分布のように見えるべきではないということです。たとえば、私が書いたばかりのプレーヤーは、ランダムにプレイしている誰かに対して約90%の確率で勝ち、10%の確率で同点になります。2人のプレーヤーがランダムにプレイしている場合にのみ、akaRemの統計が一致することを期待する必要があります。2人の最適なプレーヤーは常に同点になります。

于 2013-08-26T02:29:43.610 に答える