Am Wochenende musste ich an meine ersten Versuche denken, eine KI-Komponente in ein Spiel zu bauen. Das müsste in der 11ten oder 12ten Klasse gewesen sein.
Als Schüler versuchte ich immer wieder Spiele zu schreiben – keine Grafischen, das ging da noch nicht wirklich. Damals gab es in der Zeitschrift "Spektrum der Wissenschaft" einen Artikel über ein Spiel, dass mir so gefiel, dass unser Informatik-Lehrer mich das netterweise implementieren ließ (anstelle irgendeiner langweiligen, regulären Aufgabe). Es ging etwa so:
- Zwei Spieler schreiben verdeckt eine Zahl zwischen 1 und 6 auf.
- Dann werden sie verglichen:
- die höhere Zahl gewinnt,
- es sei denn die Differenz ist 1, dann gewinnt die niedrigere,
- bei Gleichstand gewinnt keiner (unentschieden).
- Gewonnen hat, wer an Ende
- Variante A: die meisten Gewinne hat oder
- Variante B: die höhere Summe seiner Gewinnzahlen hat.
- Es wird eine vorher festgelegte Anzahl an Runden gespielt.
Beispiel:
A: 5 B: 6 --> A gewinnt
A: 5 B: 5 –> unentschieden
A: 5 B: 4 –> B gewinnt
A: 6 B: 5 –> B gewinnt
Interessant wird es dadurch, dass man irgendwann anfängt das Verhalten des Gegners einzuschätzen, um erfolgreich zu sein.
Ich versuchte damals erfolglos auf den alten Apple-II-Rechnern eine gute Strategie für das Programm als Gegenspieler zu implementieren. Dass die Ergebnisse mager waren lag aber eher nicht an den damaligen Rechnern, sondern daran, dass ich keinen Schimmer hatte, wie ich das Problem angehen sollte. 🙂
Im ersten Wurf wählte ich statistische Verfahren, um das bisherige Verhalten auszuwerten, was natürlich nicht so prickelnde Ergebnisse brachte. Dann versuchte ich so eine Art Mustererkennung, um das Verhalten vorherzusagen, was mir aber nicht gelang. Damals empfand ich das als große Niederlage und konnte nicht verstehen warum mir der Lehrer trotzdem eine gute Note gab. 😉
Jetzt wäre natürlich interessant zu wissen, wie du das heute angehen würdest ;o) Mein Vorschlag wäre ein neuronales Netz (ohne dass ich jetzt noch im Detail wüsste, wie ich das implementieren könnte…).
Hi, ja ich dachte auch sofort an ein neuronales Netz, aber wenn man das Verhalten pro Benutzer analysieren will, dann dauert es unter Umständen zu lange bis es ausreichend "trainiert" ist. Meiner Erfahrung nach werden allerdings fast nur die Zahlen 6, 5 und 4 verwendet. Das würde für eine kurze Anlernphase sprechen.
Mit dem gleichen Argument könnte aber auch ein verfeinertes statistisches Verfahren gut sein, dass für Sequenzen aus 3 – 6 Zahlen die Häufigkeit zählt und darauf aufbauend den nächsten Zug schätzt.
Hm, aber vielleicht hänge ich wieder der Illusion nach, dass man hier allein anhand von Häufigkeiten entscheiden könne…
Das stimmt, die Lernphase könnte dauern. Allerdings könnte das Netz am Anfang ja aus der allg. Spielerschaft gelernt haben und sich dann in einen Lernprozess mit den Einzelspieler begeben. Hab zwar selbst mal was mit neuronalen Netzen gemacht, aber mich nie mit der Frage beschäftigt, ob es spezielle Netzstrukturen gibt, die schnell lernfähig sind, aber das könnte sein.
Grundsätzlich kann ich deine Skepsis einem neuronalen Netz gegenüber gut nachvollziehen; wenn man sowas einsetzt gibt man ein bisschen die Kontrolle über das System ab: Nicht die eigene Intelligenz bestimmt die Strategie, sondern das Teil lernt Regeln, die man weder kennt noch aus ihm extrahieren kann. Sowas fällt nicht leicht ;o)