lösen des zauberwürfels (rubik's cube) mit hilfe von sat ... · modellierung des...

15
Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT-Beweisern von Kiril Šramko J.W.Goethe-Universität Frankfurt Juni, 2012 Inhaltsverzeichnis 1 Einleitung 2 2 Der Zauberwürfel 3 3 SAT-Beweiser 3 4 Die Lösung 5 4.1 Die FemtoCube 5 4.2 (naive) Modellierung des Zauberwürfels 5 4.2.1 Faces 6 4.2.2 Faceslets 6 4.2.3 Farben 6 4.2.4 Prüfen der Lösung 7 4.2.5 Einzelne Drehungen 8 4.3 (naive) Modellierung des Lösungswegs 8 4.3.1 Die Exactly-One Funktion 9 4.3.2 Eine lösendes Manöver finden 9 4.3.3 Eine Lösung für die FemtoCube 10 4.4 Optimierte Lösung 12 4.4.1 Kociemba's Zwei-Phasen Algorithmus 12 4.4.2 Manöver Tuning 13 5 Software-Umsetzung und Performance 13 6 Konklusion 15 7 Quellen 15

Upload: others

Post on 30-Oct-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Lösen des Zauberwürfels (Rubik's Cube) mitHilfe von SAT-Beweisernvon Kiril Šramko

J.W.Goethe-Universität FrankfurtJuni, 2012

Inhaltsverzeichnis1 Einleitung 22 Der Zauberwürfel 33 SAT-Beweiser 34 Die Lösung 54.1 Die FemtoCube 54.2 (naive) Modellierung des Zauberwürfels 54.2.1 Faces 64.2.2 Faceslets 64.2.3 Farben 64.2.4 Prüfen der Lösung 74.2.5 Einzelne Drehungen 84.3 (naive) Modellierung des Lösungswegs 84.3.1 Die Exactly-One Funktion 94.3.2 Eine lösendes Manöver finden 94.3.3 Eine Lösung für die FemtoCube 104.4 Optimierte Lösung 124.4.1 Kociemba's Zwei-Phasen Algorithmus 124.4.2 Manöver Tuning 135 Software-Umsetzung und Performance 136 Konklusion 157 Quellen 15

Page 2: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

1 EinleitungDer Zauberwürfel (auch bekannt als Rubik's Cube oder Magic Cube) ist einmechanisches 3D-Rätselspiel, welches 1974 von dem ungarischenDesignprofessor Ernõ Rubik erfunden wurde. Ursprünglich zum dem Zweckentwickelt, seinen Studenten räumliches Denken beizubringen und diemechanischen Probleme des Würfels zu bewältigen, entstand mit seinerkommerziellen Veröffentlichung 1980 ein breites Feld an Interessierten undInteressen rund um den Zauberwürfel. Diesen Erfolg verdankt der Zauberwürfelnicht zuletzt seiner intuitiv erfassbaren Idee bzw. Spielregeln, bei gleichzeitighoher Komplexität der Lösungsstrategien.Der Zauberwürfel ist ein Würfel, der seinerseits aus 27 kleineren Würfelnaufgebaut ist. Im Urzustand zeigen alle 9 Flächen der kleinen Würfel einer Seitedie gleiche Farbe an. Durch drehen einzelner Seiten in 90°-Schritten könne diePositionen und Lagen der kleinen Würfel permutiert werden. Die Rätsel-Aufgabebesteht darin, einen permutierten Würfel in den Urzustand zu versetzen.Rund um dieses Rätsel haben sich seit den 80ern eine Vielzahl von speziellenDisziplinen entwickelt. Folgende Beispiele sind nur ein kleiner Auszug:

• Speedcubing: Wettbewerb, mit dem Ziel, einen permutiertenWürfel händisch und ohne weitere Hilfsmittel schnellstmöglichzu lösen.• God's Number: Die Suche nach der maximalen Anzahl anZügen, mit denen jede Permutation gelöst werden kann.• Optimale Lösung für spezielle Permutationen.

Michael Reid zeigte 1995, mit der Superflip genannten Permutation, einePermutation die in nicht weniger als 20 Zügen lösbar ist. Seit 2010 steht fest,dass die God's Number 20 ist. Mit Unterstützung von Google'sRechnerinfrastruktur wurden alle Permutation durchgerechnet und für jedegezeigt, dass sie in maximal 20 Schritten lösbar ist.[Cube20]Das Erfüllbarkeitsproblem der Aussagenlogik (SAT, von englisch satisfiability) istein Entscheidungsproblem, bei welchem untersucht wird, ob für eineaussagenlogische Formel (a.l.) eine erfüllende Belegung existiert [WP01].Variablen in aussagenlogischen Formeln können mit einem von zwei Zuständenbelegt werden: 1 (oder auch wahr bzw. true) und 0 (oder auch falsch bzw. false).Mit Hilfe von SAT-Solver genannter Software versucht man Strategien für dieoptimierte Suche nach einer Belegung umzusetzen, so dass eine Formel zu demWert 1 berechnet. Verwandte Fragestellungen der Aussagenlogik sind dieFragen:

• ob eine Formel eine Tautologie ist, also für alle Belegungenwahr ist.• ob eine Formel eine Kontradiktion ist, also für alle Belegungenfalsch ist• nach allen erfüllenden Belegungen bzw. der Anzahl erfüllenderBelegungen, genannt MAX-SAT.

Da das Erfüllbarkeitsproblem im allgemeinen NP-vollständig ist werdenHeuristiken oder auch stochastische Verfahren gesucht, die Aussagen für großeFormeln mit vielen Variablen dennoch berechenbar machen.Im folgenden wird J. Chens [Chen01] Ansatz beschrieben werden, dass Problemder Suche nach einer (nicht unbedingt optimalen) Lösung eines Zauberwürfelsmittels SAT-Formeln zu formulieren.

2/15

Page 3: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

2 Der ZauberwürfelDer Zauberwürfel (engl. cube) ist ein dreidimensionales Gebilde, welches sichaus 27 gleichgroßen Würfelchen (engl. cubies oder auch cubelets)zusammensetzt, von denen in machen Umsetzungen das nicht sichtbare,innerste Würfelchen aus mechanischen Gründen entfernt ist. Die 26 sichtbarenWürfelchen unterteilen sich in

• 6 mit nur einer sichtbaren Seite (Mittelstein, engl. center)• 12 mit zwei sichtbaren Seiten (Kantenstein, engl. edge) und• 8 mit drei sichtbaren Seiten (Eckstein, eng. corner)Die Seiten (engl. faces) des Würfels werden durch die sichtbare Farbe desmittleren Würfelchens definiert oder alternativ durch deren Position in derjeweils aktuellen Darstellung. Diese Positionen werden mit den englischenBegriffen Up, Down, Left, Right, Front und Back benannt. Die sichtbaren Flächender Würfelchen bezeichnet man mit dem englischen Begriff Facelets.Für die Notation der Bewegungen und dem damit einhergehenden Zählen derfür eine Lösung benötigten Schritte, hat es sich durchgesetzt, den erstenBuchstaben der jeweiligen Seite zu nutzen. So bezeichnet U eine 90°-Drehungder oberen Seite (upper) im Uhrzeigersinn bei Draufsicht. Ergänzend gibt esnoch die Bewegungen U' (reverse-upper, also 90° gegen den Uhrzeigersinn)und U2 (zwei gleiche Züge, resultierend in einer 180°-Drehung). Analog benutztman die weiteren 15 Bezeichnung (D,D',D2; L,L',L2; R,R',R2; F,F',F2; B,B' undB2) und erhält insgesamt 18 mögliche Drehungen, mit denen jede Lösungerreicht werden kann.Hierbei mag auffallen, dass es mit diesem Spektrum an Zügen unmöglich ist diein der Mitte der sechs Seiten liegenden Cube zu bewegen. Allerdings ist diesauch nicht notwendig, da man durch bewegen der anliegenden Seiten zu demselben Ergebnis gelangt. So kann die Drehung der zwischen left und rightliegenden, mittleren Schicht um 90° in eine Richtung auch durch das Drehender left- und right-Schichten um -90° erreicht werden. Auf diese Weise erzeugtman die gleichen Relativ-Positionen der Cubies zueinander. Lediglich diePerspektive des Betrachters auf den Cube unterscheidet sich in den beidenMethoden.Neben den hier vorgestellten Begriffen existieren in Fachkreisen auch zahlreicheweitere Bezeichnungen, die für die hiesige Erörterung jedoch nicht weiterbenötigt werden.

3 SAT-BeweiserDas Erfüllbarkeitsproblem der Aussagenlogik (SAT, von englisch satisfiability) istdie Frage, ob für eine aussagenlogische Formel eine Variablenbelegungexistiert, so dass die Formal zu wahr ausgewertet wird. In diesem Teil werdendie für das Verständnis der späteren Lösung benötigten Grundlagen derAussagenlogik skizziert. Dazu ein kleines Beispiel:

• Sei P die Aussage: Hans ist pünktlich am Bahnsteig.• Dann bezeichnet ¬P die gegenteilige Aussage, also Hans istnicht pünktlich am Bahnsteig.• Sei V die Aussage: der Zug hat Verspätung.• Dann bezeichnet ¬V die gegenteilige Aussage, also der Zug hatkeine Verspätung.

3/15

Page 4: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Der Einfachheit halber kann man sagen, dass daszutreffen einer Aussage (z.B.: P) der 1 entspricht unddas nicht Zutreffen (z.B.: ¬P) der 0. Aussagen könnennun mittels Operatoren verknüpft werden. Für dasVerständnis der späteren Kapitel werden lediglich dieOperatoren und, oder und genau-dann-wenn benötigt.Der und-Operator wertet nur dann zur 1 aus, wenn dieAussagen zu beiden Seiten zu 1 auswerten, er wird auch mit and oder demSymbol ˄ ausgedrückt. Steht kein Operator zwischen zwei Ausdrücken, wirdebenfalls der und-Operator angewendet. Der oder-Operator ist als nichtexklusives oder zu verstehen und wertet zu 1 aus, wenn mindestens eineAussage zu 1 auswertet, er wird auch mit or oder dem Symbol ˅ ausgedrückt.Der genau-dann-wenn-Operator wertet zu 1 aus, wenn die Aussagen zu beidenSeiten zum gleichen Wert auswerten, er wird durch <=> oder ⇔ ausgedrückt.Das Negationssymbol ¬ kann vor jede Aussage geschrieben werden undbewirkt deren Umkehrung zum jeweils anderen Wert.Möchte man nun sagen, dass Hans seinen Zug erreicht, wenn:

• Hans pünktlich ist, (nicht exklusives) oder• Hans zwar nicht pünktlich ist, aber der Zug Verspätung hatso kann man dies durch folgende aussagenlogische Formel ausdrücken:

φHans erreicht seinen Zug = P ٧ ( ¬P ٨ V )Des weiteren gelte im Rahmen dieser Arbeit: geklammerte Ausdrücke werdenvor ungeklammerten ausgewertet. Werden Ausdrücke nicht geklammert, sowerden die Aussagen von links nach rechts ausgewertet. Die Negation beziehtsich nur auf das direkt folgende Symbol.Ist eine Formel derart aufgebaut, dass mehrere veroderte Ausdrücke(Disjunktionen) verundet (konjugiert) werden, so spricht man davon, dass dieFormel der konjunktiven Normalform, kurz KNF, genügt. Werteteiner der Disjunktionenterme zu 0 aus, so kann derGesamtausdruck nicht mehr zu 1 auswerten.Mit Erfüllbarkeit werden Verfahren beschrieben, die für gegebeneaussagenlogische Formeln prüfen, ob die darin vorkommenden Aussagen-Variablen derart belegt werden können, dass die gesamte Formel zu wahrauswertet. Für die obige Formel φH.e.s.Z. könnte dies derart ablaufen, dass einSAT-Solver zunächst die Menge der dort vorhandenen Variablen prüft – indiesem Fall also {P, V}. Im einfachsten Fall kann nun für alle möglichenBelegungen die Formel ausgewertet werden. Existieren n Variablen, so gibt es2n Belegungen. Der SAT-Solver testet also:

1. P = 0; V = 0 → φH.e.s.Z. = 02. P = 1; V = 0 → φH.e.s.Z. = 1

bereits an dieser Stelle würde ein SAT-Solver zumeist seine Arbeit beenden, daer eine erfüllende Belegung gefunden hat und die beiden weiteren Belegungen( 3:[P=0;V=1], 4:[P=0;V=1]) keine neue Erkenntnis bringen.

A B A ۸ B A ٧ B A B

0 0 0 0 1

0 1 0 1 0

1 0 0 1 0

1 1 1 1 1

Beispiel logischer Operatoren

(A٧B٧C)٨(¬A٧B٧D)Beispiel KNF

4/15

Page 5: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

4 Die LösungFür die Lösung des Puzzles mittels SAT sind im wesentlichen drei Überlegungennotwendig:

1. zunächst muss man einen Weg finden, den Ausgangszustanddes Cubes als aussagenlogischen Ausdruck zu kodieren2. als nächstes benötigt man die Fähigkeit zu prüfen, ob einerreichter Zustand des Würfels der gesuchte, fertigeLösungszustand ist.3. und zuletzt benötigt man einen Ausdruck, um die Manöver, alsodie Drehungen, aussagenlogisch zu beschreiben.Sehr schnell wird man jedoch feststellen müssen, dass eine Modellierung desRubik's Cubes als SAT in einer solchen Arbeit nur schematisch erfolgen kann, dadie Menge der benötigten Ausdrücke und Variablen jede konkreteDarstellungsmöglichkeit auf Papier sprengt. Da sich jedoch diese Arbeit zumZiel setzt, auf praktische Art das tatsächliche Erscheinungsbild einer SAT-Lösung für Rubik's-artige Rätsel darzustellen, wurde ein vereinfachtes Rätselentwickelt: die FemtoCube. Im Folgenden wird parallel zur abstraktenModellierung des Rubik's Cubes, auch die sehr ähnliche und konkreteModellierung des FemtoCubes gezeigt, um sich ein realistisches Bild vomUmfang und dem Aussehen der erstellten Ausdrücke machen zu können.Im letzten Teil der Lösung wird noch auf einige Aspekte der Rubik's CubeModellierung eingegangen, insbesondere auf den zwei-phasen Algorithmusnach Kociemba.4.1 Die FemtoCubeDie FemtoCube ist die wohl kleinste Form eines Rubiks-Puzzels.Sie besteht aus zwei Cubies, die an einer Seite miteinanderverbunden sind. Die Cubies können nur an einer Achsegegeneinander verdreht werden. Für die FemtoCube werdenlediglich vier Farben für die insgesamt acht Facelets benötigt.Es existieren somit nur vier unterschiedliche Relativpositionender Cubies zueinander und es werden auch nur vier Seitenbetrachtet.Für unsere Zwecke definieren wir das linke Cubie als fixiert. Dasrechte Cubie kann mit den beiden Zugvarianten R und R'manipuliert werden. Um es nicht zu einfach zu halten, verzichten wir auf denZug R2.In der folgenden Beschreibung der Rubik's Cube Modellierung wird zu jedemAbschnitt die analoge Modellierung der FemtoCube in einem gelb hinterlegtenKasten beschrieben.4.2 (naive) Modellierung des ZauberwürfelsWir werden hier den Rubik's Cube mit all seinen Eigenschaften undManipulationsmöglichkeiten als aussagenlogischen Ausdruck kodieren. Obwohlwir bereits hier einige Optimierungen verwenden werden, wird die hier erstellteLösung auf aktuellen Computern nicht in annehmbarer Zeit berechenbar sein.Sie wird jedoch eine gute Basis für die später folgende, tatsächliche Lösungsein.

Die 4 Zustände derFemtoCube:

5/15

Page 6: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Bei der Modellierung werden wir nun versuchen, die Farbe eines Facelets zueinem bestimmten Zeitpunkt festzuhalten. Um welches Facelet und um welchenZeitpunkt es sich handelt werden wir über Indizes bestimmen.4.2.1 FacesDie Rubik's Cube besitzt sechs Seiten. Für die Seitenwerden keinerlei eigene Variablen benötigt. Lediglichzur Angabe der Position eines Facelets benötigt maneine Face-Information. Diesewerden wir als Zahl (1,..,6) in einemIndex mitgeben.4.2.2 FacesletsAnalog zu den Faces benötigen wir auch für die Facelets lediglich einen Index,um darauf verweisen zu können. Da wir bereits mit dem Faces-Index auf diejeweilige Seite verweisen, benötigt der Facelets-Index lediglich dasSpektrum von 1 bis 9, wobei die 5 auf das mittlere Facelet einer Seiteverweist. Das mittlere Facelte gilt als Referenzfür die Seite, denn da es nicht durch die unshier zur Verfügung stehenden Züge bewegtwerden kann, müssen durch die Manöver dieweiteren acht Facelets an das mittlereangeglichen werden.4.2.3 FarbenFür die Kodierung der Farben werden hier erstmals logische Variablenverwendet. Der Rubik's Cube ist im Original in sechs Farben Rot, Grün, Blau,Gelb (Y), Orange und Weiß gefärbt. Um zu kodieren, dass beispielsweise das 2.Facelet im Left-Face (also Face mit dem Index 3) im Ausgangszustand die FarbeWeiß trägt, kann man den Ausdruck formulieren:

Dadurch würden jedoch unnötig vieleVariablen erzeugt, denn schließlich kann einFacelet zu einem bestimmten Zeitpunkt nureine Farbe tragen. Fasst man eine a.l.Variable jedoch als ein Bit aus derInformationstechnologie auf, so kann manden sechs Farben Binärwerten von 0 bis 5zuordnen und dadurch die Färbung derFacelets kodieren. Für den höchsten Wert,also die 5, benötigt man 3 Bit. Man kann alsodie Hälfte der Variablen einsparen, wennman eine solche 3-Bit Kodierung verwendet.Für die gleiche Aussage ergibt sich so derAusdruck:

ϕ =(c1,2,3,R ⇔ 0) ∧ (c1,2,3,G ⇔ 0) ∧ (c1,2,3,B ⇔ 0)∧(c1,2,3,Y ⇔ 0) ∧ (c1,2,3,O ⇔ 0) ∧ (c1,2,3,W ⇔ 1)

ϕ =(c1,2,3,1 ⇔ 1) ∧ (c1,2,3,2 ⇔ 0) ∧ (c1,2,3,3 ⇔ 1)

Die 6 Faces:1: Front2: Back3: Left4: Right5: Up6: Down

Für die FemtoCube gelte:1: Front 2: Back3: Up 4: Down

Die 9 Faceletseines Face:Die FemtoCube besitzt proFace lediglich zwei Facelets.Das linke, fixierte trägt denIndex 1, das rechte,bewegliche die 2.

FarbeBit

1 2 3

Rot 0 0 0

Grün 1 0 0

Blau 0 1 0

Gelb 1 1 0

Orange 0 0 1

Weiß 1 0 1

Farbkodierung

Da die FemtoCube nur 4 Farben besitzt kommt ihre Kodierung der Facelet-Färbung mir nur 2 Bit aus:

FarbeBit

1 2

Rot 0 0

Grün 1 0

Blau 0 1

Gelb 1 1

6/15

Page 7: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Im folgenden werden wir die Farbkodierung eine Facelets immer mit Variablenbenennen, die dem eben verwendeten Namesschema folgen:c{Zeitpunkt (n)},{Face (f)},{Facelet (l)},{Farbcode-Bit (b)}

Der Zeitpunkt beschreibt dabei einen bei 1 beginnenden Index, der proBewegung des Cubes um 1 erhöht wird. Der Zeitpunkt 1 verweist somit auf denAusgangszustand.

4.2.4 Prüfen der LösungUm zu Überprüfen, ob ein erreichter Zustand n den gesuchten Lösungszustanddarstellt, müssen nun alle Facelets einer Face dieselbe Farbe aufweisen, die das mittlere Facelet (5)auf der jeweiligen Face. Der hierfür benötigteAusdruck für den Rubik's Cube sprengt bereits denhier zur Verfügung stehende Platz für eineanschauliche Darstellung. Daher muss der Ausdruckin einer verkürzenden Summenschreibweisedargestellt werden:

Anhand der verwendeten Indizes ergeben sich so6∙9∙3 = 162 Ausdrücke.

Sn =

1≤b≤3∧1≤f≤61≤l≤9

cn,f,l,b ⇔ cn,f,5,b

Die vollständige Kodierung des Anfangszustands der abgebildeten FemtoCubes lautetC = (c1,1,1,1 ⇔ 1) ∧ (c1,1,1,2 ⇔ 0) ∧ ← Front, Left, Green

(c1,1,2,1 ⇔ 0) ∧ (c1,1,2,2 ⇔ 1) ∧ ← Front, Right, Blue(c1,2,1,1 ⇔ 1) ∧ (c1,2,1,2 ⇔ 1) ∧ ← Back, Left, Yellow(c1,2,2,1 ⇔ 0) ∧ (c1,2,2,2 ⇔ 0) ∧ ← Back, Right, Red(c1,2,1,1 ⇔ 0) ∧ (c1,1,1,2 ⇔ 1) ∧ ← Top, Left, Blue(c1,3,2,1 ⇔ 1) ∧ (c1,3,2,2 ⇔ 1) ∧ ← Top, Right, Yellow(c1,4,1,1 ⇔ 0) ∧ (c1,4,1,2 ⇔ 0) ∧ ← Bottom, Left, Red(c1,4,2,1 ⇔ 1) ∧ (c1,4,2,2 ⇔ 0) ← Bottom, Right, Green

Die Überprüfung, ob dieFemtoCube den fertigen Zustandnach n Schritten erreicht haterweist sich als deutlich kürzer.In Summenschreibweise ergibtsich:

Somit ergeben sich hier nur2∙4=8 Ausdrücke.

Sn =

1≤b≤2∧1≤f≤4

cn,f,2,b ⇔ c1,f,1,b

Wir haben nun bereits eine Möglichkeit gefunden, 1.) den Anfangszustand eines Rubuk'sCube als aussagenlogischen Ausdruck zu schreiben und 2.) zu prüfen, ob ein erreichterZustand der Lösung entspricht. Damit können wir nun bereits eine erste sinnvolleAnwendung definieren: Die Frage, ob der Anfangszustand eines Cubes bereits der gelösteZustand ist? Also SAT0(cube).Nehmen wir die Kodierung des von Anfang an gelösten FemtoCube und verunden sie mitder Überprüfung für die Lösung, so erhalten wir:

SAT0 = (c1,1,1,1 ⇔ 1) ∧ (c1,1,1,2 ⇔ 0) ∧ ← Front, Left, Green(c1,1,2,1 ⇔ 0) ∧ (c1,1,2,2 ⇔ 1) ∧ ← Front, Right, Blue(c1,2,1,1 ⇔ 1) ∧ (c1,2,1,2 ⇔ 1) ∧ ← Back, Left, Yellow(c1,2,2,1 ⇔ 0) ∧ (c1,2,2,2 ⇔ 0) ∧ ← Back, Right, Red(c1,2,1,1 ⇔ 0) ∧ (c1,1,1,2 ⇔ 1) ∧ ← Top, Left, Blue(c1,3,2,1 ⇔ 1) ∧ (c1,3,2,2 ⇔ 1) ∧ ← Top, Right, Yellow(c1,4,1,1 ⇔ 0) ∧ (c1,4,1,2 ⇔ 0) ∧ ← Bottom, Left, Red(c1,4,2,1 ⇔ 1) ∧ (c1,4,2,2 ⇔ 0) ∧ ← Bottom, Right, Green(c1,1,1,1 ⇔ c1,1,2,1) ∧ (c1,1,1,2 ⇔ c1,1,2,2) ∧ ← Front(c1,2,1,1 ⇔ c1,2,2,1) ∧ (c1,2,1,2 ⇔ c1,2,2,2) ∧ ← Back(c1,2,1,1 ⇔ c1,3,2,1) ∧ (c1,1,1,2 ⇔ c1,3,2,2) ∧ ← Top(c1,4,1,1 ⇔ c1,4,2,1) ∧ (c1,4,1,2 ⇔ c1,4,2,2) ← Bottom

7/15

Page 8: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

4.2.5 Einzelne DrehungenDie Manöver am Rubik's Cube kann man als eine Funktion ansehen, welche denFarbzustand eines Faceltes zum Zeitpunkt n auf den Farbzustand eines Faceletszum Zeitpunkt n+1 mapt. Die hier verwendeten Drehungen verändern dabeijeweils 21 Facelets und belassen die restlichen 33 Facelets unverändert. Einesolche Funktion für die Bewegung R als erstes Manöver kann wie folgtbeschrieben werden werden:

Analog zu diesem Beispiel kann man die weiteren 17 Ausdrücke für die weiterenDrehungen aufbauen. Wir werden im folgenden diese Funktionen als Turn-Funktion referenzieren.

4.3 (naive) Modellierung des LösungswegsWir sind nun in der Lage, den Anfangszustand einer Cube aussagenlogischauszudrücken, das Erreichen des gelösten Zustands festzustellen und einzelneDrehungen anzugeben. Um die Lösung für eine Cube zu suchen müssen wir diesnoch zu einem großen Ausdruck amalgamieren. Jedoch fehlt derzeit noch einAusdruck, der angibt, welche Drehung zu welchem Zeitpunkt ausgeführtwerden soll. Bevor wir jedoch diesen Ausdruck fomulieren benötigen wir nochein Werkzeug: eine exactly-one-Funktion, also einen Ausdruck, der nur dann zu1 auswertet, wenn genau eines seiner Argumente (a.l. Variablen) 1 ist und dierestlichen 0.

t1,R =

1≤b≤3∧l∈{3,6,9}

c1,1,l,b ⇔ c2,5,l,b∧c1,5,l,b ⇔ c2,2,l,b∧c1,2,l,b ⇔ c2,6,l,b∧c1,6,l,b ⇔ c2,1,l,b

1≤b≤3∧

c1,4,1,b ⇔ c2,4,3,b∧c1,4,2,b ⇔ c2,4,6,b∧c1,4,3,b ⇔ c2,4,9,b∧c1,4,4,b ⇔ c2,4,2,b∧c1,4,6,b ⇔ c2,4,8,b∧c1,4,7,b ⇔ c2,4,1,b∧c1,4,8,b ⇔ c2,4,4,b∧c1,4,9,b ⇔ c2,4,7,b

1≤b≤3∧1≤l≤ 9

c1,3,l,b ⇔ c2,3,l,b

1≤b≤3

f∈{1,2,5,6}∧1≤l≤9;l 6≡0mod3

c1,f,l,b ⇔ c2,f,l,b

Das FemtoCube-Modell besitzt zwei Drehungen: R und R'. Da bei beiden Drehungen dergesamte linke Teil des FemtoCube unverändert bleibt, können bei den Modellierung derDrehungen lediglich die rechten Facelets einbezogen werden:tR,N = (cN,1,2,1 ⇔ cN+1,3,2,1) ∧ (cN,1,2,2 ⇔ cN+1,3,2,2) ∧ ← Front nach Up

(cN,2,2,1 ⇔ cN+1,4,2,1) ∧ (cN,2,2,2 ⇔ cN+1,4,2,2) ∧ ← Back nach Down(cN,3,2,1 ⇔ cN+1,2,2,1) ∧ (cN,3,2,2 ⇔ cN+1,2,2,2) ∧ ← Up nach Back(cN,4,2,1 ⇔ cN+1,1,2,1) ∧ (cN,4,2,2 ⇔ cN+1,1,2,2) ← Down nach Front

tR',N = (cN,1,2,1 ⇔ cN+1,4,2,1) ∧ (cN,1,2,2 ⇔ cN+1,4,2,2) ∧ ← Front nach Down(cN,2,2,1 ⇔ cN+1,3,2,1) ∧ (cN,2,2,2 ⇔ cN+1,3,2,2) ∧ ← Back nach Up(cN,3,2,1 ⇔ cN+1,1,2,1) ∧ (cN,3,2,2 ⇔ cN+1,1,2,2) ∧ ← Up nach Front(cN,4,2,1 ⇔ cN+1,2,2,1) ∧ (cN,4,2,2 ⇔ cN+1,2,2,2) ← Down nach Back

8/15

Page 9: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

4.3.1 Die Exactly-One FunktionIn der Aussagenlogik sind zwei Probleme gut bekannt und umfassendBehandelt:

• at-least-one (ALO): mindestens ein Element wahr.• at-most-one (AMO): kein oder ein Element wahr.Durch Kombination der beiden Funktionen kann man eine exactly-one-Funktiongenerieren.Die at-least-one-Funktion kann als einfache veroderung der Variablengeschrieben werden:

Sobald ein der übergebenen Variablen wahr ist, wird diese als Wert für denGesamtausdruck übernommen.Die at-most-one-Funktion wird hier nur in einer simplen Variante vorgestellt. Sieist definiert als

Für drei Variablen sieht die explizite Schreibweise wie folgt aus:

Jede Variable wird also mit allen Variablem mit größerem Index verknüpft. Aufdiese Weise werden alle möglichen Paare von Variablen kombiniert. Sollten nunmehr als eine Variable mit 1 belegt sein, so werden diese an einer Stellegemeinsam in einem Ausdruck auftauchen. Durch die Negation entsteht alsoder Ausdruck

Da alle Ausdrücke verundet sind, wird dieser eine Asudruck die gesamte Formelzu 0 auswerten lassen. Eine einzelne Variable mit Belegung 1 (negiert 0) wirdjedoch durch ihren jeweiligen Nachbarn in jedem Teilausdruck abgefangen, sodass lediglich 1en verundet werden.Somit haben wir nun auch die Möglichkeit, die exactly-one-Formel auszudrückenals:

4.3.2 Eine lösendes Manöver findenMit all diesen Tools wollen wir nun den letzten Schritt gehen und Lösungen fürbeliebige Cubes finden. Die Lösung kommt allerdings nicht ohne einenalgorithmischen Anteil aus. Da für Rubik's Cube bekannt ist, dass jedePermutation in maximal 20 Zügengelöst werden kann, können wirden algorithmischen Teil wie folgtabschätzen: (siehe Katen links).

ϕALO({vars}) =∨

v∈{vars}

v

ϕAMO(v1, · · · , vn) =n−1∧i=1

n∧j=i+1

(vi ∨ vj)

ϕAMO(v1, v2, v3) = (v1 ∨ v2) ∧ (v1 ∨ v3) ∧ (v2 ∨ v3)

ϕ = vi ∨ vj = 1 ∨ 1 = 0 ∨ 0 = 0

ϕex.1(v1, · · · , vn) = ϕALO(v1, · · · , vn) ∧ ϕAMO(v1, · · · , vn)

boolean sat = false;for (int i = 0; (i <= 20) && (!sat); i++) {

sat = cube_sat(startbelegung, i);// i ist die Anzahl der Züge

}if (sat)

System.out.println("Hab's!");else

System.out.println("Geht ned!");

Der Algorithmus fürdie FemtoCube siehtgenauso aus, nurdass seine For-Schleife bis 2 statt 20zählt.9/15

Page 10: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Die Methode cube_sat(cube, turns) soll in diesem Fall mit der Startbelegungeines Cubes eine a.l. Formel aufstellen, welche1. die Starbelegung a.l. Kodiert2. turns-viele mögliche Bewegungen kodiert3. sicherstellt, dass pro Zug nur eine Bewegung möglich ist4. den erreichten Zustand auf die Lösung hin überprüft

Die Lösungen zu den Punkten 1 und 4 können unverändert von obenübernommen werden. Für 2 und 3 müssen wir noch Variablen einführen, diebestimmen, welcher Zug zu welchem Zeitpunkt vollzogen wird. Wir werdendiese Variablen wie folgt benennen:

Ist z.B: m3,R = 1, so bedeutet dies, dass als dritter Zug die Drehung rightvollzogen wird. Da pro Zug nur eine Drehung erlaubt ist müssen wir nunsicherstellen, dass nur eine der 18 Variablen m3,k mit 1 belegt ist und dieweiteren mit 0. Dies können wir mittels der eben definierten exactly-one-Funktion leisten:

Jetzt müssen wir noch sicherstellen, dass nur die Bewegung ausgeführt wird,deren Zustand auf 1 gesetzt ist. Dies erreichen wir, indem wir die jeweilige Turn-Funktion mit dem negierten ihrer Move-Variable verodern:

Da die Formeln von links nach rechts ausgewertet werden, werden somit dieAusdrücke für die nicht zutreffenden Drehungen nicht ausgewertet.Die amalgamierte Formel zur Prüfung, ob ein Cube in genau n Zügen lösbar istlautet dann

4.3.3 Eine Lösung für die FemtoCube

mn,k : n ∈ {1, .., 20}; k ∈ Turns =

F, F ′, F2, B,B′, B2,U, U ′, U2, D,D′, D2,L, L′, L2, R,R′, R2

Mn = ϕex.1({mn,k : k ∈ Turns})

Tn =∧

k∈Turn

(mn,k ∨ tn,k)

SAT (Cube, n) = CCube

n∧i=1

Mi

n∧i=1

Ti ∧ Sn

Nun möchten wir dies auch für den FemtoCube nutzen. Für den FemtoCubelautet die God's Number 2 (also die maximale Zahl an Zügen, um einePermutation zu lösen). Wir werden nun also die vollständige Formel für einenZug und später auch für zwei Züge zeigen.Die exactly-one-Funktion eines Zugs für den FemtoCube lautet:

Die Funktion, welche die eigentliche Drehung ausführt, lautet:

ϕex.1(mn,R,mn,R′) =ϕALO(mn,R,mn,R′) ∧ ϕAMO(mn,R,mn,R′)

=(mn,R ∨mn,R′

)∧(mn,R ∨mn,R′

)

10/15

Page 11: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Suchen wir nun Lösung für den einmal mit R' verdrehten Würfel

Gibt man diese Formel in den SAT-Solver* ein, so erhält man für eine lösendeBelegung folgendes Model (RR steht hier für R'):

Ändert man jedoch die Startbelegung auf den gelösten Würfel, oder den mitR2 um 180° gedrehten Würfel, so erhält man die Ausgabe:

Tn =(mn,R ∨ tn,R) ∧ (mn,R′ ∨ tn,R′)

=(mn,R ∨((cn,1,2,1⇔cn+1,3,2,1)∧(cn,1,2,2⇔cn+1,3,2,2)∧(cn,2,2,1⇔cn+1,4,2,1)∧(cn,2,2,2⇔cn+1,4,2,2)∧(cn,3,2,1⇔cn+1,2,2,1)∧(cn,3,2,2⇔cn+1,2,2,2)∧(cn,4,2,1⇔cn+1,1,2,1)∧(cn,4,2,2⇔cn+1,1,2,2)

)) ∧ (mn,R′ ∨

((cn,1,2,1⇔cn+1,4,2,1)∧(cn,1,2,2⇔cn+1,4,2,2)∧(cn,2,2,1⇔cn+1,3,2,1)∧(cn,2,2,2⇔cn+1,3,2,2)∧(cn,3,2,1⇔cn+1,1,2,1)∧(cn,3,2,2⇔cn+1,1,2,2)∧(cn,4,2,1⇔cn+1,2,2,1)∧(cn,4,2,2⇔cn+1,2,2,2)

))

SAT (cube(R), 1) =(c1,1,1,1 ⇔ 1) ∧ (c1,1,1,2 ⇔ 0) ∧ (c1,1,2,1 ⇔ 1) ∧ (c1,1,2,2 ⇔ 1)∧(c1,2,1,1 ⇔ 1) ∧ (c1,2,1,2 ⇔ 1) ∧ (c1,2,2,1 ⇔ 0) ∧ (c1,2,2,2 ⇔ 0)∧(c1,3,1,1 ⇔ 0) ∧ (c1,3,1,2 ⇔ 1) ∧ (c1,3,2,1 ⇔ 1) ∧ (c1,3,2,2 ⇔ 1)∧(c1,4,1,1 ⇔ 0) ∧ (c1,4,1,2 ⇔ 0) ∧ (c1,4,2,1 ⇔ 1) ∧ (c1,4,2,2 ⇔ 0)∧(m1,R ∨m1,R′) ∧ (m1,R ∨m1,R′)∧(m1,R ∨ (c1,1,2,1 ⇔ c2,3,2,1) ∧ (c1,1,2,2 ⇔ c2,3,2,2)∧

(c1,2,2,1 ⇔ c2,4,2,1) ∧ (c1,2,2,2 ⇔ c2,4,2,2)∧(c1,3,2,1 ⇔ c2,2,2,1) ∧ (c1,3,2,2 ⇔ c2,2,2,2)∧(c1,4,2,1 ⇔ c2,1,2,1) ∧ (c1,4,2,2 ⇔ c2,1,2,2))∧

(m1,R′ ∨ (c1,1,2,1 ⇔ c2,4,2,1) ∧ (c1,1,2,2 ⇔ c2,4,2,2)∧(c1,2,2,1 ⇔ c2,3,2,1) ∧ (c1,2,2,2 ⇔ c2,3,2,2)∧(c1,3,2,1 ⇔ c2,1,2,1) ∧ (c1,3,2,2 ⇔ c2,1,2,2)∧(c1,4,2,1 ⇔ c2,2,2,1) ∧ (c1,4,2,2 ⇔ c2,2,2,2))∧

((c2,1,1,1 ⇔ c2,1,2,1) ∧ (c2,1,1,2 ⇔ c2,1,2,2)∧(c2,2,1,1 ⇔ c2,2,2,1) ∧ (c2,2,1,2 ⇔ c2,2,2,2)∧(c2,3,1,1 ⇔ c2,3,2,1) ∧ (c2,3,1,2 ⇔ c2,3,2,2)∧(c2,4,1,1 ⇔ c2,4,2,1) ∧ (c2,4,1,2 ⇔ c2,4,2,2))

Modell:c1111, -c1112,

-c1121, c1122, c2121, -c2122,c1211, c1212,

-c1221, -c1222, c2221, c2222,-c1311, c1322,c1321, c1312, -c2321, c2322,

-c1411, -c1412,c1421, -c1422, -c2421, -c2422,m1R, -m1RR

11/15

Formel ist Widerspruch

*: Als SAT-Solver wurde hier dpconsole von Dr. David Sabel verwendet. Das Programm undweitere Information stehen unter [DPC01] zur Verfügung.

Page 12: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

4.4 Optimierte LösungWendet man das oben skizzierte Prinzip auf den Rubik's Cube an, so ist man mitmoderner SAT-Software in der Lage, Lösungen mit einer maximalen Länge von13 Zügen zu finden. Wie bereits beschrieben, existieren aber auch Stellungen,die 20 Züge benötigen und ein großer Teil der Stellungen benötigt mehr als 13Züge. Da solche Probleme jedoch auch bei Lösungsansätzen auftreten, die nichtaussagenlogische sondern algorithmische Ansätze verfolgen, kann man sich andiesem Punkt einer Strategie bedienen, die Anfang der 90er von HerbertKociemba entwickelt wurde.Darüber hinaus können noch einige Überlegungen angestellt werden, die aufeinfache Art Doppelungen und Schleifen vermeiden.Im Folgenden sollen diese beiden Aspekte behandelte werden, um einumfassendes Bild der erarbeiteten Lösung zu erhalten. Die FemtoCube, die biszu diesem Zeitpunkt der Didaktig große Hilfe geleistet hat, wird im folgendennicht mehr benutzt.4.4.1 Kociemba's Zwei-Phasen AlgorithmusKociemba's Zwei-Phasen-Algorithmus nutzt zahlreiche Symmetrien aus, die sichim Rubik's Cube Rätsel finden lassen. Er teilt die Suche nach einer Lösung füreine beliebige Permutation in zweiPhasen auf. Die Besonderheit liegt darin,dass beide Phasen in den meisten Fällenmit 12 Schritten und wenigerauskommen.In der ersten Phase versucht man denCube in einen Zustand zu überführen, sodass sich alle Facelets, die zur Up- oderDown-Face gehören, auf einer derbeiden Faces befinden. Dabei ist esjedoch irrelevant, auf welcher derbeiden Faces sich die jeweiligen Faceletsbefinden. In dieser ersten Phase sindalle verfügbaren Drehungen anwendbar. Allerdings kann die Farbkodierung desWürfels auf defacto zwei Farben reduziert werden (siehe Abbildung). DieserZustand wird als H-State bezeichnet.Befindet sich ein Würfel im H-State, so kann man sich in der zeiten Phasedarauf konzentrieren, die vier Faces Front, Back, Left und Right korrektherzustellen. Die erwähnten Symmetrien des Würfel sorgen dafür, dass die Up-und Down-Face automatisch ebenfalls den gelösten Zustand annehmen. Diesezweite Phase ist vor allem daduch gekennzeichnet, dass keine Drehungen

Erweitert man jedoch die Formel auf zwei Züge, so ergibt sich für den bereitsgelösten Würfel eine erfüllende Belegende mit den Variablen:

und für den mit R2 gedrehten Würfel

Die ausführlichen Formel und dpconsole-Eingaben sind im Anhang aufgelistet.

m1R, -m1RRm2RR, -m2R

m1R, -m1RRm2R, -m2RR

Der H-State, Ziel der Phase 1, kann mit nur zweiFarben kodiert werden:

12/15

Page 13: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

gestattet sind, die Facelets von den umlaufenden vier Faces auf die Up- oderDown-Face überführen. Von den ursprünglich 18 Drehungen werden also die 8Drehungen L, L', R, R', F, F', B und B' verboten. Die verbleibenden 10Drehungen geben der zweiten Phase ihren Namen, die anhand der Menge ihrerManöver als A10-Phase bezeichnet wird. Somit fällt bei der Kodierung derzweiten Phase nahezu die Hälfte der Drehungen weg. Darüber hinaus kann dieFarbkodierung mit nur zwei Bit's auskommen, da für die Up- und Down-Face dieFarb-Kodierung der Front- und Back-Face wiederverwendet werden kann.Kociemba's Algorithmus sucht nicht nach der optimalen Lösung. Dennoch liefertdieser Ansatz in der Regel Lösungen mit weniger als 20 Zügen. Zum Auffindenmöglichst kurzer Lösungen wird die Phase 1 nicht nach Erreichen des ersten H-States abgebrochen, vielmehr werden mehrere erreichbare H-States gesuchtund für alle dann auch die zweite Phase angewendet. So kann beispielsweiseder H-State in einem speziellen Fall vielleicht bereits nach 8 Zügen erreichbarsein. Jedoch könnte dann die zweite Phase 13 Schritte benötigen. Ein anderer H-State, der u.U. erst nach 10 Zügen erreichbar ist, könnte jedoch in der zweitenPhase nur 6 Schritte benötigen und würde in einer deutlich kürzerenGesamtlösung resultieren.4.4.2 Manöver TuningBeim Manöver-Tunig versuchen wir im wesentlichen überflüssige Manöver zuidentifizieren und deren Berechnung frühzeitig abzubrechen. Wir unterscheidendazu zwei Kategorien: Manöver, die sich selbst egalisieren und Manöver-Gruppen, die zum gleichen Ergebnis führen.Erstere sind Manöver wie R' R oder auch L2 L2, also Manöver, die den gleichenZustand wie zu Beginn herstellen. Diese Kategorie beschränkt sich auch auf alleFormen von Drehungen und deren inversen, sowie der zweifachen 180°Drehung.Die zweite Kategorie versucht Manöver zu identifizieren, die zum äquivalentenCube-Zustand führen. So ist das Manöver RL gleich zu LR. Es wird nun nachBelieben für eine der beiden Folgen eine Abbruchbedingung kodiert.

5 Software-Umsetzung und PerformanceFür die Umsetzung wurde auf Grundlage vonPrecoSAT ein eigener SAT-Solver entwickelt,der vor allem in Belangen des ALO-Solving mitStrategien aus MPhaseSAT ergänzt wurde. Damir jedoch die Lösung nicht vorlag, stammenalle Information hier aus dem Artikel von Chen.Zur besseren Einordnung der Ergebnissewurden diese mit Laufzeiten des CubeExplorerverglichen. CubeExplorer stammt aus der Handvon Herbert Kociemba und ist dieReferenzumsetzung seines Algorithmus. Fürden Vergleich ist jedoch noch zu Beachten, dass CubeExplorer umfangreicheLookup-Tables benutzt, ein Hilfsmittel, welches nicht in die SAT-Lösungtransferiert werden konnte. Alle Test wurden auf einem zeitgemäßen QuadCoreSystem ausgeführt.Die Suche nach optimalen Lösungen von Permutationen, welche in 13 Schritten

Länge Phase 1

Anzahl Variable

Anzahl Klauseln

9 3570 66028

10 3570 66026

11 3594 66201

12 3618 66248

Anzahl der Variablen und Klauseln der Phase 1 bei variabler Länge

13/15

Page 14: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

lösbar sind benötigten im worst-case 7 Stunden. Längere Manöver sind mitmodernen SAT-Solvern nicht effizient berechenbar. Für annähernd optimaleLösungen längerer Permutationen wurde eine Abwandlung des Zwei-Phasen-Algorithmus von Kociemba genutzt. Dadurch werden Lösungen von über derLänge 20 möglich und zugleich wird die Anzahl benötigter Klauseln auf unter6700 gehalten.Die für die Lösungssuche benötigte Zeit ist stark von der jeweiligen Permutationabhängig. Die Lösungen selber variieren auch bei der selben Permutation, wennunterschiedliche Faces als Front definiert werden.Doch selbst Zustände, wie der beschriebene Super-Flip, von dem bewiesen ist,dass er in nicht weniger als 20 Zügen gelöst werden kann, konnten binnen 522Sekunden mit 21 Zügen gelöst werden. Sofern man von Beginn an beachtet,dass die erste Phase 13 Zügen benötigt, so konnte man eine Lösung binnen 310Sekunden finden.Um die allgemeine Perfomance zu Testen wurde mit 10 zufälligenPermutationen gearbeitet. Es wurde dieZeit gemessen, um Lösungen in maximal20 Schritten zu finden. Dabei lag die obereSchranke für die erste Phase bei 12Schritten.Die Mehrheit der Permutationen konntenin unter 7000 Sekunden gelöst werden.Bei maximal 21 Schritten lag diese Zahlsogar nie über 1500 Sekunden.Der Vergleich mit dem CubeExplorer zeigtauf, dass die SAT-Lösung erheblich mehrZeit in Anspruch nimmt. So benötigteCubeExplorer für die selben Permutationennie mehr als 8 Sekunden und schaffte esdabei meist auch noch kürzere Lösungenzu finden. Doch für die Suche optimalerLösungen benötigte auch dieser erheblichmehr Zeit.Sollte es möglich werden, die Look-Up Tables in KNF zu kodieren, so ist esdenkbar, dass der SAT-Solver den CubeExplorer in Performance-Belangeneinholt.

Cube-Zustand

Länge Phase 1

Länge Phase 2

Zeit (sek)

1 10 10 1072

2 11 9 6785

3 10 10 137

4 11 9 6123

5 9 11 87

6 10 10 774

7 11 9 1489

8 10 9 1079

9 12 8 14096

10 10 10 329

Zeitaufwand des SAT-Solvers für 10 zufällige Startzustände

Cube-Zustand

Länge Lösung (nicht optimal)

Zeit (sek) (nicht optimal)

Länge Lösung (optimal)

Zeit (sek) (optimal)

1 19 0,3 19 9125

2 19 4,5 18 531

3 18 1,5 18 580

4 16 7,3 16 23

5 19 0,3 18 3243

6 18 1,5 17 315

7 17 2,1 17 25

8 19 0,1 18 4276

9 19 1,1 18 2219

10 19 0,1 18 1452

Zeitaufwand des CubeExplorer für 10 zufällige Startzustände.

14/15

Page 15: Lösen des Zauberwürfels (Rubik's Cube) mit Hilfe von SAT ... · Modellierung des Rubik's Cubes, auch die sehr ähnliche und konkrete Modellierung des FemtoCubes gezeigt, um sich

Da die hier erarbeitete Lösung in SAT einer Brute-Foce-Suche gleicht ist esjedoch ausgeschlossen, dass auf heutigen Rechnertechnologien optimaleLösungen mit mehr als 12 Schritten zeiteffizient gefunden werden können, daeine solche Berechnung 1512x910~1023,7 Zustände (mit je 48 beweglichenFacelets) vergleichen müsste.Der größte Vorteil der SAT-Löung gegenüber dem CubeExplorer ist der deutlichgeringere Speicherverbrauch. Der eingesetzte SAT-Solver kam mit weniger als10 MB Speicher aus. CubeExplorer verbraucht dank seiner Look-Up-Tables andieser Stelle das hundertfache.

6 KonklusionDie vorgestellte Lösung ist der erste Versuch, den Rubik's Cube in SAT zukodieren und die Ergebnisse der Experimente zeigen, dass die Fortschritte aufdem Gebiet der SAT-Solver solche Fragestellungen in effizienter Zeit lösbarmachen. Die Ideen und Prinzipien bei der Kodierung des Problems könnenjedoch auch über das Feld der Planspielen hinaus genutzt werden.Es bleiben jedoch auch noch Fragen für weitere Forschungen offen. So stellt sichallem voran die Frage, nach einer optimalen Kodierung der Rubik's Cube. Auchdie SAT-Formulierung bekannter Heuristiken, die die Lösungssuche verkürzen,steht noch aus.Jedoch bleibt die Kodierung von Look-Up-Tables als SAT vorerst nicht umsetzbar.Auch die von CubeExplorer genutzte Tiefensuche ist in SAT noch nichtanwendbar.Es bleibt jedoch zu hoffen, dass in naher Zukunft Lösungen bis zur God'sNumber, also 20, für alle Zustände mit SAT in annehmbarer Zeit gelöst werdenkönnen.

QuellenChen01: Chen, J.C.: Solving Rubik's Cube Using SAT Solvers,http://arxiv.org/pdf/1105.1436.pdfChen02: Chen, J.C.: Solving Rubik's Cube Using SAT Solvers (Slides),http://baldur.ira.uka.de/~olga/Site/SPA2011/Slides/JingchaoChen.pdfCube20: Tomas Rokicki et al., God's Number is 20, http://www.cube20.org/DPC01: Sabel, David: Konsolenprogramm für die Davis-Putnam-Prozedur;http://www.ki.informatik.uni-frankfurt.de/lehre/SS2006/KI/dp.htmlKoc01: Kociemba, H.:Cube Explorer (Windows program) and Two-Phase-Approach, http://kociemba.org/cube.htmWP01: Wikipedia: Erfüllbarkeitsproblem der Aussagenlogik, 2012,http://de.wikipedia.org/wiki/Erf%C3%BCllbarkeitsproblem_der_Aussagenlogik

15/15