Solitär (weitere deutsche Bezeichnungen: Solitaire, Steckhalma, Solohalma, Springer, Jumper, Nonnenspiel oder Einsiedlerspiel[1]) ist ein Puzzle für eine Person, das bereits hunderte Jahre alt ist. Die erste belegte Erwähnung war 1697[2]. Ziel ist es aus der Startposition durch Sprünge, die den übersprungenen Stein entfernen, die Endposition zu erreichen.
In der englischen Variante ist das Spielfeld kreuzförmig und symmetrisch, besitzt 33 Felder und wird mit 32 Spielsteinen gespielt. In der Startposition ist jedes Feld außer das mittlere mit Spielsteinen belegt. Die Zielposition ist dabei das genaue Gegenteil, ein einziger verbleibender Spielstein belegt das mittlere Feld.
In jedem Zug springt ein Spielstein in einer Linie über einen direkt daneben liegenden Spielstein auf ein freies Feld und der übersprungene Spielstein wird vom Spielfeld entfernt. Es muss immer genau ein Stein übersprungen werden und dabei können Sprünge nur horizontal oder vertikal passieren und nicht diagonal.
Das Spiel gilt als gewonnen, wenn die Zielposition erreicht wurde. Sind keine gültigen Züge mehr möglich(Beispiele in Abbildung 4) und die Zielposition wurde nicht erreicht, so gilt das Spiel als verloren.
Mit den Standard-Regeln lässt sich auf verschiedensten Spielfeldern spielen. Einige Bespiele sind in Abbildung 5 dargestellt. Neben der englischen Variante(4) ist auch die französische(1) sehr verbreitet. Eine Sonderform stellt das dreieckige Spielfeld(6) dar, bei dem Sprünge in sechs Richtungen möglich sind.
Es gibt Variationen des Spiels durch Anpassung der Regeln:
Durch die sequentielle Spielweise mit eindeutiger Start- sowie Zielposition lässt sich Solitär als ein Planungsproblem einordnen[3:4]. Ein solches Planungsproblem mithilfe des Integer Programming zu modellieren und zu lösen eröffnet neue Perspektiven auf die Anwendung des Integer Programming.
Integer Programming ist im Deutschen als ganzzahlige lineare Optimierung bekannt und bezeichnet das Lösen von Optimierungsproblemen, die ganzzahlige oder diskrete Variablen enthalten[4]. Mehr dazu im eigenständigen Artikel zu Integer Programming.
Die Modellierung erfolgt über Variablen und Gleichungen bzw. Ungleichungen.
Es gibt 2 Typen von Variablen:
Die einzelnen Bestandteile des Gesamtmodells sind nochmal in Abbildung 6 markiert.
Um für die aktuelle Spielposition zu modellieren bekommen die einzelnen Felder Koordinaten, wobei für die Zeile und die Reihe angibt. Dadurch entsteht die Menge , die die Menge aller Felder des Spielfelds ist.
Bei einem Zug springt ein Spielstein von zu , wir verwenden dafür die Schreibweise .
Solitär lässt sich als Planungsproblem betrachten, dabei lassen sich jedoch 2 Vereinfachungen durchführen um die Modellierung im Integer Programming zu erleichtern:
In der englischen Variante des Solitär starten wir mit 32 Spielsteinen, wobei mit jedem Zug genau einer entfernt wird bis ein einziger verbleibt. Jedem Schritt der Sequenz an Zügen lässt sich dabei einen Zeitpunkt t zuordnen.
Die Optimierungsfunktion bildet die Zielposition zum Zeitpunkt ab. Zum Zeitpunkt befindet sich noch genau ein Spielstein auf dem Spielfeld und wenn sich dieser auf dem Feld befindet, dann erreicht die Optimierungsfunktion ihr Maximum. Das Feld bezieht sich dabei auf das zentrale Feld.
Für die Darstellung der Zugrichtung wird sich an den Himmelsrichtungen orientiert. N steht dabei für Norden, E für Osten bzw. East, S für Süden und W für Westen.
Die gültigen Züge je Spielposition lassen sich mit einer Reihe von Ungleichungen ermitteln und aufgrund der Beschaffenheit des Spiels sind diese je Zugrichtung symmetrisch.
Beispielhaft werden sie an der Zugrichtung E erklärt:
, wenn wir einen Zug in Richtung zum Zeitpunkt von Feld ausgehend machen. kann aber nur 1 sein, wenn die Ungleichungen erfüllt werden. Das heißt auf den Feldern und befindet sich jeweils ein Stein und auf dem Feld befindet sich keiner. Zudem müssen diese Felder überhaupt existieren.
Die Züge in Richtung E und in Richtung W sind die einzigen gültigen Züge der in Abbildung 9 gezeigten Spielposition.
Auch wenn zu einem Zeitpunkt mehrere gültige Züge möglich sind, so ist darf nur genau einer durchgeführt werden. Die Summe aller gemachten Züge je Feld und Zugrichtung muss daher 1 sein:
Bei jedem Zug verändert sich der Zustand von 3 Feldern. Das Feld von dem aus gesprungen wird geht vom belegten zum unbelegten Zustand, das Feld mit dem übersprungenen Spielstein geht ebenfalls vom belegten zum unbelegten Zustand, weil der Spielstein entfernt wird, und das Feld wohin gesprungen wird geht vom unbelegten zum belegten Zustand.
Die Gleichung bildet die Differenz der Feldbelegung vom Feld zum Zeitpunkt zur Feldbelegung vom Feld zum Zeitpunkt . Ist der Wert:
Die Feldbelegung ändert sich also nur für Felder die einen Sprung involviert sind. Das lässt sich am Zug in Abbildung 11 nachvollziehen:
2006 wurde das Integer Programming Modell mit gängigen AI Plannern verglichen[3:5]. Konkret waren das Blackbox 4.22, Fast-forward 2.33, HSP 2.04 und STAN 45. Für das IP Modell wurde der Ilog Solver 5.3 verwendet. Dabei wurde jedoch nicht die Standardvariante genutzt, sondern die komplette Menge an sogenannten Reversals, die bereits im Abschnitt Spielvarianten erwähnt wurde. Für Solitär ist jedes Reversal lösbar, unabhängig von der Position des ersten Spielsteins[5]:.
Für den Vergleich hatten alle Solver bzw. AI Planner je Reversal jeweils eine Stunde Zeit und einen Pentium III 750Mhz mit 256 Mb RAM zur Verfügung. In Tabelle 1 sind Teile der Ergebnisse zusammengefasst. Zu erkennen ist, dass sich das IP-Modell mit 14 gelösten Reversals als vergleichbar effektiv zu einigen der AI Plannern zeigt. Die durchschnittliche Zeit für gelöste Reversals ist beim IP-Modell am höchsten. Zudem ist es das einzige Verfahren, wo alle ungelösten Reversals auf die Zeitbegrenzung und nicht die Speicherbegrenzung zurückzuführen sind.
| IP mit Ilog 5.3 5.3 | Bbox 4.22 | FF 2.33 | HSP 2.04 | STAN 45 | |
|---|---|---|---|---|---|
| Gelöste Reversals | 14 | 27 | 22 | 15 | 1 |
| Ungelöste Reversals - Zeitbegrenzung | 19 | 0 | 4 | 0 | 10 |
| Ungelöste Reversals - Speicherbegrenzung | 0 | 6 | 7 | 18 | 22 |
| ∅ Zeit für gelöste Reversals in s | 1334 | 98 | 390 | 144 | 1130 |
Laut den Autor*innen des Papers hat sich vor allem die Flexibilität des Integer Programming gezeigt. Die Herangehensweise war zwar weniger erfolgreich beim Lösen von Reversals, aber hat sich dafür als flexibler gezeigt wenn es darum ging weitere Spielvarianten wie Fool's Solitaire oder Long-hop Solitaire zu modellieren und zu lösen. Diese Spielvarianten ließen sich mit den zum Vergleich herangezogenen AI Plannern nicht lösen. Zudem wurde gezeigt, dass sich Integer Programming auch für die Modellierung von sequentiellen Planungsproblemen eignet.
Abb. 1 selbst erstellt; keine Vorlage
Abb. 2 selbst erstellt; Vorlage aus "Modelling and solving english peg solitaire"[3:6], S.2
Abb. 3 selbst erstellt; keine Vorlage
Abb. 4 selbst erstellt; keine Vorlage
Abb. 5 "Peg Solitaire game board shapes" by Júlio Reis is licensed under CC BY-SA 3.0
Abb. 6 selbst erstellt; auf Grundlage von "Modelling and solving english peg solitaire"[3:7], S.4
Abb. 7 Vorlage aus "Modelling and solving english peg solitaire"[3:8], S.2
Abb. 8 Vorlage aus "Modelling and solving english peg solitaire"[3:9], S.2
Abb. 9 selbst erstellt; keine Vorlage
Abb. 10 selbst erstellt; keine Vorlage
Abb. 11 selbst erstellt; keine Vorlage
Tab. 1 - Daten aus "Modelling and solving english peg solitaire"[3:10]
Wikipedia, “Solitär (Brettspiel)” wikipedia.org, para. 1, Jan. 17, 2024. [Online]. Available: https://de.wikipedia.org/wiki/Solitär_(Brettspiel) [Accessed Jan. 28, 2024]. ↩︎
E. Glonnegger, Das Spiele-Buch. Erweiterte Neuauflage. Germany: Drei Magier Spiele, 1999. ↩︎
Jefferson, C., Miguel, A., Miguel, I., & Tarim, S. A., “Modelling and solving english peg solitaire,” Computers & Operations Research, vol. 33, no. 10, October, 2006. [Online serial]. Available: url | pdf. [Accessed Jan. 28, 2024]. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
L. A. Wolsey, Integer Programming. Belmont, CA: John Wiley & Sons, 1998. ↩︎
E.R. Berlekamp, J.H. Conway and R.K. Guy, Winning ways for your mathematical plays, vol.2: games in particular. Academic Press, London, 1982. p. 729-730. ↩︎