Stellen Sie den computer nie verlieren Tic-Tac-Toe
Arbeite ich an ein einfaches Spiel von Tic Tac Toe code für C. ich habe die meisten der code fertig, aber ich will, dass die KI nie zu verlieren.
Habe ich gelesen über den minimax-Algorithmus, aber ich verstehe es nicht. Wie kann ich die verwenden diesen Algorithmus, um den computer zu aktivieren, um entweder Gewinnt oder Unentschieden, aber verlieren Sie nie?
haben Sie versucht jeglichen code? stellen Sie nur sicher, dass in der minimax-Algorithmus, computer, wählen Sie immer die beste Strategie.
Zeig bitte den code, den Sie versucht haben. Wir sind nicht hier um deine Hausaufgaben zu machen!
Wenn Sie lieber schreiben würde der Algorithmus selbst, können Sie finden xkcd.com/832 zu nutzen. Verwendet eine variation dieses Diagramm für eine Reversi-Spiel.
Wow, das ist nett, ich werde versuchen, es in code
Zeig bitte den code, den Sie versucht haben. Wir sind nicht hier um deine Hausaufgaben zu machen!
Wenn Sie lieber schreiben würde der Algorithmus selbst, können Sie finden xkcd.com/832 zu nutzen. Verwendet eine variation dieses Diagramm für eine Reversi-Spiel.
Wow, das ist nett, ich werde versuchen, es in code
InformationsquelleAutor C_Intermediate_Learner | 2013-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Umgang mit dieser Art von problem, ist eines der Erkundung möglicher Zukünfte. In der Regel (für ein Schach-oder Entwürfe AI), die Sie in Betracht ziehen futures eine bestimmte Anzahl von Zügen Voraus sondern weil tic tac toe Spiele sind so kurz, die Sie erkunden können, um das Ende des Spiels.
Konzeptionelle Umsetzung
So erstellen Sie eine verzweigende Struktur:
Dann, geht aus der am verzweigten Ende (das am weitesten in der Zeit vorwärts) der Spieler, dessen Spielzug es ist (AI oder user), wählt die Zukunft das beste für Sie (gewinnen, verlieren oder Unentschieden) an jedem verzweigungspunkt. Dann wird es über die Hände an den Spieler weiter oben im Baum (näher an der Gegenwart); jedes mal, wenn die Auswahl der besten Zukunft für den Spieler, dessen imaginäre wiederum ist es, bis schließlich Sie an der ersten Abzweigung Punkt, wo die AI sehen können futures, die spielen hin, es zu verlieren, zeichnen und gewinnen. Es wählt eine Zukunft, in der es gewinnt (oder wenn nicht verfügbar, zieht).
Tatsächlichen Implementierung
Beachten Sie, dass konzeptionell ist dies, was geschieht, aber es ist nicht notwendig, um den ganzen Baum, dann urteilen. Sie kann genauso gut arbeiten, obwohl der Baum immer an den entferntesten Punkten in der Zeit und die Wahl dann.
Hier, dieser Ansatz funktioniert gut mit einer rekursiven Funktion. Jede Ebene der Funktion, die abfragt, allen seinen Zweigen; eine Weitergabe der möglichen Zukunft, die zu Ihnen und gibt -1,0,+1; Auswahl der besten Punktzahl für den aktuellen player an jedem Punkt. Die top-level-wählt das verschieben-ohne wirklich zu wissen, wie jedes der Zukunft läuft, und wie gut Sie geklappt.
Pseudo-code
Ich nehme an, in diesem pseudo-code, der +1 ist AI zu gewinnen, wird 0 Zeichnung, -1 Benutzer verlieren
Diese pseudo-code ist nicht egal, was der Ausgangspunkt Bord ist (Sie rufen Sie diese Funktion auf jeden KI-Zug mit dem aktuellen board) und nicht wieder was Weg die Zukunft nehmen (wir können nicht wissen, wenn der Benutzer das Spiel optimal, so dass diese Informationen nutzlos ist), aber es immer wählen, wird der Zug, der geht in Richtung der optimalen Zukunft für die KI.
Überlegungen für größere Probleme
In diesem Fall, wo Sie erforschen, um das Spiel zu Ende ist, ist es offensichtlich, das die bestmögliche Zukunft ist (gewinnen, verlieren oder Unentschieden), aber wenn man nur gehen (zum Beispiel) fünf Züge in die Zukunft, müsste man eine Möglichkeit finden, zu bestimmen, dass; im Schach "oder" Entwürfe " Stück-score ist der einfachste Weg, dies zu tun mit dem Stück position eine nützliche Erweiterung.
InformationsquelleAutor Richard Tingle
Ich habe so ein Ding vor etwa 5 Jahren. Ich habe ein Forschung. In
tic tac toe
es dauert nicht lange, Sie müssen nur vorbereiten, - Muster für die ersten zwei oder drei Zügen.Müssen Sie prüfen wie zu spielen:
Gibt es 9 verschiedene Startpositionen:
Aber eigentlich nur 3 von Ihnen Verschieden sind (andere sind gedreht).
So nach, dass Sie sehen, was getan werden sollte, nach etwas bestimmten bewegt, ich glaube, Sie brauchen nicht alle algorithmen in diesem Fall, weil
tic tac toe
Ende ist die Bestimmung durch die ersten Schritte. Also in diesem Fall benötigen Sie ein paarif-else
oderswitch
Aussagen undrandom
generator.Ich habe zu tun, und denken Sie daran, dass Benutzer dumm bewegt sich wurde die Handhabung mit
default
imswitch
.Also der minimax-Algorithmus verhindert werden können? Wenn ja, ist das toll, weil ich habe eine harte Zeit, es zu verstehen
Was meinst du mit 'Skript'
Wahrscheinlich in allen Fällen schwierig, algorithmen verhindert werden kann, aber in einigen anderen Situationen ist es besser zu nutzen-Algorithmus. Wenn Sie brauchen, nur
tic tac toe
so dass Sie tun können, ohne Erkennung-Algorithmus, wenn es ist nur ein Erster Schritt zu etwas größer, werden Sie brauchen, sowieso, so dass Sie besser versuchen, es zu verstehen.InformationsquelleAutor ST3
tic tac toe
gehört zur Gruppe der Spiele, die nicht verloren gehen, wenn Sie wissen, wie zu spielen, so dass für solche Spiele, die Sie nicht brauchen, um Bäume und modifizierte algorithmen zur Sortierung. Zu schreiben, wie Algorithmus, den Sie brauchen nur ein paar Funktionen:CanIWin()
um zu überprüfen, ob computer hat 2 in Folge und möglich zu gewinnen.ShouldIBlock()
um zu überprüfen, ob der Spieler nicht 2 in Folge und brauchen, um es zu blockieren.Diese beiden Funktionen müssen aufgerufen werden, in dieser Reihenfolge, wenn es zurück
true
Sie brauchen, entweder zu gewinnen oder nicht zu lassen, Spieler gewinnen.Nach, dass Sie brauchen, um andere Berechnungen für unterwegs.
Einer exklusiven situation ist, wenn der computer beginnt das Spiel. Sie müssen wählte die Zelle gehört, die größte Menge von verschiedenen Richtungen (es gibt 8 von Ihnen - 3-horizontale, vertikale und 2 diagonalen). In solchen Algorithmus computer werden immer wählen Sie "Mitte", weil es 4 Richtungen, sollten Sie kleine Möglichkeit zu wählen, die zweite beste option, um Spiel ein wenig attraktiver.
So, wenn Sie in situation, wo einige ausgewählte Teile des Vorstandes und computer zu verschieben, müssen Sie beurteilen jede freie Zelle. (, Wenn die erste oder zweite Funktion zurückgegeben
true
haben Sie, um eine Aktion vor dem erreichen dieser Stelle!!!). So bewerten Zelle, die Sie brauchen, zu zählen, wie viele open-Richtungen Links auf jede Zelle, auch Sie blockieren müssen mindestens einen Gegner Richtung.Danach haben Sie ein paar mögliche Zellen, um Ihre Marke. So müssen Sie prüfen, für die notwendigen Schritte-Folge, da haben Sie ein paar Optionen und es kann sein, dass einer von Ihnen führen, Sie zu verlieren. So nach, dass Sie eingestellt haben und Sie können nach dem Zufallsprinzip wählen Sie " verschieben, oder wählen Sie die eins mit der größten Punktzahl.
Ich muss sagen, ähnliche Sache, wie gesagt am Anfang des Beitrags. Größere Spiele haben keine perfekte Strategie und, sagen wir Schach sind viel auf der Grundlage der Muster, sondern auch auf zukunftsorientierte Strategie (für so eine Sache ist mit patricia trie). Also zu summieren, müssen Sie nicht schwierig, algorithmen, nur ein paar Funktionen zu zählen, wie viel Sie gewinnen und der Gegner verliert mit bewegen.
InformationsquelleAutor ST3
Machen, ein Tochterunternehmen Programm zur Vorhersage der Fälle, mit denen der Benutzer gewinnen können. Dann kann man sagen, Ihr ki zu tun, was der Benutzer tun muss, um zu gewinnen.
InformationsquelleAutor aniruddha