Konane, auch bekannt als hawaiianisches Dame[1], ist ein 2-Spieler-Brettspiel, bei dem Spieler abwechselnd die Steine des Gegners durch Springen schlagen. Das Spiel endet, wenn ein Spieler keinen Zug mehr ausführen kann - dieser Spieler verliert.
Abbildung 1: Konane Spielbrett [2]
Ziel des Spiels ist es, mit den eigenen Spielfiguren den letzten möglichen Spielzug durchzuführen
Das Spiel wird auf einem quadratischen n x n-Brett (meistens 8 x 8) mit abwechselnd schwarzen und weißen Kästchen (Schachbrettmuster) gespielt. Zu Beginn des spiels wird jedes weiße Feld mit einer weißen Spielfigur belegt und jedes schwarze Feld mit einer schwarzen Spielfigur. Dann nimmt der Spieler mit den schwarzen Figuren eine seiner Figuren vom Feld. Diese Figur muss entweder in einer der Ecken desSpielbretts stehen oder genau in der Mitte der mittleren Diagonalen (siehe Abbildung 2). Anschließend nimmt der weiße Spieler eine seiner Figuren, die an das nun freie Feld angrenzt, vom Spielfeld und das Spiel geht los.

Abbildung 2: Spielbrett in Startaufstellung [3]
Die Spieler bewegen awechselnd eine Spielfigur über das Spielfeld. Dabei gelten folgende Regeln für einen Zug:

Abbildung 3: Mögliche Spielzüge für den weißen Spieler[2:1]
Das Spiel endet, wenn ein Spieler keinen gültigen Spielzug mehr spielen kann. Der Spieler der zuletzt einen Zug gespielt hat gewinnt. Wie viele gegnerische Spielfiguren ein Spieler geschlagen hat spielt keine Rolle.
Konane ist ein 2-Spieler Spiel mit perfekter Information. Das Spiel hat einen durchscnittlichen branching factor von 10. Das bedeutet in einem Spielbaum hat jeder Knoten im durchschnitt 10 Kindknoten.[4]
Der Minimax-Algorithmus wird in Konane eingesetzt, um den optimalen Zug zu bestimmen, indem der Spielbaum bis zu einer festgelegten Tiefe durchsucht wird. In der Arbeit von Kaitlin Hendrick[5] wurde der Minimax-Algorithmus so implementiert:
Jeder Knoten im Baum erhält einen Utility-Wert, der die Vorteilhaftigkeit des Brettzustands für den aktuellen Spieler bewertet.
Während der Spielbaumerkundung werden die Utility-Werte von den Blattknoten aus durch den Baum zurück propagiert. Ein Knoten erhält dabei den höchsten Wert seiner Kindknoten, wenn der aktuelle Spieler (MAX) am Zug ist, oder den niedrigsten Wert, wenn der Gegner (MIN) am Zug ist. Auf diese Weise simuliert der Algorithmus die optimale Strategie für beide Spieler.
Die Simulation von Zügen erfolgt über die Funktion NEXTBOARD(), die eine Kopie des aktuellen Brettzustands erstellt und die Auswirkungen eines Zuges auf das Spielfeld simuliert. Dies ermöglicht es, jeden möglichen Zug zu bewerten, ohne den ursprünglichen Brettzustand zu verändern.
Abbildung 4 : Utility-Funktion[5:1]
Die Utility-Funktion berechnet für ein übergebenes Board und einen Player einen Wert zur Bewertung der Spielsituation. Dabei wird unterschieden zwischen den 3 Fällen: a) Spieler verliert b) Spieler gewinnt und c) das Spiel ist noch nicht zu Ende.
Die Fälle a) und b) führen zu einem Gewinn für einen der beiden Spieler und müssen daher schwerer gewcihtet werden, als Spielzüge, die das Spiel nicht beenden, daher wird die Spielbrettgröße quadriert. Führt ein Spielzug nicht zum Sieg weil die Suchtiefe erreicht ist, wird die Spielbrettgröße nur verdoppelt gewichtet. So wird sichergestellt, dass der Utility-Wert für einen Spielzug der zu einem schnellen Gewinn führt höher ist als der Wert für einen späteren Sieg oder einen pielbrettzustand der noch nicht entschieden ist.

Abbildung 5: Implementierung von Minimax in Python.[5:2]
Aufgrund des hohen branching Faktors und der großen Anzahl an möglichen Zügen in Konane steigt die Berechnungszeit bei größeren Tiefen exponentiell an (dazu später mehr). Um Spielzüge effizienter zu berechnen wird deshalb der Minimax-Algorithmus mit Alpha-Beta-Pruning zur Berechnung verwendet.
Alpha-Beta-Pruning ist eine zusätzliche Technik, die in Kombination mit dem Minimax-Algorithmus verwendet werden kann. Ein Algorithmus mit Alpha-Beta-Pruning wählt für die gleichen Spielzustände dieselben Züge wie der Minimax-Algorithmus und sollte daher die gleiche statistische Gewinnwahrscheinlichkeit erreichen. Allerdings nutzt Alpha-Beta-Pruning eine Methode, um Zweige im Spielbaum auszuschließen, die die endgültige Entscheidung nicht beeinflussen können. Dadurch wird die rechnerische Effizienz des Algorithmus erheblich verbessert.
Abbildung 6: Implementierung von Alpha-Beta-Pruning in Python[5:3]
Kaitlin Hendrick lässt in einem Experiment verschiedene Player-Agents gegeneinander Spielen. Es wird unterschieden zwischen AI-Agents und Player-Agents. Ein AI-Agent sucht seine Spielzüge mit dem Minimax-Algorithmus aus Abbildung 5 und einer mit Alpha-Beta-Pruning (Abbildung 6). Beide spielen gegen einen Random-Player, der aus einer gegeben Liste mit möglichen SPielzügen zufällig einen auswählt, einen Human Player, der einen Spielzug auswählt und einen Strategy Player, der nach folgenden Regeln seinen Spielzug aus einer Liste mit möglichen Spielzügen auswählt:
Beide AI-Agents spielten 25 Spiele gegen den Human Player und je 100 Spiele gegen die anderen beiden Player-Agents sowie den jeweils anderen AI-Agent. Dieses Turnier führte zu folgendem Ergebnis:
| Minimax Agent | Alpha-Beta Agent | |
|---|---|---|
| Siege gegen Human-Agent: | 100% | 100% |
| Siege gegen Random-Agent: | 90% | 91% |
| Siege gegen Strategy-Agent: | 89% | 89% |
| Siege gegen anderen AI-Agent: | ~50% | ~50% |
Abbildung 7: Ergebnisse von Spielen der AI-Agents mit Minimax oder Alpha-Beta-Pruning[5:4]
Um die Effizienz zu vergleichen ließ Hendrick in einem weiteren Experiment Minimax und Minimax mit Alpha-Beta-Pruning bei den Suchtiefen 2, 4 und 6 je 25 Partien gegen den Startegy-Agent spielen. Dabei wurde zu jeder Suchtiefe die Anzahl bewerteter Knoten und die durchschnittliche Spielzugdauer in ms gemessen und gegenübergestellt
| Minimax Agent | Alpha-beta Agent | |||||
|---|---|---|---|---|---|---|
| Suchtiefe | 2 | 4 | 6 | 2 | 4 | 6 |
| Zahl bewerteter Knoten | 189 | 50.093 | 4.245.710 | 178 | 11.585 | 202.735 |
| Durchschnittliche Spielzugdauer (ms) | 7,93 | 2.683,9 | 140.721,0 | 6.45 | 430,78 | 6.344,4 |
Abbildung 8 : Ergebnisse zur Effizienz[5:5]
Es lässt sich eine deutliche Steigerung der Effizienz bei Verwendung von Alpha-Beta erkennen.
Künstliche Neuronale Netze (KNN) sind von der funktionsweise des menschlichen Gehirns inspirierte Modelle des maschinellen Lernens. Sie bestehen aus künstlichen Neuronen und sind in der Lage Muster in Daten zu erkennen und Vorhersagen anhand dieser Daten zu treffen. Neuronen innherhalb einer Schicht sind mit allen Neuronen der anderen Schichten verbunden.[4:1]
Ein künstliches Neuronales Netz besteht aus drei Schichten:
Eingabeschicht (Input Layer):
Verborgene Schicht (Hidden Layer):
Ausgabeschicht (Output Layer):
Abbildung 9: Beispiel für ein Künstliches Neuronales Netz[4:2]
Vorwärtspropagation:
Fehlerberechnung:
Rückwärtspropagation (Backpropagation):
Das neuronale Netz funktioniert, indem Werte den Knoten in der Eingabeschicht zugewiesen werden. Diese Werte werden durch die verborgenen Schichten propagiert, wobei sie mit den Gewichten der Verbindungen multipliziert und durch eine Aktivierungsfunktion skaliert werden. Schließlich erreicht das Signal die Ausgabeschicht, wo die Ergebnisse abgelesen werden.
Künstliche Neuronale Netze sind die Grundlage moderner künstlicher Intelligenz und bieten vielfältige Anwendungsmöglichkeiten in Wissenschaft und Industrie.
Im Paper von Thompson[4:3]wurden verschiedene Brettdarstellungen untersucht, die als Eingabedaten für das neuronale Netz dienen. Besonders relevant sind die Darstellungen B und C, die darauf abzielen, die Brettinformationen effizient zu kodieren.
+1 für Steine des aktuellen Spielers.-1 für Steine des Gegners.0 für leere Felder.Schwäche: Diese Darstellung war am wenigsten effektiv, da sie keine klare Trennung zwischen Spieler- und Gegnerpositionen bot, was das Erkennen konsistenter Muster erschwerte.
2. Darstellung B
1 (aktueller Spieler) oder 0 (Gegner) kodiert. Diese kompakte Darstellung verwendet weniger Eingabeknoten und reduziert somit die Netzgröße.1 für kontrollierte Felder, 0 für andere).Das Training der KNN erfolgte durch überwachtes Lernen. Dabei wurden Brettzustände und Zielbewertungen (von einem Minimax-Algorithmus bereitgestellt, keine genauere Angabe zu Bewertungsfunktion im Paper von Thompson[4:4]) genutzt, um das Netzwerk zu trainieren:
Trainingsdaten:
Trainingsprozess:
Optimierung:
Überanpassung (Overfitting):
Die Integration von KNN in Konane zeigte, dass sie eine effektive und effiziente Methode zur Bewertung von Brettzuständen darstellen. Die Wahl der Brettdarstellung spielte eine entscheidende Rolle für die Leistungsfähigkeit des Netzwerks. Darstellung C war die erfolgreichste und zeigte die besten Ergebnisse bei der Verarbeitung von Brettinformationen.
Abbildung 1: Konane Spielbrett: Screenshot von Cyningstan[2:2]
Abbildung 2: Spielbrett in Startaufstellung: Screenshot von Cyningstan[3:1]
Abbildung 3: Mögliche Spielzüge für den weißen Spieler: Screenshot von Cyningstan[2:3]
Abbildung 4: Utility Funktion: Screenshot aus Paper von Hendrick[5:6]
Abbildung 5: Minimax-Algorithmus: Screenshot aus Paper von Hendrick[5:7]
Abbildung 6: Alpha-Beta: Screenshot aus Paper von Hendrick[5:8]
Abbildung 7: Ergebnisse von Spielen gegen andere Agents: Screenshot aus Paper von Hendrick[5:9]
Abbildung 8: Ergebnisse zur Effizienz Ergebnisse. Übersetzt aus Paper von Hendrick[5:10] und Anpassung Dezimalkomma und Trennpunkte in deutsche Schreibweise
Abbildung 9: Künstliches Neuronales Netz: Screenshot aus Paper von Thompson[4:5]
Seite „Kōnane“. In: Wikipedia – Die freie Enzyklopädie. Bearbeitungsstand: 20. Oktober 2023, 20:34 UTC. URL: https://de.wikipedia.org/w/index.php?title=Kōnane&oldid=238348848 (Abgerufen: 17. Januar 2025, 18:45 UTC) ↩︎
http://www.cyningstan.com/download/243/konane-leaflet ↩︎ ↩︎ ↩︎ ↩︎
Thompson, Darby. "Teaching a Neural Network to Play Konane." Undergraduate Thesis, Bryn Mawr College, Bryn Mawr PA (USA) (2005). ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Hendrick, Kaitlin. "Analysis of Artificial Intelligence Techniques for Konane." (2018). ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎