Künstliche Intelligenz –
Programmierung
Author D. Selzer-McKenzie
Spieltheoretische
Untersuchung
1 Das Spiel ,Vier gewinnt"
Dies soll eine kurze Einführung in das Spiel
,,Vier gewinnt" werden in dem die Regel vorgestellt und eine für diesen
Text eindeutige Nomenklatur eingeführt.
1.1 Die Regeln von ,Vier
gewinnt"
„Vier gewinnt" ist ein
zwei Personen Spiel, bei dem jeder der Spieler 21 identische Spielsteine
bestitz. In der Originalversion haben diese die Farben gelb und rot.
Das Spiel wird auf einem
rechteckigen Spielfeld mit sieben Spalten und 6 Zeilen gespielt. Die
Spielsteine werden von den beiden Spielern abwechselnd in eine der Spalten
geworfen.
Wenn
ein Spieler einen Spielstein in eine Spalte wirft, fällt dieser in die letzte
unbesetzte Zeile. Sind in einer Spalte alle 6 Zeilen besetzt so kann dort kein
Stein mehr hineingeworfen werden. Im weiteren Verlauf nennen wir das werfen
eines Steins einen Zug machen.
Im
allgemeinen gibt es keine Regeln welche Farbe bzw. welcher Spieler beginnt, der
Einfachheit halber werden wir hier davon ausgehen, dass immer der Spieler mit
den gelben Steinen starten darf, ähnlich Schach oder Dame bei denen die weißen
Steine stets beginnen.
Beide
Spieler werden nun im Verlauf des Spiels versuchen vier zusammenhängende
Spielsteine im Gitter zu positionieren. Dies ist entweder in vertikaler,
horizontaler oder diagonaler Position möglich. Der erste Spieler der dies
geschafft hat gewinnt das Spiel. Sind alle 42 Spielsteine gespielt und es hat
kein Spieler geschafft vier zusamm-hängende Steine zu erreichen, so endet das
Spiel unentschieden.
Die nachfolgenden Diagrammen zeigen
einige Situationen in denen Gelb gewinnt.
•
•
•
|
•
•
•
•
|
Abbildung
2: Diagramm 1.1.2
|
|
|
|
|
|
|
|
|
Abbildung 3: Diagramm
1.1.3
Und nun eine Spielsituation in der das Spiel
unentschieden ausgeht.
|
|
|
•
|
|
|
|
•
|
•
|
•
|
|
•
|
•
|
•
|
|
|
|
•
|
|
|
|
•
|
•
|
•
|
|
0
|
•
|
•
|
|
|
|
•
|
|
|
|
•
|
•
|
•
|
|
•
|
•
|
•
|
Abbildung 4:
Diagramm 1.1.4
1.2 Nomenklatur
Um es nun einfacher zu machen die verschiedene Spielsituationen und
Spielzüge zu beschreiben führen wir für das Spielraster eine Indizierung ein.
Ähnlich wir
beim Schach benennen wir die 7 Spalten mit von links nach rechts mit „e bis „g"
und die 6 Zeilen mit „1" bis „6". Nach dieser Nomenklatur wäre z.B.
das unterste Feld in der Mitte dl.
Ebenso ist es Möglich das Spiel, bzw. die Züge so zu beschreiben. Das
Beispiel in Diagramm 2.1 sähe wie folgt aus, wobei die Nummer zu Beginn die
Spielrunde angibt:
1.
dl, d2
2.
cl, d3
3.
el, bl
4.
fl, gelb gewinnt.
In gleicher Weise ist es möglich die Gewinngruppe, also die vier Steine
welche eine Linie Bilden anzugeben.
Wir verdeutlichen dies wieder an Diagramm 2.1, wo die Gewinngruppe
cl,d1,el,f1 ist.
Da es sich
bei der Gewinngruppe immer um eine Linie handelt würde es sogar ausreichen nur
Anfangs- und Endpunkt zu nennen.
1.3 Strategische Vorgaben für die Spieler
Vorweg wollen wir einige Verhaltensregeln für die Spieler festlegen, welche
zwar logisch sind, doch in eigenen Annahmen im folgenden vorausgesetzt werden.
Für die Spieler sollen
Annahmen gelten:
1.
Wenn man gewinnen kann
so spielt der Spieler seinen Gewinnzug
2.
Hat der Gegner die
Möglichkeit zu gewinnen verhindert man es
3. Bevor man den Gegner
gewinnen lässt, gibt man seine eigene Gewinnposition auf
Mit
diesen Annahmen soll im Prinzip nur ein unlogisches Verhalten von vorne herein
ausgeschlossen werden, um Äste im Baum aszshließen die nie gespielt werden
würden. Des weiteren gehen wir davon aus, dass die Spieler keine Fehler machen,
also verhin-derbare Gewinnditivationen des Gegners übersehen, oder ihm
unbewusst welche zu ermöglichen. Damit ist gewährleistet, dass man von
„perfekten" Spielern ausgehen kann und wirklich nur solche Positionen
gespielt werden, die auch dann gespielt werden wenn man den vollständigen
Spielbaum kennen würde.
Es handelt sich hierbei
sicher um Einschränkungen gegenüber dem „normalen" Spiel in der Realität,
aber Spieltheoretisch macht es keine Unterschied.
2 Spieltheoretische
Herangehensweise
In diesem Kapitel wollen
wir nach den Vorgaben aus der Vorlesung an das Spiel herangehen, also den
Spielbaum und die Historienmenge betrachten und die Schwierigkeiten dieser
Herangehensweise aufzeigen.
2.1 Probleme der
Spieltheorie bei Komplexen Spielen
Da es sich bei „4
Gewinnt" um ein 2 Personen Nullsummenspiel mit vollständiger Information
handelt wäre es bei der Analyse, nach unserer Vorlesung, die
Rückwärts-induktion zu benutzen. Hierzu wäre aber ein vollständiger Spielbaum
nötig, welcher bei diesem Spiel enorm groß wäre.
Diagramm 1.2.1 zeigt die erste Runde also 2
geworfene Steine.
Abbildung 5: Diagramm
1.2.1
Hier
sehen wir das nach nur einer Runde bereits 7 • 7 = 49 Äste, also mögliche Ergebnisse
haben. Der Baum würde also sehr groß und für eine vollständige Analyse zu
kompliziert.
Eine Möglichkeit ist es
den Spielbaum zu vereinfachen, also Nutzlose Züge wegzulassen, oder aber auch
gewissen Positionen einen Wert zuzuweisen und so nur die y%Tert-vollsten"
Züge zu machen. Letzter Methode werden wir in Abschnitt 1.2.3 versuchen, zuvor
jedoch betrachten wir den gesamten Spielbaum und versuchen abzuschätzen wie
groß er ist, wie viele Spielverläufe es also geben kann.
Versuchen wir nun abzuschätzen
wie groß der Spielbaum ist, wie viele Äste wir untersuchen müssten:
Wir wollen also eine obere
Grenze für die Anzahl der Knoten finden und so herausfinden wie viele
Spielsituationen es gibt.
Eine Möglichkeit ist es
über die Kombinatorik an das Problem heranzugehen. Hierzu sollten wir zunächst
unterscheiden welche Spielsituationen es geben kann und ob sie zulässig sind
oder nicht. Ganz banal ist es man nimmt an, dass es 6 • 7 = 42 Felder also
mögliche Positionen gibt, die immer einen von drei Zuständen haben, nämlich
gelb, rot oder leer. Daraus könnte man schließen das es 342 = 1,
09419. 1020 Spielsiti-uationen also Knoten gibt. Dies ist natürlich
eine sehr grobe Abschätzung da es eine Vielzahl von „illegalen" also
unmöglichen Spielsitationen gibt.
Wir müssen
also Situationen identifizieren die nicht möglich sind. Es gibt in zwei
Möglichkeiten die ausgeschlossen erden müssen, erstens das die roten Steine
nach einer Runde nur auf Plätzen liegen die erreicht werden können also z.B
nicht wie in Abbildung 6.
Abbildung 6: Diagramm
1.2.2
Hier ist leicht zu sehen
das Rot begonnen haben müsste um diese Position zu erreichen, was wir aber in
der Einführung ausgeschlossen haben.
Welche Positionen sind also nach jeder Runde
zulässig? Intuitiv ist es klar, was nicht passieren darf eine Zahl, bzw. eine
mathematische Formulierung dafür zu finden ist nicht so einfach.
Auch für den anderen Fall, das auftreten
mehrerer „Vierer" also Gewinnpositionen nicht ohne weiteres Möglich.
Wir
versuchen dennoch eine bessere Abschätzung zu finden, nehmen hierbei aber
zumindest in Kauf mehrere Vierer zu bekommen. Diese Grenze versuchen wir über
den Spielbaum zu identifizieren, indem wir die Knoten einfach Iterieren.
Im folgenden
vernachlässigen wir also, dass das Spiel nach weniger wie 21 Runden also 42
Zügen zu Ende ist.
Wir wissen, dass in den ersten 3 Runden also
ersten 6 Zügen jeder Spieler immer 7 Möglichkeiten hat, da keine Reihe bis
Oben gefüllt sein kann also haben wir 76 = 117.649 Knoten.
Führen
wir das weiter haben wir:65 + 64.7+ 63. 72+62. 73+6274+6-75+76 = 332.738 Mögliche Züge pro erstem Abzweig, also in
Summe 7 • 332.738 = 2.328.166. Man erkennt schnell das man diese Menge auf
diese Weise nicht gut Abschätzen kann. Selbst wenn man annimmt, das man immer 7
Möglichkeiten hat pro Zug kommt man auf 721 = 5, 5845641 • 1017, was gegenüber der gröbsten Abschätzung eine Verbesserung
von nur 1, 088604433 • 10' wäre. Wir stellen also fest, dass man auf diese
Weise keine bessere Schranke finden kann. Deshalb greifen wir hier auf die
Arbeit von Allis zurück, welche unter Hinzunahme aller „illegaler"
Positionen eine Schranke von 7, 1 • 1013 möglichen Positionen
über einen Computer errechnen lies.
Obiger
Versuch zeigt schnell, dass man mit der klassischen mathematischen
Herange-hensweise kaum eine Möglichkeit hat solche Spiele zu lösen. Welche
anderen Optionen hat man aber um komplexe Spiele zu lösen, ganz klar die Hilfe
von Rechner in Anspruch zu nehmen. Aber auch hier stößt man schnell auf
Probleme, denn Rechenzeit ist ersten teuer wenn es um so komplexe Berechnungen
geht und andererseits wollen wir aus der Erkenntnis natürlich auch einen Nutzen
ziehen, also für unser nächstes Spiel einen Vorteil für uns haben. Lange
Rechendauer ist aber in jedem Fall kontraproduktiv da der Gegner nicht ewig
auf unseren Zug warten wird bzw. Verdacht
schöpft und nicht gegen
uns spielt.
Dies ist in allen Spielen dieser Art, Schach, Dame, Mühle
usw.., aber auch in den klassischen Glücksspielen wie Poker etc. ein Problem.
Was also tun um besser zu spielen als andere und dennoch schnell und gute
Verfahren zu haben.
Die Antwort ist bestimmte Situationen
auszuwerten und den Computer oder auch dem Menschen so die Chance geben mit nur
wenigen Zügen im voraus besser zu sein.
2.2 Analyse einzelner Spielsituationen
Wie wir gerade gesehen
haben ist es nicht möglich das Spiel ,yon Hand" komplett zu analysieren
oder „perfekt" zu spielen. Und auch mit Hilfe von Computern ist es sehr
schwer den ganzen Spielbaum in einer ,yernünftigen" Zeit durch zurechnen,
was die Programmierung als Spiel erschwert. Wir müssen also sowohl für den
Menschen als auch den Computer die Spieltiefe, also die Anzahl der Situationen
die im voraus mit bedacht werden verringern.
Man betrachtet also an
Stelle des ganzen Baumes nur noch wenige Schritte bzw. Knoten im voraus.
Deshalb ist es wichtig bestimmten Positionen eine Wertigkeit zu geben, also
einen Nutzen zuzuweisen, auch ohne alle weiteren möglichen Knoten zu kennen.
Hierzu zeigen wir das es gerade in Hinblick
auf das Ende des Spiels gute und schlechte Positionen gibt und man durchaus
eine Taktik finden kann um die Wahrscheinlichkeit des Gewinnens zu erhöhen.
Außerdem gehen wir auf das Problem des „Zugzwanges" ein und wie man ihn
für sich nutzen kann.
2.2.1 Konkrete
Spielsituationen und deren Nutzen
Wir wollen zuerst eine Situation betrachten
an der wir sehen können das es gute und schlechte Gewinnmöglichkeiten gibt.
Betrachten wir hierzu das Diagramm 1.2.2.
•
|
|
•
|
•
|
•
|
|
|
•
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•
|
|
|
|
|
|
|
•
|
|
•
|
•
|
•
|
|
|
•
|
|
|
|
0
|
|
|
Abbildung 7: Diagramm
1.2.2
Um an diese Stelle des Spiels zu gelangen wurden
folgende Spielzüge gespielt:
1. dl, d2
2. d3, el
3. d4, e2
4. d5, d6
5. cl, c2
6. c3, al
7. c4, a2
8. c5, c6
9. e3, a3
10.
a4, a5
11.
e4, a6
12.
e5, e6
Und da eine gerade Anzahl von Steinen
gespielt ist, ist der gelbe Spieler an der Reihe den nächsten Zug zu machen.
Wir
sehen ganz leicht, dass es sowohl für Gelb als auch für Rot Möglichkeiten gibt
zu gewinnen. Gelb gewinnt mit den Positionen b2, b3, b4, b5, f3, f4 und f5, Rot
hingegen mit b2, b6, f2 und f6. Und obwohl das Spiel noch nicht beendet ist,
wird sollte beide Spieler den strategischen Regeln aus der Einführung folgen,
Rot gewinnen
Warum
ist das so?
Spielen wir das Spiel
doch einfach einmal weiter. Gelb wird nicht in die Spalten b oder f werfen, da
Rot gewinnen würde, also bleiben diese Reihen unbesetzt, Rot wiederum spielt
ebenfalls nicht in diese Spalten, da er seine Position vernichten würde. Folglich
wird Spalte g aufgefüllt. Da diese Reihe aber 6 Zeilen hat ist sie nach eine
geraden Anzahl von Zügen ebenfalls und es ergibt sich die Situation in Diagramm
1.2.3. nach den Zügen:
13. gl, g2
14. g3, g4
15. g5, g6
•
|
|
•
|
•
|
0
|
|
•
|
•
|
|
|
|
|
|
|
|
|
|
|
|
|
•
|
•
|
|
|
|
|
|
|
•
|
|
•
|
•
|
0
|
|
•
|
•
|
|
|
|
•
|
|
|
Abbildung 8: Diagramm
1.2.3
Nun
haben wir die Situation, dass Gelb gezwungen ist in die Position bl oder fl zu
spielen, und Rot gewinnt. Das Spiel war so gesehen also schon nach den ersten
zwölf Runden zu Ende und Gelb hatte verloren. Dies führt nun zur Frage welche
Gewinnpositionen sind gut, kommen also zum Tragen und welche nicht, welchen
sind also von Nutzen und Erstrebenswert. Ebenso sieht man hier das Phänomen des
„Zugzwang", welchen wir später noch genauer untersuchen.
Bevor
wir jedoch genauer auf den Nutzen von Gewinnpositionen eingehen wollen wir
heraus finden wo Gelb den Fehler gemacht hat und ab wann das Spiel verloren
war, bzw. welchen Zug Gelb besser gespielt hätte.
Gehen wir hierzu züruck in
Runde 6, und habe Gelb bereits gespielt. Die bisherigen Züge ergeben folgendes
Bild:
Schon hier lässt sich die Niederlage nicht
mehr abwenden. Wir versetzten uns in die Position von Rot und überlegen kurz.
Abbildung 9: Diagramm
1.2.2
Wo
könnte Gelb eine Gewinnposition aufbauen. Schauen wir uns zuerst die horizontalen
Möglichkeiten an. Hier gibt es die Möglichkeiten al-dl, a3-d3, b3-e3, c3-f3,
und evtl. höher, aber Gelb benötigt auf jeden Fall die Spalten b oder f zum
Gewinnen. In diagonaler Richtung ergibt sich die Möglichkeit, z.B. {a1, b2, c3,
d4}, auf jeden Fall benötigt Gelb hierzu ein Feld aus b2 bis b6 oder f2 bis f6.
Und in vertikaler Richtung ist natürlich immer etwas Möglich, jedoch für Rot
leicht zu verhindern.
Stellt Rot diese
Überlegungen an und zählt die verbleibenden Felder kommt er darauf das sich die
Situation aus Diagramm 1.2.3 ergibt Gelb also gezwungen ist b2 oder f2 zu
spielen, deshalb spielt Rot al. Das Spiel ist also vorbei Gelb verliert.
Wir
sehen das Spiel kann bei guten Spielern bereits nach nur sechs Runden entschieden
sein, aber wo war der Fehler? Wie wir oben gesehen haben ist es schwer den
Spielbaum komplett zu untersuchen aber wir geben eine Möglichkeit an ein Einen
Sieg in diesem Spiel zu erreichen. Gehen wir in Runde 4. Bis hierin wurde
folgendes gespielt:
1. dl, d2
2. d3, el
3. d4, e2
4. d5, d6
Und haben die Situation
in Diagramm 1.2.4
Spielt Gelb nun al anstelle von cl wäre ein
Möglicher Spielverlauf: 1. dl, d2
2. d3, el
3. d4, e2
4. d5, d6
5. al, c1
6. c2, e3
7. e4, bl
8. a2, c3
9. c4, c5
10. e5, e6
11. c6, gl
12. g2, g3
13. g4, g5 13. g6, a3
14. a4, a5
15. a6, fl
16. f2, f3
17. f4, f5
18. f6, b2
Und Gelb gewinnt mit {a4, b3, c2, d2}. Also
bereits in der 4 Runde wir der Grundstein über Sieg und Niederlage gelegt,
voraus gesetzt der „menschliche" Faktor, also Fehler, bleiben aussen vor.
Zur Verdeutlichung zeigen wir nochmals die Situation in Runde 15 nachdem Gelb
gespielt hat in Diagramm 1.2.4.:
|
|
|
00
|
|
|
|
•
|
|
0
|
|
|
|
•
|
|
|
|
|
|
|
|
•
|
|
•
|
|
0
|
|
•
|
|
|
|
|
00
|
|
|
|
|
..
|
|
0
|
|
•
|
Abbildung 11: Diagramm
1.2.4
Welche
Erkenntnisse können wir also aus diesem Abschnitt ziehen?
Auch
wenn es ,nur eine" Spielsituation ist hat man doch schon zwei wesentliche
Dinge sehen können. Zum einen welche Rolle die Spalte b und f spielen. Es war
hier zwar konstruiert, aber man erkennt trotzdem das es ohne diese beiden
Spalten nicht Möglich ist einen Vierer in einer Diagonalen oder Horizontalen
zu erreichen. Da es aber im Prinzip bei einem fehlerfreien Spiel nicht Möglich
ist einen waagrechten Vierer zu schaffen, ohne den Zugzwang zu Nutzen, also den
Gegner zu zwingen einen anderen Vierer zu verhindern, kann diese Möglichkeit
ausgeschlossen werden. Der zu verhindernde Vierer wäre nämlich ein
Horizontaler oder Diagonaler, was uns wieder in die Spalten b und f bringt.
Die Kontrolle oder den
Nutzen dieser beider Spalten ist also der Schlüssel zum Gewinnen.
2.2.2 Gute und schlechte Gewinnmöglichkeiten
Im
vorherigen Abschnitt haben wir gesehen, dass es an den letzten beiden Spalten
hängt ob man gewinnt oder nicht, jetzt wollen wir untersuchen welche Felder in
diesen Spalten zum Gewinn führen und welche also Gewinnmöglichkeiten also um
diese Spalten herum geschaffen werden müssen um am Ende zu gewinnen.
Gewinnen
kann man nur wenn der Gegner gezwungen ist einen Stein in das Feld unter dem
eigenen Gewinnfeld zu werfen, und wir haben gesehen, dass wenn beide Spieler
keine Fehler machen, es meisten dann passiert wenn alle bis auf die zwei Spalten
bereits gefüllt sind, diese beiden aber leer. Welche Situation ergibt sich
folglich. Der Gelb Spieler wird in diesem Fall immer die ungeraden Felder
erhalten, der Rote die geraden.
Daraus lässt sich folgern das man nur der
Spieler gewinnen kann, welcher seine Gewinnmöglichkeiten nach diesen
Voraussetzungen geschaffen hat, ansonsten wird das Spiel unentschieden enden.
Sollten beide Spieler nach
diesen Voraussetzungen gespielt haben, gibt es zwei Möglichkeiten, erstens
befinden sich die Gewinnmöglichkeiten in der selben Spalte, bzw. sind diese in
beiden Spalten in der gleiche Zeile, gewinnt diejenige, welche die niedriger
Zeilenzahl hat, was für jeden klar sein sollte. Was aber wenn die
Gewinnmöglichkeiten in verscheiden Spalten und verschiedenen Zeilen sind.
Um diesen Fall zu
untersuchen greifen wir auf ein Beispiel zurück. Das Spiel sei bis zu der
Situation in Diagramm 1.2.5 vorgeschritten.:
|
|
•
|
|
|
•
|
0
|
•
|
|
|
•
|
|
|
|
|
|
O
|
|
|
|
•
|
•
|
|
|
0
|
|
|
•
|
|
|
|
•
|
|
•
|
|
•
|
|
•
|
|
|
•
|
|
Abbildung 12: Diagramm
1.2.5
Beide
Spieler haben hier eine für sie gute Gewinnsituation geschaffen, Gelb mit b3,
also ungerade, zum Vierer {a4, b3, c2, dl} und Rot mit e2, also gerade, zum
Vierer Ic4, d3, e2, f 11. Da eine ungerade Anzahl an Steinen gespielt
wurde, bzw. eine ungerade Zahl an Feldern frei ist, muss Rot als nächste
werfen. (Den ersten Stein aus der aktuellen Runde haben wir schon gesetzt, da
ein Wurf in die Spalte e für Gelb schon
zur
Niederlage führen würde, er also gezwungen ist dort zu werfen) Welche Möglichkeiten
ergeben sich für Rot? Er kann nur in b2 oder el werfen. Das Feld b2 bedeutet
die sofortige Niederlage, el würde seine Gewinnmöglichkeit zerstören. Dennoch
wird er das kleinere Übel wählen und el wählen. Daraufhin wird die Spalte e bis
oben gefüllt und Rot ist wieder am Zug.
Es
ergibt sich die Situation in Diagramm 1.2.6.
|
|
•
|
|
|
•
|
•
|
•
|
|
|
•
|
•
|
|
|
|
|
•
|
|
|
|
•
|
•
|
|
|
•
|
•
|
|
•
|
|
|
|
•
|
|
•
|
|
•
|
|
•
|
|
•
|
•
|
|
Abbildung 13: Diagramm
1.2.6
Nun muss Rot das Feld b2 wählen, Gelb antwortet mit
b3 und wird gewinnen.
Aus
diesem Beispiel lässt sich folgendes ableiten. Ist eine Situation gegeben in
der die Spieler jeweils für sich gute Gewinnmöglichkeiten geschaffen haben,
also Gelb ungerade und Rot gerade, wird GElb immer dann gewinnen wenn diese in
unterschiedlichen Spalten und Zeilen liegen. Aber warum?
Die Antwort ist ganze
einfach, sind bis auf zwei Spalten alle gefüllt, darf Gelb immer beginnen und
wird die ungeraden Felder haben, weshalb seine Gewinnmöglichkeit gut ist. Da
die Gewinnmöglichkeit für Rot in einer anderen Spalte liegt, kann Gelb
gefahrlos in der für ihn guten Spalte den ersten Stein werfen. Nun ist die
Anzahl der freien Felder immer ungerade und Rot ist an der Reihe. Aber es
bleibt ihm nur noch die andere Spalte übrig, da er sonst verlieren würde. Daraus
folgt aber, dass im Prinzip nur noch eine gerade Anzahl von Feldern frei ist,
nämlich 6 in dieser Spalte. Die zu erreichenden Felder drehen sich also in
Bezug auf gerade/ungerade um, die gerade Möglichkeit wird nutzlos. Ist diese
Spalte bis auf den vorletzten Platz gefüllt ist erneut nur noch eine gerade
Anzahl übrig und Gelb ist an der Reihe, das Verhältnis dreht wieder und Rot
muss den fatalen Stein ziehen.
Wir sehen das auch hier der Zugzwang eine
besondere Rolle spielt und deshalb seine Kontrolle wichtig ist. Und auch wenn
wir andere spricht in höheren Zeilen gelegene Möglichkeiten haben ist es die
selbe Situation wie in unserem Beispiel, da es nur auf gerade und ungerade
Felder ankommt.
Fassen
wir nun die beiden letzten Abschnitte zusammen.
Bei
fehlerfreiem Spiel führt der Gewinn nur über horizontale und diagonale Vierer,
entweder direkt, weil es keine anderen Möglichkeiten mehr gibt, sprich alle bis
auf zwei Reihen gefüllt sind, oder weil man über den Zugzwang eine Situation
schafft in der der Gegner über eine horizontale oder diagonale
Gewinnmöglichkeit verhindert,
dass man den vertikalen Vierer nicht blocken kann.
Dann haben wir gesehen,
dass sollte beide Gewinnmöglichkeiten in der selben Spalte oder aber in der
beiden Spalten die selben Felder sein, ist nur diejenige Gewinnmöglichkeit
„gut" welche in der Richtigen Zeile liegt, ungerade Zeile für Gelb, gerade
für Rot. Es gewinnt dann jene mit der niedrigeren Zeilenzahl.
Es gibt also folgende Möglichkeiten:
1.
Gelb hat eine ungerade Gewinnmöglichkeit, Rot eine gerade Gewinnmöglichkeit
Diejenige mit der kleiner Zeilenzahl gewinnt!
2.
Gelb hat eine gerade Gewinnmöglichkeit, Rot eine ungerade Gewinnmöglichkeit
Das Spiel endet unentschieden!
3.
Gelb hat eine ungerade Gewinnmöglichkeit, Rot eine gerade Gewinnmöglichkeit
Gelb gewinnt!
4.
Gelb hat eine gerade Gewinnmöglichkeit, Rot eine gerade Gewinnmöglichkeit
Rot gewinnt!
Liegen
die Gewinnmöglichkeiten in unterschiedlichen Spalten, ist die Sache etwas
komplizierter, denn es gibt mehrere Möglichkeiten für die Spieler zu gewinnen.
Nehmen wir an jeder Spieler hat genau eine Gewinnmöglichkeit in jeweils einer
anderen Spalte und kann auch keine weitere schaffen. Man kann die folgenden
aussagen treffen:
1.
Gelb hat eine ungerade Gewinnmöglichkeit, Rot eine gerade Gewinnmöglichkeit
Gelb gewinnt! Wie oben gesehen.
2. Gelb hat eine gerade
Gewinnmöglichkeit und Rot eine gerade Gewinnmöglichkeit
Rot Gewinnt! Rot kann die
gerade Möglichkeit von Gelb verhindern, und selbst gewinnen, da Gelb nur die
ungeraden Felder besetzten kann.
3. Gelb hat eine gerade
Gewinnmöglichkeit, Rot hat ein ungerade Gewinnmöglichkeit
Das Spiel endet
unentschieden! Es gelten die selben Voraussetzungen als wären die
Möglichkeiten in einer Spalte, da erst die des anderen
verhindert wird, bzw. man
eher seine eigene aufgibt als den anderen gewinnen zu lassen.
Sollte Rot seine Gewinnmöglichkeit nicht
aufgeben, und in die andere Spalte werfen, dann tauschen bei Spieler
gerade und ungerade Felder und Gelb gewinnt.
4. Gelb hat eine ungerade
Gewinnmöglichkeit, Rot eine ungerade Gewinnmöglichkeit
Das endet unentschieden, wenn Die Gewinnmöglichkeit
nicht in der ersten Zeile ist.
Gelb beginnt, da es eine gerade Anzahl von
freien Feldern gibt, und spielt in eine freie Spalte worauf Rot die
andere wählen wird. Nun wird zunächst Gelb
seine Möglichkeit aufgeben und die Spalte wird gefüllt. Im Anschluß
bleibt eine ungerade Zahl an freien Feldern
und Rot ist an der Reihe, woraufhin er auch seine Möglichkeit
aufgeben muss.
Natürlich haben wir hier
ganz speziell Situationen betrachte und Ergebnisse bekom-men.Man kann diese,
indem man an einer Stelle einen anderen Zug macht, ganz einfach ausser Kraft
setzen, was wir im Beispiel in Diagramm 1.2.7 zeigen wollen.
•
|
•
|
|
|
•
|
|
|
|
|
|
0
|
|
|
•
|
•
|
•
|
|
|
•
|
|
|
|
|
|
•
|
|
|
•
|
•
|
|
|
0
|
|
|
|
•
|
|
|
|
•
|
•
|
•
|
Abbildung 14: Diagramm
1.2.7
Wir befinden uns
scheinbar in der Situation das beide Spieler eine ungerade Gewinnmöglichkeit
in unterschiedlichen Spalten haben, folglich sollte das Spiel unentschieden
enden. Aber wenn man nach obiger Regel weiter spielt erkennt man das Rot sich
eine weitere Möglichkeit zu gewinnen schaffen kann, und zwar in einem geraden
Feld wie man in Diagramm 1.2.8 sehen kann, und deshalb die obigen Überlegungen
hinfällig sind. Das Spiel endet mit Sieg für Rot.
•
|
•
|
|
|
•
|
|
|
|
|
|
0
|
|
•
|
•
|
•
|
•
|
|
|
•
|
|
|
|
|
|
•
|
|
•
|
•
|
•
|
|
|
0
|
|
|
|
•
|
|
|
|
•
|
•
|
•
|
Abbildung 15: Diagramm
1.2.8
Aber und darauf kam es uns ja in diesem Abschnitt
an, wir können verschiedenen Situationen bestimmten Nutzen zuordnen, auch ohne
das ganze Spiel zu kennen. Wir können prinzipiell abschätzen welche
Gewinnmöglichkeiten besser sind, und welche Möglichkeiten für den Gegner es
von vorne herein zu verhindern gilt.
Daraus folgt auch was jeder
Spieler wahrscheinlich intuitiv macht und was wir bei jedem Beispiel hier auch
getan haben, und zwar immer mit dl zu beginnen. Wir halten
und
somit nämlich immer die Möglichkeit offen eine Gewinnmöglichkeit in der ersten
Zeile waagrecht zu haben. Wir machen dies, da wir gesehen haben das es nur über
die waagrechten und diagonalen Vierer Gewinnchancen gibt, dazu aber immer die
Spalte d benötigt wird, und wir ungerade Möglichkeiten brauchen, also uns die
Möglichkeit eines Vierers in der ersten Zeile halte.
Umgekehrt sollte man als roter Spieler immer
Gewinnmöglichkeiten für Gelb in der ersten Zeile verhindern da dies die
stärksten sind.
2.2.3 Zugzwang und
dessen Kontrolle
Wir haben im letzten
Abschnitt immer wieder Situationen erzeugt in denen ein Spieler gewinnt und
dabei stillschweigend das Phänomen des „Zugzwangs" hingenommen, ohne näher
darauf einzugehen.
Dies hat den Grund, dass
es ohne den Zugzwang nicht möglich ist zu Gewinnen, wie wir gesehen haben, und
deshalb wollen wir diesem Thema einen eigenen Abschnitt widmen.
Zunächst
einmal was bedeutet Zugzwang.
Damit beschreiben wir eine
Situation in der ein Spieler sozusagen gezwungen ist einen bestimmten Zug zu
tätigen, sei es weil kein anderes Feld gespielt werden kann wie in Diagramm
1.2.3, oder weil er eine Niederlage abwenden muss, indem er eine Vierermöglichkeit
verhindert, wie in Diagramm 1.2.9 wo Rot nur b1 oder e1 spielen kann um einen
möglichen Vierer von Gelb zu verhindern.
Abbildung 16: Diagramm 1.2.9
Mit
Hilfe des Zugzwangs lässt sich also spätestens nach 15. Runden eine Gewinnsituation
schaffen. Aber wem wir dieser am Ende Nutzen? Wer kontrolliert also den
Zugzwang?
Zunächst
wollen wir sehen was es bedeutet den zugzwang zu kontrollieren und gehen dazu
nochmals zu unserem Beispiel aus 1.2.2.1. Wir haben gesehen, das nach der
fünften Runde das Spiel schon entschieden ist. Aber warum genau?
In allen Runden danach
besetzt Gelb nach und nach die ungeraden Felder und Rot
wird
immer in die selbe Spalte Spielen, so ergibt sich für Gelb keine Gewinnmöglichkeit
und am Ende wird Gelb entweder b1 oder fl spielen müssen. Rot kontrolliert also
den Zuzwang, da Gelb keine Möglichkeit hat die geraden Felder zu spielen. Dies
resultiert daraus, das noch eine gerade Anzahl an Feldern übrig ist die nicht
zu einem Sieg von Rot führen würden, folglich am Ende die Situation aus
Diagramm 1.2.3 übrig bleibt.
Wir können also dann von
Kontrolle des Zugzwngs sprechen, wenn ein Spieler die Möglichkeit hat durch
eine Strategie, z.B. immer die selbe Spalte zu Spielen wie der andere, alle
möglichen Gewinnpositionen zu verhindern, so dass er am Ende seine spielen
kann.
Wie kann man also die
Kontrolle über den Zugzwang erhalten, und ist Möglich die Kontrolle vom anderen
übernehmen?
Wie
ist die Situation zu Beginn des Spiels. Intuitiv kann man denken das Rot natürlich
auch hier die Möglichkeit hat immer in die selbe Spalte zu spielen, es würde
ihm aber nichts nützen, da Gelb dann in der ersten Zeile einen Vierer bekommt.
Wir legen also fest, dass am Anfang kein Zugzwang existiert.
Wie können wir ihn aber
schaffen?
Es hängt sicher davon ab
welche Gewinnsitiation man schaffen kann. Gelb muss nach obigen Überlegungen
eine Gewinnmöglichkeit in einem ungeraden Feld schaffen, und zugleich verhindern,
dass Rot eine gerade Gewinnposition in der gleichen Spalte aber in einer
kleineren Zeile schafft. Idealer Weise also für Gelb in ersten oder dritten
Zeile, und Rot nicht in der Zweiten, und natürlich auch keinen anderen davor.
2.3 Vorige Überlegungen
und der Spielbaum
Nun wollen wir mit den nun
erworbenen Erkenntnissen versuchen den Spielbaum zu vereinfachen um das Spiel
wenigstens im Ansatz mit Hilfe der Spieltheorie zu untersuchen.
Natürlich werden wir auch so nicht den ganzen
Spielbaum analysieren können, aber wir schaffen eine gewisse Spieltiefe, also
wir betrachte hier 6 Steine und wollen so versuchen den bestmöglichst eine
Strategie hierfür zu zeigen.
Wir gehen davon aus das die Spieler immer
Positionen erreichen wollen die zu möglichen Vierern gehören oder aber die
ihnen die Möglichkeit geben in einem folgenden Zug eine Viererposition zu
erreichen.
Zunächst können wir im
ersten Zug annehmen, dass Gelb immer dl wählen wird, wir verkürzen ihn also von
oben. Damit folgt dann folgender Spielbaum:
Abbildung 17: Diagramm
1.2.10
Nun überlegen wir uns welche Gewinnmöglichkeiten für Gelb denn überhaupt
Sinnvoll sind, also welche sind mit dem letzten Stein in ungeraden Feldern in
den Zeilen 1 und 3 zu vervollständigen. Nutzen wir zusätzlich noch aus, dass
wir alle Ergebnisse in den Spalten a bis e Spiegel oder verschieben können
ergeben sich die folgenden. {al, bl, cl, dl}, {a3, b3, c3, e3}, {al, b2, c3, d4},
Für den roten Spieler ist es am besten gerade
Gewinnmöglichkeiten zu schaffen, und zwar in der zweiten Zeile. Daraus ergeb
sich die folgenden Vierer:
{a2,
b2, c2, d2}, {a1, b2, c3, d4} dies sind bis auf Spiegeln und verschieben die
einzigen Vierer in den unteren vier Zeilen, {d4, c3, b2, dl} fällt weg da Gelb
als erstes dl spielt. Welche Möglichkeiten ergeben sich daraus für Rot. Er wird
möglichst schon im ersten Zug verhindern wollen, dass Gelb ein weiteres
wichtiges Feld besetzt, also eines der obigen Viererfelder. Das einzige an das
er herankommt ist aber al. Das Spielen dort ist aber nicht hinderlich für Gelb,
da er gespiegelt auch g1 spielen kann. Also wird Rot ein für sich wichtiges
Feld besetzen hier also d2 oder vorbereitende für den nächsten Zug ei. Für Gelb
spielt das keine Rolle er wird in der zweiten Runde al spielen um ein weiteres
Viererfeld zu bekommen. Rot wird entweder mit versuchen die Tupel {el, e2},
{el, d2}{gl, el}, {gl, d2} zu bekommen Es ergeben sich also folgende Zug
Möglichkeiten und und unter weglassen der Äste der Baum aus Diagramm 1.2.11.
1. dl, {el, d2, gl}
2. al, {e2, d2, g2}
Welche Möglichkeiten sind nun wieder die besten für
Rot?
Im linken Ast hat er zwei Möglichkeiten,
entweder er behindert Gelb mit a2, ei oder er versucht seine Gewinnmöglichkeit
aufzubauen indem er el spielt. Wir haben hier also folgende Möglichkeiten:
Abbildung 18: Diagramm
1.2.10
1 dl, d2
2. al, {el, a2, c1}
Im Mittleren Ast hat Rot
wieder die Möglichkeit Gelb zu behindern, mit a2, cl, oder selbst seine
Gewinnmöglichkeit weiter aufzubauen mit e2, oder d2. Das ergibt folgende Züge:
1. dl, el
2. al, {a2, cl, d2, e2}
Im
rechten Ast sehen wir, dass es für den zweiten Spieler eigentlich nicht gut war
gl zu spielen, da Gelb mit al geantwortet hat und er zwar versuchen könnte den
Vierer {d2, e2, f 2, g2} zu
erreichen, aber wir haben gesehen, dass er trotzdem verlieren würde, schafft
es Gelb auf der anderen Seite eine der obigen Möglichkeiten aufzubauen. Diesen
Ast verfolgen wir also nicht mehr weiter, konnten also in der ersten Runde gl
schon als Zug mit geringerem Nutzen identifizieren. Es ergibt sich der Baum im
Diagramm 1.2.11:
Abbildung 19: Diagramm 1.2.11 Betrachten wir
die nächste Runde.
Wir
beginnen auch hier beim Linken Ast, also der Historie {d1, d2, al, a2}.
Welche Möglichkeiten
hat Gelb?
Positionen seiner Vierer wären bl, cl, a3 und
d3, also wird er eine von ihnen Spielen. Rot kann kann bzw. darauf antworten
mit cl,bl,el,a3 oder d4.
Im nächsten Ast {dl,
d2, al, cl} ist für Gelb nützlich d3 oder c2 zu spielen, Rot kann a2, c2, c3,
el, oder d4 spielen jeweils abhängig von der Wahl von Gelb.
Und im dritten Ast {d1, d2, al, el} kann Gelb
a2, bl, cl oder d3 und Rot muss bzw. kann mit bl,cl, a2 oder e2 antworten.
Im Ast {dl, el, al, a2} Im Ast {dl, el, al,
cl} Im Ast {d1, el, al, e2} Im Ast {dl, el, al, d2} Es ergibt sich der
vereinfachte Spielbaum in Diagramm 1.2.12 mit nun nur noch 60 Enden.
Abbildung 20: Diagramm
1.2.12
Wir haben hier natürlich sehr viele intuitive
Verhaltensweisen vorausgesetzt, aber immer im Hinterkopf die Ergebnisse aus
Abschnitt 1.2.2 gehabt. Dies ist in unseren Augen eine vertretbare
Vereinfachung, und wir können nun indem wir verschiedenen Positionen einen Wert
geben, in den ersten 6 Zügen durchaus so etwas wie eine „beste" Strategie
finden.
Betrachten
wir die Historien die bis zum 6. Zug entstanden sind, und bezeichnen ihre Menge
mit H6.
H6 = {dl, d2, al, a2,
a3, bl}, {dl, d2, al, a2, a3, cl}, {dl, d2, al, a2, a3, el}, {dl, d2, al, a2,
bl, cl}, {dl, d2, al, a2, cl, bl}, {dl, d2, al, a2, d3, a3}, {d1, d2, al, a2,
d3, bl}.{dl, d2, al, a2, d3, cl}, {dl, d2, al, a2, d3, d4}, {dl, d2, al, cl,
d3, a2}, {dl, d2, al, cl, d3, c2}, {dl, d2, al, cl, d3, d4}, {dl, d2, a1, cl,
c2, a2}, {dl, d2, al, c1, c2, c3}, {dl, d2, a1, c1, c2, el}, {dl, d2, al, e1,
bi, cl}, {dl, d2, al, ei, cl, dl}, {dl, d2, al, ei, a2, a3}, {dl, d2, al, ei,
a2, cl}, {dl, d2, al, el, a2, e2}, {dl, d2,
al, el, d3, a2}, {dl, d2, al, el, d3, cl}, {dl, d2, al, el, d3, e2}, {dl, el,
al, d2, bl, cl}, {dl, el, al, d2, cl, bl}, {dl, el, al, d2, a2, e2}, {dl, el,
al, d2, a2, a3}, {dl, el, al, d2, a2, d3}, {dl,
el, al, d2, a2, cl}, {dl, el, al, d2, d3, e2}, {d1, el, al, d2, d3, a2}, {dl, el, al, d2, d3, bl}, {dl, e1, al,
d2, d3, cl}, {d1, e1, al, d2, d3, d4}, {dl, e1, a1, e2, bi, cl}, {d1, e1, al,
e2, cl, bl}, {dl, el, al, e2, a2,
a3}, {d1, el, al, e2, a2, d2}, {d1, el, al, e2, a2, cl}, {dl, el, al, e2, d2, a3}, {dl,
el, al, e2, d2, d3}, {dl, el, al, e2, d2, e3}, {dl, el, al, cl, bl, a2},
{dl, el, al, ei, bl, b2}, {dl, el,
al, cl, bl, c2}, {d1, el, al, cl, bl, d2}, {dl, el, al, cl, c2, bl}, {d1, el,
al, cl, b2, d2}, {d1, el, al, cl, b2, e2}, {d1, el, al, cl, a2, c2}, {d1, el,
al, cl, a2, d2}, {dl, el, al, cl, a2, e2},
el, al, cl, d2,
e2}, {dl, ei, al, cl, d2, g1}, ei,
al, a2, bl, ei}, {dl, ei, al, a2, cl, bll,
{dl, el, al, a2, d2, a3}, {dl, el,
al, a2, d2, bll, {dl, el, al, a2, d2, d3}
Geben wir uns nun
folgende Nutzenfunktion vor, welche hier rein willkürlich ist aber
verdeutlicht wie man
vorgehen könnte.
u : H6 ->
R2 mit
(x1, yi,
x2, y2, x3, y3) 1--> (E 2 • 1{Ein
Viererfeld ist besetzt}(Xi) + 1 ' 1{Ein gegnerisches Vierfeld ist besetzt}(Xi) + 0
E[2 • 1{Ein Viererfeld ist besetzt}(Yi) +1 • 1{Ein gegnerisches
Vierfeld ist besetzt}(Yi) + 0 '1{EinsonstigesFeld ist
beset;
Dann ergibt sich der Nutzen aus den einzelnen
Ästen wie in Diagramm 1.2.13, wobei wir die rechten Äste weggelassen haben, da
Rot mit el keinen Nutzen bekommt, und so über 4 nicht hinaus kommt.:
J3
I I 1 1 I
(0,4) (6,4) )6,) ,0,43(64)16
446 51(6,9( 0)5,4)(5,3)(6,3)(6
ays ax5 ax5 ,)(5
4)(e
Abbildung 21: Diagramm
1.2.13
Mit obigen
Annahmen wird das Spiel also auf einen Ast mit der Verteilung (6,5)
hinauslaufen, wobei wenn wir die Äste verfolgen hier die folgenden Historien in
Frage kommen:
{d1, d2, a1, a2, a3, b1}, {dl, d2,
a1, cl, d3, a2}, d2, a1, c1, d3, c2}
Weitere Aussagen lassen sich mit dieser Spieltiefe natürlich nicht machen,
weshalb wir etwaige besser Züge nicht ausschließen können, ebenso wenig wie man
sagen kann das ist die bester oder einzige Eröffnungsvariante für Vier Gewinnt.
Eine mögliche Position nach diesen sechs Zügen
könnte z.B. so aussehen wie in Dia-
gramm 1.2.14, hier haben wir die
Historie d2, al, a2, a3, b11
gewählt.
Abbildung 22: Diagramm 1.2.14
Es handelt sich hier um
eine starke Vereinfachung aber wir sehen wie man es schaffen
kann das Spiel zu analysieren.
Genau auf solchen Annahmen
basieren die meisten Computerspiele zu Vier Gewinnt, man betrachtet nur eine
gewisse Tiefe, und vergibt jedem Feld einen Nutzen. Natürlich sind die
Einschränkungen nicht so gravieren wie hier beim von der Hand bearbeiten aber
es soll ja auch nur ein Versuch sein das Spiel in den Griff zu bekommen.
Wie man es mit dem Computer
bearbeiten kann, und welche Lösung gut ist, aber auch wo die Grenzen sind
behandeln wir in Teil II dieser Arbeit.
Teil II
Programmierung
„4 Gewinnt"
3 Ziel der Programmierung
einer Künstlichen Intelligenz
Als
Ziel haben wir es uns gesetzt eine künstliche Intelligenz (KI) zu
programmieren, die es ermöglicht gegen einen Computer zu spielen. Die KI sollte
dabei so angelegt sein, dass sie im Schwierigkeitsgrad angepasst werden kann,
allerdings auch ein ernst zunehmender Gegner für den menschlichen Spieler ist.
Da das Spiel wie bereits dargelegt gelöst ist und für den beginnenden Spieler
zu gewinnen, wäre es "langweilig", wenn der Computer perfekt wäre, da
ein Spiel gegen ihn dadurch an Reiz verliert, wenn man sich bewusst ist, nur
verlieren zu können. Aus diesem Grunde soll er unterschiedlich "klug"
eingestellt werden können.
4 MinMax Algorithmus
Für symmetrische Spiele in
extensiver Form ist eine Bestimmung von optimalen Strategien durch Elimination
durch strikte Dominanz möglich. Auf diesem Prinzip gründet sich der MinMax
Algorithmus.
4.1 Funktionsweise
Im Folgenden sei also nun
für Spieler 1 die Nutzenfunktion besser je größer ihr Wert ist, für Spieler 2
daraus folgernd je kleiner ihr Wert ist. Wobei im Moment nur die Möglichkeiten
-1 Für Sieg von Spieler 2, 0 für ein Unentschieden sowie +1 für einen Sieg von
Spieler 1 gegeben ist.
Der Ausgang eines Spielfeldes lässt sich
bestimmen indem der Spielbaum unterhalb der Aktuellen Situation aufgestellt
wird und nun von unten nach oben die Bewertungen wie Eliminiert werden. Ist An
einem Teilbaum der Tiefe 1 also nun Spieler 1 am Zug so wird er die Beste
Möglichkeit für sich wählen. Man kann also dem Knoten über der Entscheidung den
Wert dieser Besten Möglichkeit zuordnen und den Teilbaum eliminieren. Für
Spieler 2 ist diese Elimination mit dem geringsten wert analog. Zum
veranschaulichen dieses Algorithmus sei ein Spiel S' = (M, E n Z, P, u) gegen durch abwechselndes ziehen von Spieler 1 und
Spieler 2 gegeben sowie durch folgenden Spielbaum:
5.1 Verfeinerung der Nutzenfunktion
Die Verfeinerung der Nutzenfunktion basiert nun auf grundlegenden
Verhaltensmustern die wir bereits als Optimal dargestellt haben im ersten
Teil.
Wir bewerten nun jedes Spielfeld aus der Historie wie folgt:
Ziel des Spieles ist es eine Reihe aus 4 eigenen Steinen aufzubauen. Für
diese Reihe gibt es nur eine Begrenzte Anzahl von Möglichkeiten (69 Blöcke).
Wir bewerten nun alle diese Möglichkeiten und geben ihren Anteil an die
Nutzenfunktion wieder. Ist ein Block besetzt mit einem Stein von Spieler 1 so
erhält gibt der Block einen Anteil von 10 an die Nutzenfunktion, Ist ein Block
besetzt mit 2 Steinen von Spieler 1 so gibt er einen Anteil von 100 an die
Nutzenfunktion. Bei 3 Steinen ist der Anteil 10.000.
Hat ein
Block 4 Steine so ist das Spiel gewonnen und der Anteil ist 100000000. Die
Anteile für Steine von Spieler 2 sind jeweils negativ. Des weiteren kann ein
Block keinen Anteil liefern wenn schon Steine von beiden Spielern in ihm
liegen.
Diese Werte können natürlich variiert werden.
Der Wert für einen Vierer sollte sehr groß gewählt
werden, damit ein Sieg unbedingt das Erstrebenswerte bleibt, es darf also nicht
möglich sein mit Ansammlung von anderen Möglichkeiten mehr Punkte zu machen
als mit dem eigentlichen Gewinn des Spiels. Die Verfeinerung der Nutzenfunktion
soll also nicht die Gewinnsituationen verändern.
Mit dieser
einfachen Nutzenfunktionsverfeinerung ist nun schon eine bessere Unterscheidung
der Spielmöglichkeiten gegeben, auch wenn noch kein Sieg innerhalb der Tiefe
der Suche auftritt.
Weitere Verfeinerungen wären möglich für bekannt
"gute Positionen", wie zum Beispiel Zwickmühlen bei denen bereits 2
Dreier existieren, deren offenes Feld (mögliches Gewin Eine andere mögliche
Veränderung wäre es Dreier nach der Höhe zu bewerten, usw.
5.2 Beschreibung des Alpha-Beta Cuts in Pseudocode
Zur vorherigen Erklärung sollen zuerst einige Konventionen für den
Pseudocode erläutert werden.
Allgemein ist die Syntax vollkommen frei, er muss nur vom Menschen
verstanden werden. Eine Funktion wird aufgerufen auf dem Aktuellen Spielfeld
bzw. der aktuellen Position im Spielbaum.
Mit S = {si, ... sk} soll die Menge der
Wahlmöglichkeiten an auf dem Aktuellen Spielfeld bezeichnet werden (endlich und
insbesondere abzählbar).
Außerdem
soll für ein s E S s. funktion definiert werden. es Bezeichnet
die Funktion Aufgerufen auf eine Simulation von s.
Zuerst soll allerdings noch die Funktion max(n)und min(n)
definiert werden. Sie sind, wie danach die Funktionen abmin, abmax (für
Alpha-Beta) rekursiv definiert: max(0) = min(0) = wert()
max(n) = max{s. min(n — 1)1s E S}
max(n) = min{s. max(n — 1)1s E S}
Pseudocode
abmax(n, a, 0) =
if (n = 0) return wert ()
:= 1;
while(i <= n){
w := si. abmin(n — 1, a, ,ß);
if(w >= /3) return /3;
if(w > a) a := w;
+ +;
}
return a;
Analog ist definiert:
Pseudocode abmin(n, a, 0) =
if (n = 0) return wert()
i
:= 1;
while(i <= n){
w := si. abmax(n — 1, a, /3);
if(w <= a) return a;
if(w < 0) ß := w;
+ +;
}
return
/3;
5.3 Korrektheit des Algorithmus
Mit
der Definition wird nun ein Algorithmus gegeben der effizienter rechnen kann,
da einige Rechenschritte wegfallen, wenn der Bedingte Befehl 1 ausgeführt wird
also ein Cut ausgeführt wird.
Diese
Vorgehensweise ist also nur von Nutzen, wenn unter gewissen Voraussetzungen die
Werte der Funktionen abmin und abmax mit den klassischen min und max übereinstimmen.
Hierzu erst ein Lemma über den Wert von abmin und abmax
5.3.1 Lemma
Sei n > 0, a, 0 E IR, a < )3
{a für max(n) < a
abmax(n, a, /3) = max(n) für a < max(n) < /3
/3 für 0 < max(n)
{a für min(n) < a
abmin(n, a, /3) = min(n) für a < min(n) < /3
für /3 < min(n)
Beweis: Das Lemma soll bewiesen
werden durch Induktion nach n. Dabei werden aufgrund der Symmetrie nur die
Schritte für die Maximumsfunktion dargelegt. Der Induktionsanfang ist gegeben
per Definition von Max(0) die ebenfalls den
Wert des Aktuellen
Spielfeldes darstellt. Sei nun also die Aussage gegeben für < n
1.max(n)
> /3 Es gilt max(n) = max{s. min(n — 1)1s E
S} Sei nun also 1 < 1 < k,1 minimal mit sl. min(n — 1) =
max(n)
Nun ist si.min(n — 1) > ß si. abmin(n
— 1, a, ß) = ßVa
Bei der Überprüfung von
1-ten Schritt der Schleife ist also w = sl. abmin(n-1, a, ß) =
und es wird als Wert für abmax(n, ce, /3) zurückgegeben.
2.max(n) < a max(n) = max{s. min(n — 1)1s E S} ~Vlk:si.min(n-1)
< < k : si. abmin(n — 1) 11 = w
Keiner der Bedingten Befehle wird ausgeführt. wird
unverändert am Ende zurückgegeben.
sonst Es gilt: a < max(n) <
V1 si. min(n — 1) <ß
Sei 1 < 1 < k, 1 minimal
mit sl. min(n
— 1) = max(n) =V1 < i < 1 : si. min(n — 1)
E [—co, max(n)[
> V1 < i < 1 : si. abmin(n —
1) E [ce, max(n)[ 1-ten Durchgang ist a < sl. min(n
— 1)
i.v.
>a<
st. min(n — 1) < abmin(n
— 1, a, 0) = sk. min(n
— 1)
Nun wird der Bedingte
Befehl 2 ausgeführt und von nun an ist a
sl. abmin(n —
1, a, 0) = st. min(n
— 1) = max(n)
V/ < i < k : si. min(n
— 1) < a = sl. min(n — 1) = si. abmin(n — 1, a, /3) =
aha
kein weiterer bedingter
Befehl wird ausführt.
keine weitere Änderung
von a
max(n) wird
zurückgeben.
5.3.2 Korollar
n > 0
abmax(n, —oo, oo) =
max(n) abmin(n, —oo, oo) = min(n)
5.3.3 Korollar
Wenn gilt dass für die Funktion wert() immer gilt: a < wert() < ß
abmax(n, —oo, oo) =
max(n) abmin(n, —oo, oo) = min(n)
Beweis:
Da a < wert() < ß =a < max(n) < ß Für
min analog.
6 Implementierung
Für die Implementierung des
Algorithmus haben wir PHP (PHP: Hypertext Prepro-cessor) gewählt.
Dabei muss beachtet werden dass noch einige
Änderungen notwendig sind, um einen spielenden Computer zu erschaffen. Er muss
nicht nur seine jetzige Situation mit einer gewissen Tiefe n bewerten, sondern
er Bewertet die Situation seines Gegners mit einer Tiefe n — 1 und wählt dann
die Möglichkeit aus die am Besten ist.
Ergeben mehrere Strategien
den besten Wert soll der Zufall entscheiden, dadurch entsteht eine weiter
gewisse Dynamik im Spiel des Computers.
Die graphische Oberfläche ist sehr schlicht
gehalten und soll dennoch eine intuitive Bedienung des Spiels ermöglichen.
Als erstes wird ein Schwierigkeitsgrad
gewählt (er legt die Tiefe n des Alpha-Beta-Cut Algorithmus fest). Anschließend
tätigt der Spieler seinen ersten Zug, der Computer zieht automatisch das für
ihn optimale Feld.
Vier
gewinnt (Schwierigkeit: 4)
neues spie]
Dewertuneen einblenden
Bereehnuri dauerte 0.134
SLkundcn.
Rudi
Als zusätzliche Information kann die
vom Computer getätigte Bewertung der 7 möglichen Züge eingeblendet werden.
Dies ist insbesondere dann von Interesse, wenn man der Meinung ist, dass der
Computer gerade einen Fehler getan hat oder sich anders verhalten hat als bei
einem vorherigen Spiel in der selben Situation, dies ist dann ein Grund des
Zufallsgenerators bei Gleichwertigen besten Möglichkeiten.
Vier
gewinnt (Schwierigkeit: 3 )
Bewertung für A= -10
nues 5p Bewertung für B -20
Bewertung für C = 10400
Berechnung dauerte 0.0 .cricun Bewertung
für]) 130
Runde
113 Bewertung
für E = 20320
E FFPLEF Brwvirctin für P
104450 1-77PPET Bewertung für G = 518.80
E FF
E FFBBF-1—
E n—BREI—
BEF
6.1 Bekannte Fehler
In
niedrigen Schwierigkeitsstufen kann es dazu kommen, dass ein Computer sich
nicht " Intelligent" verhält. Das hat damit zu tun dass er das Spiel
falsch bewertet, da er nicht weit genug vorhersehen kann (die Tiefe der Suche
ist zu gering). So kann er auf Stufe 1 nicht sehen was der Gegner tun könnte,
da er nur den Wert des Spielfeldes direkt nach dem Zug bewertet. Selbst auf
Stufe 2 kann er nur einen Sieg seines Gegners verhindern, wenn dieser den Sieg
nur mit einer einzigen Position erreichen kann. Eines dieser Typischen
Spielverläufe ist das "Aufsetzen" auf die Spielersteine. Die Erklärung
hierfür ist einfach: Der Computer bewertet die Unterbunden möglichen Vierer
nach oben und den eigenen Aufbau eines möglichen Vierers höher als eine
frühzeitige Verhinderung eines Waagerechten Vierers seines Gegners.
Vier gewinnt (Schwierigkeit: 1
Ecue
Dcwerouumci Aluadsa
Bereehniang dauerte 0.00 t
Sekunden.
»-kii3 -de 6
E
PPPPEP
ü
r•••rr
met eyrite
Ein weiteres
"Problem" ist die "Verwandlungsschwäche" in höheren
Schwierigkeitsgraden. Dabei handelt es sich um das Phänomen, dass der Computer
keinen Vierer setzt, auch wenn er es könnte. Auch dies hat eine einfache
Erklärung. Er Bewertet mit einem recht weiten Blick in die "Zukunft"
(z.b. 6 Züge). Wenn er nun neben dem sofortigen Gewinn eine weiter Möglichkeit
des Sieges sieht (und diese eventuell aufgrund der Weiteren Bewertungskriterien
eine noch höhere Bewertung aufweist) kann (oder muss) er diese Möglichkeit
wählen. Dies mag dem Spieler seltsam erscheinen, es kann aber keinen Sieg des
Computers verhindern, nur hinauszögern, aus diesem Grund ist dies auch nicht
als eigentlicher Fehler zu bewerten, nur als "Charakterschwäche" da
dies für den Menschlichen Spieler arrogant wirken könnte.
6.1.1 Zeitaufwand
Um zu verdeutlichen, wie lange die Auswahl der optimalen Position dauert
(je nach Schwierigkeitsgrad) wurde eine Alternative Spielform implementiert.
Die Auswahl der Position funktioniert mit der selben Funktion, allerdings
werden beide Spieler vom Computer gesteuert, gemessen wird die
durchschnittliche Dauer pro Zug ab Schwierigkeitsstufe 4 (bei geringerer Stufe
waren die Werte nicht auswertbar). Die
Tabelle 1: Zeiteinschätzung
Schwierigkeitstufe
|
Zugdauer
in sec
|
4
|
0,117
|
5
|
0,567
|
6
|
1,61
|
7
|
9,73
|
8
|
43,2
|
Erhöhung der
Schwierigkeit vervielfacht sich die Rechenzeit. Eine Schwierigkeit höher als 7
oder 8 würde aufgrund der Langen Wartezeiten keine Freude mehr bereiten. Bei
der benötigten Zeit ist außerdem interessant, dass die Berechnung von 2 auf den
ersten Blick völlig äquivalent en Spielfelder (z.b. Spiegelverkehrt)
unterschiedlich lange dauern können. Dies ist rührt daher, dass für die
Verkürzung der Rechenzeit die Cuts sehr wichtig sind, und diese sind abhängig
von der Reihenfolge der Positionen zur Simulation. Da in der Implementierung
diese Reihenfolge fest ist (von links nach rechts) kann eine Spiegelung des
Spielfeldes Auswirkung haben auf die Rechenzeit.
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.