Der Rubik-Würfel


Ersonnen hat den Rubik-Würfel der ungarische Bildhauer und Innenarchitekt Ernö Rubik Mitte der siebziger Jahre. Der Professor an der Budapester Hochschule für angewandte Kunst, wollte damit das räumliche Vorstellungsvermögen seiner Studenten trainieren. Anfang der achtziger Jahre wurde der Rubik-Würfel dann populär und in Millionen-Stückzahlen verkauft. Das faszinierende an dem Würfel sind seine vielen Möglichkeiten. Es gibt 43.252.003.274.489.856.000 verschiedene Farbmuster, also mehr als 43 Trillionen, wenn die Berechnung stimmt (Bild der Wissenschaft 11/1981).

Es gibt zahlreiche Algorithmen, um den Würfel wieder in seine Grundstellung zu bringen (hier ein von mir entwickelter Hand-Algorithmus). Die meisten beruhen darauf den Würfel schichtenweise zu ordnen. Solche Algorithmen lassen sich allerdings nur schwer programmieren, denn man müsste Hunderte von Fallunterscheidungen berücksichtigen. Und wenn man nur eine vergisst, dann läuft das Programm in einer Schleife oder beendet sich ohne Ergebnis.

Bei dem hier vorliegenden Programm wurde daher ein anderer Weg gewählt. Es werden zuerst die Kantenwürfel geordnet und dann die Eckwürfel. Dabei werden Drehfolgen aus einer in den Speicher geladenen Datei ausgewählt. Diese Drehfolgen verändern jeweils nur maximal 6 Kantenflächen. Die hier verwendeten Drehfolgen wurden mit wenigen Ausnahmen vom Programm selbst generiert. Nach dem Zufallsprinzip wurden Drehfolgen erzeugt und jene gespeichert, die bestimmte Bedingungen erfüllten. D. h. die Länge der Drehfolge ist begrenzt und die Drehfolge darf entweder Kanten und Eckwürfel verändern, aber eben möglichst wenig Kantenwürfel, oder nur Eckwürfel. In einem zweiten Schritt wurden nun aus diesen Drehfolgen weitere Drehfolgen generiert, die die Kantenwürfel einer Würfelschicht verändern. Drei dieser Drehfolgen musste ich allerdings von Hand eingeben, da sie vom Programm nicht generiert wurden. Vielleicht hätte ich da etwas mehr Geduld haben müssen. Die Drehfolgen für die Eckwürfel wurden dagegen allesamt per Programm generiert. Bei der Zufallsauswahl musste ich allerdings Anzahl der verwendeten Flächen des Würfels auf 3 begrenzen. Diese Maßnahme erhöhte die Trefferrate. Bei den Drehfolgen für die Eckwürfel dürfen maximal 3 der Eckwürfel verändert werden und kein Kantenwürfel.

Damit schafft es das Programm den Würfel in etwa 30 Sekunden (Zeit auf einem 450 MHz Pentium, kann auch mal bis zu 2 Minuten dauern) in die Grundstellung zu bringen. Das Ordnen der Kantenwürfel verläuft nicht kontinuierlich, da das Programm nach einer gewissen Anzahl von Fehlversuchen eine Verlegenheitsdrehung macht.

Das Programm dreht natürlich nur verdrehte Würfel wieder in die “richtige” Position. Leider ungeeignet für verdrehte Schwiegermütter. Aber man kann mit dem Rubikwürfel spielen und versuchen, ob man den richtigen Dreh findet (einfach mit der Maus auf eine Würfelfläche klicken). Das Programm zeigt die Drehfolge an. Dem Programm kann auch ein veränderter Rubikwürfel vorgeben werden.

Zur Bedienung: Die einzelnen Würfelflächen lassen sich mit der Maus drehen. Die rechte Maustaste erzeugt eine Rechts-Drehung, (im Uhrzeigersinn), die linke Maustaste dem entsprechend eine Links-Drehung. Die einzelnen Drehungen lassen sich mit dem Menüpunkt "Drehfolge anzeigen" unter der Menüleiste Ansicht darstellen.  Jede Drehung wird dabei mit zwei Buchstaben verschlüsselt. Der große Buchstabe bezeichnet jeweils die Fläche (O = obere Fläche U = untere Fläche, H = hintere Fläche, V = vordere Fläche, L = linke Fläche, R = rechte Fläche), der kleine die Drehrichtung (l = links, r = rechts, h = halbe Drehung).

Die Lösung des Problems hat gewisse Parallelen zur Evolution des Lebens, wo sich auch zuerst Aminosäuren gebildet haben, die sich dann zu funktionalen Einheiten verkettet haben, die sich wiederum zu Molekülsystemen zusammenballt haben, bis es einer dieser Einheiten gelungen ist, sich selbst zu reproduzieren.


Inhalt

Index

weiter