Einfacher Tic-Tac-Toe AI [geschlossen]

8

Ich weiß, das wurde oft gefragt, und ich habe anderen Code gesucht, aber das meiste von dem, was ich gesehen habe, scheint nicht makellos (verliert nie) und einfach, elegant und effizient. Und ich kann nicht entscheiden, welche Art von Lösung zu dieser Beschreibung passen würde.

Die Lösungen, die ich gesehen habe, sind:

(1) Minimax mit Alpha-Beta-Beschneidung verwenden. Das scheint mir kompliziert und möglicherweise unnötig für solch ein einfaches Spiel? Ist es wahrscheinlich zu kompliziert? Wenn nicht, müsste ich viel hart codieren oder missverstehe ich den Algorithmus?

(2) Schreiben Sie Ihren Code mit der Pseudocode-Strategie von Wikipedia ... Ich weiß nicht genau, wie ich das umsetzen soll. Zum Beispiel sagt es nur "check for forks". Würden die meisten dieser Überprüfungen mit einem Array von Gewinnlinien durchgeführt werden und prüfen, ob sie ausgefüllt werden oder so ähnlich? Wenn nicht, kann mir jemand Hinweise geben, welche Datenstrukturen oder grundsätzliche Tipps zur Umsetzung der im Pseudocode gestellten Checks hier zu finden sind: Ссылка . Ich habe auch Algorithmen gesehen, die einem 'X'-Quadrat und einem' O'-Quadrat einen numerischen Wert geben und dann die Summe verwenden, um den Gewinner zu bestimmen, aber ich sehe nicht, warum dies besonders nützlich ist.

Irgendwelche anderen vernünftigen Lösungen?

    
user1136342 01.04.2013, 23:19
quelle

2 Antworten

9

Um ehrlich zu sein, können die einfachsten Aufgaben im Umgang mit KI und Heuristiken sehr schnell kompliziert werden. Der Minimax-Ansatz wird Ihnen die besten Ergebnisse liefern und sollte angesichts der Tatsache, dass Sie KI implementieren, nicht allzu schwierig sein. Es ist ein etablierter Standard mit 2 Spieler Turn Logik.

Sehen Sie sich diese Website an ... sie gibt einen guten Einblick in die Tic-Tac-Toe KI und die Minimax-Implementierung.

Ссылка

Bearbeiten:

Wenn man bemerkt, dass jemand "Brute Force" geschrieben hat, wird dies ein ineffizienter Weg zur Implementierung der Heuristiken von minimax sein. Iteration durch jede mögliche Bewegung basierend auf dem letzten Zug des anderen Spielers ist nur eine andere Art, eine Heuristik zu implementieren .. außer dass es meiner Meinung nach mehr Arbeit zu sein scheint. Minimax-Implementierung wird einfach und effektiv sein.

Bearbeiten2:

"Einfachere Implementierung" ist etwas relativ. Minimax ist der Standard, und wie ich im Kommentar gesagt habe, können Sie die Heuristik so manipulieren, dass sie zu den Fällen passt, nach denen Sie suchen ...

Ich wünschte, ich könnte Ihnen den einfachsten Weg sagen, aber es gibt so viele Variablen, die von der Implementierung Ihres Spiels in Code abhängig sind.

Nehmen Sie die Vorschläge, sehen Sie sich die Implementierung des Spiels an und sehen Sie dann, was Ihnen am besten passt!

Was für eine Person einfach ist, könnte für eine andere Person kompliziert sein. Ich versuche nur, dir Optionen zu geben und minimax ist ziemlich solide. Vielleicht versuchen Sie es an Ihre Bedürfnisse anzupassen.

Bearbeiten3:

Lassen Sie es mich wissen, wenn Sie mehr Orientierung brauchen. Ich bin glücklich zu helfen.

    
AnxGotta 01.04.2013, 23:25
quelle
3

Verwenden Sie das Format Ihrer Wahl, um dieses Bild in eine Reihe von Bewegungen zu "encodieren". Die KI wird immer gewinnen oder binden.

Sie könnten es beispielsweise wie folgt codieren:

%Vor%

Dann können Sie beginnen mit:

%Vor%

Wo playerTurn ist etwas wie:

%Vor%     
Niet the Dark Absol 01.04.2013 23:29
quelle