Tictactoe: Unterschied zwischen den Versionen

Aus MINT.lentner.net
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln:
 
Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln:
 
# Man kann Gedanken eines Einsteigers einfach codieren: <i>Wenn die Situation so und so ist, dann mach das und das ...</i> . Sozusagen <b>ein Baumdiagramm in eine Programmiersprache übersetzt</b>. Machbar und auch gar nicht doof, weil mann einfache Dinge am Ende sehr gut hinkriegt. Aber wenn man von Anfang an <b>optimal</b> sein will, ist das schon a bisserl uferlos. Aber man kann sich ja als Bot wie ein menschlicher Einsteiger verhalten: <b>Erst mal probieren (also random-Strategie), dann, wenn's absehbar wird hart programmiert handeln</b> und sich an das Schema des Programmierers halten..
 
# Man kann Gedanken eines Einsteigers einfach codieren: <i>Wenn die Situation so und so ist, dann mach das und das ...</i> . Sozusagen <b>ein Baumdiagramm in eine Programmiersprache übersetzt</b>. Machbar und auch gar nicht doof, weil mann einfache Dinge am Ende sehr gut hinkriegt. Aber wenn man von Anfang an <b>optimal</b> sein will, ist das schon a bisserl uferlos. Aber man kann sich ja als Bot wie ein menschlicher Einsteiger verhalten: <b>Erst mal probieren (also random-Strategie), dann, wenn's absehbar wird hart programmiert handeln</b> und sich an das Schema des Programmierers halten..
# Durch <b>Abstraktion</b> kann man ähnliche Situationen zusammenfassen: "Wenn er <i>am Eck</i> anfängt, dann reagiere immer so und so. Dadurch werden auch Anfangssituationen bewältigbar.
+
# Durch <b>Abstraktion</b> kann man ähnliche Situationen zusammenfassen: "Wenn er <i>am Eck</i> anfängt, dann reagiere immer so und so". Dadurch werden auch die uferlosen Anfangssituationen bewältigbar.
 
# Durch <b>Rekursion</b> kann man "vom Ende her denken" und immer das tun was zu "<i>einer Gewinnstellung</i>" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., <b>einfach nur zu Ende denken!</b> (brute force)
 
# Durch <b>Rekursion</b> kann man "vom Ende her denken" und immer das tun was zu "<i>einer Gewinnstellung</i>" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., <b>einfach nur zu Ende denken!</b> (brute force)
 
# Rekursion arbeitet den kompletten Entscheidungsbaum <b>top-down</b> ab, das verursacht manchmal Speicherüberläufe. Sogenannte <b>iterative</b> Algorithmen arbeiten den Baum <b>left-right</b> ab. Dauert vielleicht, muss aber keine offenen Probleme auf "einem Stack" bereithalten.
 
# Rekursion arbeitet den kompletten Entscheidungsbaum <b>top-down</b> ab, das verursacht manchmal Speicherüberläufe. Sogenannte <b>iterative</b> Algorithmen arbeiten den Baum <b>left-right</b> ab. Dauert vielleicht, muss aber keine offenen Probleme auf "einem Stack" bereithalten.

Version vom 27. Oktober 2023, 21:36 Uhr

Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln:

  1. Man kann Gedanken eines Einsteigers einfach codieren: Wenn die Situation so und so ist, dann mach das und das ... . Sozusagen ein Baumdiagramm in eine Programmiersprache übersetzt. Machbar und auch gar nicht doof, weil mann einfache Dinge am Ende sehr gut hinkriegt. Aber wenn man von Anfang an optimal sein will, ist das schon a bisserl uferlos. Aber man kann sich ja als Bot wie ein menschlicher Einsteiger verhalten: Erst mal probieren (also random-Strategie), dann, wenn's absehbar wird hart programmiert handeln und sich an das Schema des Programmierers halten..
  2. Durch Abstraktion kann man ähnliche Situationen zusammenfassen: "Wenn er am Eck anfängt, dann reagiere immer so und so". Dadurch werden auch die uferlosen Anfangssituationen bewältigbar.
  3. Durch Rekursion kann man "vom Ende her denken" und immer das tun was zu "einer Gewinnstellung" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., einfach nur zu Ende denken! (brute force)
  4. Rekursion arbeitet den kompletten Entscheidungsbaum top-down ab, das verursacht manchmal Speicherüberläufe. Sogenannte iterative Algorithmen arbeiten den Baum left-right ab. Dauert vielleicht, muss aber keine offenen Probleme auf "einem Stack" bereithalten.
  5. Ist das alles durch Speicher- oder Rechenleistung bewältigbar, könnte man sich das alles auch "merken", "vorbereiten" und in einer "Erfahrungsdatenbank" vorhalten und abfragen.
  6. Schließlich könnte ein Algorithmus auch durch Erfahrung lernen und "Erfahrung" aufheben. Ein Algorithmus, der macht, was sich in der Vergangenheit bewährt hat oder unterlässt, was schlecht war. Das geht schon in Richtung KI. Er lernt. Wie "wirklich intelligent" er ist, hängt natürlich davon ab, wie gut er ähnliche Situationen erkennt! Sonst ist es nur ein "on-the-fly"-Erstellen der obigen Datenbanken.
  1. http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html
  2. http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html
  3. http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html
  4. http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html
  5. http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html