Ich mache gerade einen Roboter, der 4x4x4 Rubik Cube (Rubik Revenge) löst und einen Weltrekord anstrebt. Die größte Hürde bei der Herstellung eines Roboters bestand darin, einen Algorithmus zu implementieren, um einen 4x4x4-Würfel in einer realistischen Zeit und mit so wenigen Schritten wie möglich zu lösen. Wenn Sie nachschlagen, werden Sie feststellen, dass es nur wenige Dokumente und Vorfahren zu 4x4x4 gibt. Ich schreibe diesen Artikel in der Hoffnung, dass er eines dieser wertvollen Materialien sein wird. GitHub ist hier ** Der Inhalt dieses Artikels ist nicht vollständig. Es kann einige Ineffizienzen enthalten. Ich werde es nach Bedarf hinzufügen, wenn es in Zukunft verbessert wird. ** ** **
↓ 4x4x4 Rubik Cube für den Wettbewerb und 4x4x4 Rubik Cube für den Wettbewerb, nummeriert für die Programmproduktion
Diese Artikelsammlung besteht aus insgesamt drei Artikeln.
In diesem Artikel werde ich das Wissen einführen, das zum Schreiben eines Programms zum Lösen eines 4x4x4-Rubikwürfels (unter Verwendung eines Suchalgorithmus) erforderlich ist, und kurz über den Programmfluss sprechen.
Ich werde die Referenzmaterialien in der Reihenfolge vorstellen, in der ich sie hilfreich finde.
Die erste Quelle ist das einzige Papier, das ich über 4x4x4-Würfel gefunden habe. Das zweite ist ein Repository, das tatsächlich mit Java ähnlich wie in einem Papier implementiert wurde. Dies wurde auch als einziges Implementierungsbeispiel gefunden. Der dritte ist ein Beitrag des Eigentümers des zweiten Repositorys. Der vierte ist ein mysteriöser Beitrag, der vorerst gefunden wurde.
Hier ist, was Sie wissen müssen, um diesen Artikel zu lesen und wie Sie ihn erhalten.
Ein Symbol, das die Drehung des Zauberwürfels objektiv und genau darstellt. Wir empfehlen hier als Referenz. Dies ist eine Beschreibung des Rotationssymbols für 3x3x3, aber 4x4x4 verwendet genau das gleiche Symbol.
Das im Rotationssymbol angezeigte `` `R, L, U, D, F, B``` wird auch als Name des Gesichts verwendet. Zum Beispiel ist die F-Seite die Vorderseite.
Es gibt drei Arten von Teilen an der Außenseite des 4x4x4 Rubik Cube. Wie im Bild gezeigt. Es gibt 3 Aufkleber an den Ecken, 2 an den Kanten und 1 in der Mitte.
Verwenden Sie für die Position der Teile das `` `R, L, U, D, F, B```, das erneut mit dem Rotationssymbol angezeigt wird. Da der Ausdruck für Kanten und Ecken unterschiedlich ist, werde ich sie separat einführen.
Die Kante ist natürlich, überspannt jedoch immer zwei Seiten. Daher werden die Kanten nebeneinander dargestellt, indem zwei Flächen genommen werden, die sich von "R, L, U, D, F, B" erstrecken. Beispielsweise ist die UF-Kante die Kante, die die U- und F-Ebene überspannt.
Die Ecke erstreckt sich immer über drei Seiten. Daher werden drei Gesichter, die sich von "R, L, U, D, F, B" erstrecken, nebeneinander aufgenommen und angezeigt. Beispielsweise ist die UFR-Ecke eine Ecke, die sich über die U-, F- und R-Seiten erstreckt.
4x4x4 Rubinwürfel haben eine einzigartige Bedingung, die als "Parität" bezeichnet wird. Es gibt zwei Arten von Parität, aber die Erklärung von hier ist leicht zu verstehen. Darüber hinaus ist die Erklärung der PLL-Parität an dieser Stelle etwas schwer zu verstehen, kurz gesagt handelt es sich jedoch um einen Zustand des 2-Punkt-Austauschs nur von Kanten (ein 2-Punkt-Austausch ist mit einem 3x3x3-Rubinwürfel nicht möglich). Ein Beispiel für OLL-Parität und PLL-Parität ist in der Abbildung dargestellt. Die linke ist die OLL-Parität und die rechte ist die PLL-Parität. Alle unsichtbaren Seiten sind vollständig.
CP, CO, EP, EO Beziehungsweise
Das ist. Jedes Teil, aus dem ein 4x4x4-Würfel besteht, kann durch die Position und Ausrichtung der Kanten und Ecken sowie die Position der Mitte eindeutig dargestellt werden.
Das Lösen eines 4x4x4-Rubikwürfels durch Erkundung ist nicht so einfach. Auf jeden Fall ist der zu durchsuchende Baum (der Begriff und das Grundwissen dazu sind im Artikel [hier] zusammengefasst (https://qiita.com/Nyanyan_Cube/items/60f3699db96dba4a4bf5)) zu groß. Daher wird häufig ein Algorithmus verwendet. Alle Materialien, die ich vorgestellt und implementiert habe, basieren auf einem Algorithmus namens ** Tsais Algorithmus **. Lassen Sie uns den Ablauf erklären.
Wenn geschrieben steht, dass "X" -Drehung verwendet wird, beispielsweise in "Zu verwendende Drehung", gibt es zwei Arten von Drehungen, die tatsächlich verwendet werden: "X, X" Und wenn es heißt, `X2``` Rotation zu verwenden, wird tatsächlich nur`
X2``` verwendet.
Ich denke, es gibt Wörter und Ausdrücke, die ich nicht verstehe. Ich werde jede Phase im nächsten Artikel ausführlich erläutern. Bitte sagen Sie hier "Hmm".
Phasennummer | Dinge die zu tun sind | Drehung zu verwenden |
---|---|---|
0 | Bringen Sie alle Mittelteile der R-Seite und der L-Seite zur R-Seite oder zur L-Seite | R, R2, Rw, Rw2, L, L2, U, U2, Uw, Uw2, D, D2, F, F2, Fw, Fw2, B, B2 |
1 | 1.Bringen Sie alle Mittelteile der F-Seite und der B-Seite zur F-Seite oder zur B-Seite 2.Trennen Sie die obere und die untere Kante 3.Machen Sie den mittleren Zustand der R- und L-Seite zu einem der 12 Zustände, die in Zukunft verarbeitet werden können 4.Beseitigen Sie die OLL-Parität | R, R2, Rw, Rw2, L, L2, U, U2, Uw2, D, D2, F, F2, Fw2, B, B2 |
2 | 1.Seite(F, R, B, L Oberfläche)Machen Sie eine "Reihe" in der Mitte 2.Seiteに位置するエッジのペアリングを行う |
R2, Rw2, L2, U, U2, Uw2, D, D2, F, F2, Fw2, B, B2 |
3 | 1.Schließe 6 Zentren ab 2.Koppeln Sie die verbleibenden Kanten 3.Beseitigen Sie die PLL-Parität | R2, Rw2, L2, U, U2, Uw2, D, D2, F2, Fw2, B2 |
4 | 1.Bringen Sie die Aufkleber, die sich auf der U- und D-Seite befinden sollten, auf die U- oder D-Seite 2.Beseitigen Sie EO | R, L, U, U2, D, D2, F, B |
5 | Finalisieren | R2, L2, U, U2, D, D2, F2, B2 |
In diesem Artikel gab ich eine kurze Erklärung der Kenntnisse, die zum Schreiben eines Programms zum Lösen eines 4x4x4-Rubinwürfels erforderlich sind, und eine Übersicht über das Lösen eines 4x4x4-Rubikwürfels.
Recommended Posts