wiki.neuro.tu-berlin.de

Shakashaka

Shakashaka

Allgemein

Shakashaka ist ein Logik-Puzzle, das vom japanischen Nikoli Verlag entwickelt wurde. Das Spielfeld ist ein rechteckiges Gitter, in welchem manche Felder schwarz gefärbt sind. Die schwarzen Felder können eine Zahl zwischen 0 und 4 enthalten.

Zum lösen des Puzzles müssen Teile der weißen Felder mit Dreiecken eingefärbt werden, sodass:

Die Entscheidung ob eine Shakashaka-Instanz lösbar ist, ist NP-Vollständig. [1]

Abb 1.) Shakashaka ungelöst Wikimedia
Abb 2.) Shakashaka gelöst Wikimedia

Lösung mit Binary-Integer-Programming [1:1]

Modell

Jedem Feld werden fünf Variablen zugewiesen. Eine für das Freilassen des Feldes und vier für alle möglichen Drehungen eines Dreiecks. Jede Variable kann den Wert 0 oder 1 annehmen. Eine Belegung mit 1 gibt an, dass das Feld entsprechend der Variable gefüllt wird.

definierte Variablen

Die Regeln des Puzzles werden mit den folgenden Regeln Modelliert.

1) Eine Belegung pro Feld

Für jedes weiße Feld gibt es die Bedingung, dass genau eine Variable mit 1 belegt werden muss.

eins-pro-feld.png

Die Variablen werden für schwarze Felder auf 0 fixiert.

2) Schwarze Felder

An jedes schwarze Feld darf nur eine gefärbte Kante eines Dreiecks oder ein leeres Feld angrenzen.

algodat-4_copy.jpg

Daraus ergibt sich diese Formel für das Feld direkt über einem Schwarzen. (das schwarze Feld befindet sich an Position (i, j))

über-schwarz.png

Die Bedingung gilt analog für die drei anderen Richtungen.

Für schwarze Felder mit Zahl k muss die Anzahl der benachbarten Dreiecke genau k sein.

screenshot_2024-02-01_at_07.13.40.png

3) Kanten von weißen Rechtecken (45°)

Jede diagonale Kante eines weißen Rechtecks muss entweder gerade oder rechtwinklig fortgeführt werden.

algodat-4_copy_2.jpg

Daraus ergeben sich die folgende Formeln:
Das größer-gleich Zeichen kann in der folgenden Bedingung als Implikation und das Plus als Disjunktion gelesen werden.

screenshot_2024-02-01_at_07.23.16.png

Damit eine Kante nur entweder gerade oder als Ecke fortgeführt wird, gibt es noch folgende Bedingung. In diesem Fall steht das Plus für eine Konjunktion.

screenshot_2024-02-01_at_07.35.52.png

Die Bedingungen gelten wieder analog für die anderen Richtungen.

4) Kanten von weißen Rechtecken (0°)

Mit den aktuellen Bedingungen kann es immernoch zu dem Fall kommen, dass die weißen Flächen, die von vertikalen und horizontalen Kanten abgeschlossen sind, konkav sind. Um das zu verhindern, müssen L-Formen aus leeren Feldern immer entweder mit einem weiteren leeren Feld oder der passenden Diagonale zu quadraten ergänzt werden.

algodat-4_copy_3.jpg

Daraus ergibt sich die Bedingung:

screenshot_2024-02-01_at_07.47.03.png

Die Bedingung gilt auch wieder analog für die anderen Richtungen.

5) Schwarze Kästchen in weißen Rechtecken (45°)

In dem Paper von Erik D. Demaine ist außerdem noch eine Bedingung zu finden die den folgenden Fall ausschließen soll. Diese ist meiner Analyse nach aber überflüssig, da Bedingung 3) für das mittlere schwarze Quadrat verletzt wird.

algodat-4.jpg

Es gibt jedoch noch eine ähnlichen Fall der mit allen Bedingungen des Papers immernoch möglich ist:

algodat-4_2.jpg

Ob dieser in lösbaren Shakashaka-Instanzen auftreten kann ist mir aber nicht bekannt.

Literaturliste


  1. Demaine, Erik D., Yoshio Okamoto, Ryuhei Uehara, and Yushi Uno. "Computational complexity and an integer programming model of Shakashaka." IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences 97, no. 6 (2014): 1213-1219. ↩︎ ↩︎