Ich weiß, das wurde viel 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 bin nicht in der Lage zu entscheiden, welche Art von Lösung zu dieser Beschreibung passen würde.Einfache Tic-Tac-Toe AI
Die Lösungen, die ich gesehen habe, sind:
(1) Unter Verwendung von Minimax mit Alpha-Beta-Suche. 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 bin mir nicht sicher, wie dies zu implementieren ist. 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 Hinweise zur Umsetzung der im Pseudocode gestellten Checks hier zu finden sind: http://en.wikipedia.org/wiki/Tic-tac-toe#Strategy. 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 das besonders nützlich ist.
Irgendwelche anderen vernünftigen Lösungen?
Für ein so kleines Spielbaum, nur Brute-Force es. Es würde keine Zeit brauchen, um jedes mögliche Spiel zu simulieren. – Dave
scheint nicht makellos (gewinnt immer) = scheint normal. Ich gewinne immer am Tic Tac Toe. oder im schlechtesten Fall. Jede intelligente Person wird dasselbe Ergebnis haben. Deshalb spielt niemand nach dem Alter von 10 Jahren Tic Tac Toe. Es macht keinen Spaß, wenn niemand gewinnt. –
Auch yeah, "immer gewinnen" ist keine gültige Anforderung (immer). Stellen Sie sich vor, Ihr Algorithmus spielt gegen sich selbst. – Dave