it-swarm.com.de

Kleinste Rubiks Würfelzustandsdarstellung

Ich versuche herauszufinden, wie wenig Bits ich brauche, um den Zustand eines Zauberwürfels darzustellen. (BEARBEITEN: Ich gehe davon aus, dass der Würfel ein gültiger Rubik-Würfel ist, der nicht geändert wurde und nur gültige Rotationen durchgeführt wurden. Ich gehe auch davon aus, dass die Gesichter feste, einheitliche Farben haben befasst sich mit Rotationen der Mittelwürfel.)

Für die Ecken muss ich wissen, um welche der 8 Ecken (3 Bit) es sich handelt, um Drehung (3 Optionen -> 2 Bit) und Position (6 Seiten -> 3 Bit).

Für die Kanten muss ich wissen, welche der 12 (4 Bit), Drehung (2 Optionen -> 1 Bit) und Position (6 Seiten -> 3 Bit).

Wenn ich die Position basierend auf der mittleren Farbe spezifiziere, muss ich die mittleren Teile überhaupt nicht verfolgen, glaube ich nicht, da alles relativ zu den Zentren sein wird.

Ecken: 8 x (3b + 2b + 3b) = 64 Bit
Kanten: 12 x (3b + 1b + 3b) = 84 Bit
Gesamt: 148 Bit

Ein anderer Weg wäre, eine vorbestimmte Reihenfolge in einem Array von 20 zu haben (die ersten 8 sind Ecken, die letzten 12 sind Kanten). Jeder müsste wissen, welches Stück (5 Bit) und welche Drehung (2 Bit für Ecken, 1 Bit für Kanten).

Ecken: 8 x (3b + 2b) = 40 Bit
Kanten: 12 x (4b + 1b) = 60 Bit
Gesamt: 100 Bit

Wenn Sie 7 der 8 Ecken kennen, können Sie die letzte ableiten. Gleiches gilt für die Kanten ...

Ecken: 7 x (3b + 2b) = 35 Bit
Kanten: 11 x (4b + 1b) = 55 Bit
Gesamt: 90 Bit

Gibt es eine Möglichkeit, dies weiter zu reduzieren?

BEARBEITET: Ich habe eine Website gefunden, die zeigt, wie ein Würfelstatus dargestellt wird, bin mir jedoch nicht sicher, wie viele Bits für die Verwendung dieser Methode erforderlich sind. Die eigentliche Website scheint nicht verfügbar zu sein, aber das Internetarchiv hat sie hier: https://web.archive.org/web/20190706141807/http://kociemba.org/cube.htm

7
J Price

Sie können die 8 codieren! mögliche Permutationen der Ecken in 16 Bit und der 12! mögliche Permutationen in 29 Bit durch Nummerierung der Permutationen von 1 bis 8! (oder 1 bis 12!) und Speichern der Nummer. Ich habe eine Beschreibung gefunden, wie diese Codierung effizient gemacht werden kann hier unter Verwendung eines Lehmer-Codes .

In analoger Weise können Sie die 3 ^ 8 = 6561-Ausrichtungen der Ecken in 13 Bits packen (ich nehme an, man möchte "ungültige" Würfel speichern können). Die 2 ^ 12-Ausrichtungen der Kanten erfordern 12 Bit, es gibt keine Möglichkeit, dies zu reduzieren. Insgesamt ergibt dies

 16 + 29 + 13 + 12 = 70 bits

Dies ist nur ein Bit mehr als theoretisch möglich: Das Pidgeon-Hole-Prinzip zeigt, dass Sie die Gesamtzahl der darunter liegenden Bits nicht reduzieren können

log_2(8! * 12! * 3^8 * 2^12) = 68.814 ... 

dies bedeutet, dass 69 Bit der theoretisch kleinste Wert ist, der durch Codieren aller vier Permutationsgruppen in einen 69-Bit-Wert erreicht werden kann.

Hinweis: Wenn nur "gültige" Permutationen des Würfels gespeichert werden sollen, gibt es 3 ^ 7 gültige Eckenorientierungen, 2 ^ 11 gültige Kantenorientierungen und nur 8!/2 gültige Eckenpermutationen

log_2(8!/2 * 12! * 3^7 * 2^11) = 65.22 ... 

In diesem Fall sind 66 Bit der kleinstmögliche Wert.

8
Doc Brown