4次元ルービックキューブの組み立て

私たちはルービックキューブパズルに精通していますが、3次元空間に住んでいるので、そのようなものを4次元で想像することは困難です。 もちろん、ルービックは4次元キューブの特許を取得しておらず、ルービックキューブの類似性についてのみ説明しています。



したがって、まず、4次元のパズルをどのように想像するかについて説明します。







テッセラクト



最初に、3次元の立方体がどのように得られるか想像してください。 1次元空間を使用します。その中に描画できるものはすべて、ポイント、セグメント、光線、線などの1次元オブジェクトに限定されます。 単位長ABのセグメントを描画します[0,1]。 次に、2番目の次元を追加します。縦座標軸は上向きになり、単位セグメントABはデカルト座標系の横座標軸上にあります。



おそらく、2次元空間は人間の理解にとって最もなじみのあるものです。なぜなら、球も立方体も描画できないため、平面への投影としてそれらを描くのに慣れているからです。 さて、2次元空間に問題はないので、正方形を取得する方法について考えてみましょう。 したがって、横軸上のセグメントAB(頂点A(0,0)およびB(1,0))を取得し、縦座標軸に沿って正確に1単位後退し、セグメントを複製し、ポイントC(0,1)およびDでCDと呼びます(1,1)。



正方形を取得するには、対応する頂点を接続する必要があります。つまり、頂点A(0,0)をその複製C(0,1)に接続し、頂点B(1,0)をD(1,1)に接続する必要があります。 これで、正方形のACDBができました。 これが2次元空間でどのように機能するかを理解すれば、3次元の立方体がどのように取得されるかを理解するのは非常に簡単です。 ポイントについて:



1. 3番目の次元を追加します。アプリケーション軸は深さ方向に向けられます。

2. applicate軸上で1つずつ後退することによりACDBを複製し、頂点は次のように変換されます。

A(0,0,0)-> H(0,0,1)

C(0,1,0)-> F(0,1,1)

D(1,1,0)-> G(1,1,1)

B(1,0,0)-> E(1,0,1)

3.正方形の対応する頂点を接続します。



これで、読者は道徳的にtesseractを見る準備ができました。







実際、キューブを複製し、4番目の次元の軸に沿ってシフトし、対応する頂点を接続します-これ以上簡単な方法は想像できません。 明確にするために、元のキューブをその中に配置して、複製キューブを増やします。 この画像は、平面にテセラクトを投影しようとする場合に最もよく使用されます。







tesseractのすべてのセグメントが単一であることを強調し、投影の平等性を示すために、4次元の立方体をアニメーションで表すことができます。







しかし、これはすべてのことわざであり、おとぎ話が先です!



tesseractからパズルまで



次に、4次元パズルとは何か、そして最も重要なこととして、それをどのように描写するかを考えてみましょう。



ご存知のように、立方体には6つの面があり、したがって、立体パズルには6つの色があります。 私たちの生活を簡素化するために、2x2x2のキューブを使用します。特に、そのようなキューブの順列が3 ^ 6 * 7だけであることが非常に役立ちます。 = 3674160。







顔をリストします。

-横軸の左から右に、緑から青の色。

-縦座標の軸を上から下に、色を黄白にします。

-applicate Front-Backの軸上で、赤橙色にします。



ワープドライブをオンにして、4次元のワームホールを開きます!



これが外国の数学者が四次元のパズルを描く方法です。







つまり、実際には、3次元の2x2x2キューブを取得し、4番目の次元に軸を追加して、4番目の行を取得しました。

-4番目の次元、Ana-Kataの軸では、色は紫灰色です。



現在、8色のすべてのグループは3次元のファセットであり、2次元の面(4色)ではありません。 今、私はまったく同じ(数学的に同等の)4次元立方体Iを想像しています:







パズルの内部(つまり、8つの3色角で構成される立方体)を取得する場合、3次元の立方体から八面体を切り取り、内側の切断面を紫色に塗りつぶします。その結果、立方体の角は4色で四面体になります。 次に、立方体のすべての角を複製し、四面体の内側の面を外し、灰色に塗りつぶして、私の魅力をもたらしました。

もちろん、私の仕事の主な難しさは、OpenGLを使用してDelphiで4次元パズルの投影を描くプログラムを書くことではなく、そのようなパズルを解くためのアルゴリズムを開発することでした。 つまり、私にはアイデア、数学的表現があり、OpenGLは3次元グラフィックスを表示するための唯一の手段でした。



ファセット



次に、ハイパーフェイスの回転とは何かを検討します。 説明されているパズルでは、8つのファセットのみがあり、それぞれがキューブです。 ハイパーフェイスの回転は、本質的に、あるキューブを別のキューブに対して回転させることです。 たとえば、左側の立方体は右側に相対的であり、内側は外側に相対的です。 6つの面のそれぞれが4つの側面のいずれかで回転できるため、キューブを回転させる24のオプションがあります。 このようなキューブは8つあります。つまり、パズル要素の配置の不変式が192個あるということです。 ネタバレの下で、それらのいくつかだけを以下にあげます。



ファセットのターン


内側のハイパーフェイスを回転させます。





前面のハイパーフェイスを回転させます。





これは1回転しかないことに注意してください。最初に、立方体は目的の面でガイドされ、次に希望の側面で垂直軸の周りを回転します。 これは、各ファセットに対して24ターンが形成される方法です。



組立



ミックスキューブ




メインアセンブリシーケンスは次のとおりです。



1.ヒューリスティック手法では、グレーと色の要素をそれぞれKataと呼ばれる外側のハイパーフェイスの位置に配置します。この段階の後、紫色の要素はすべて内側のハイパーフェイスAnaに配置されます。

2.外側のハイパーフェースのグレー色の外側への向き。

3.内側のハイパーフェイスの紫色の内側の向き。

4. 3次元の2x2x2キューブ(そのうち3674160が存在する)の決定テーブルによる、外部ハイパーフェースの要素の配置。

5.同じ決定表による内側ファセットの要素の配置。



最初の点に関しては、灰色を外側に配置するのに特別な困難はありませんでした。内側の紫色はそれを整理するのに十分で、多分少し最適化されていて、アルゴリズムの本質は、 こちら側をひねり、他をひねり、さらに数回再配置したように見えます



2番目のステージにはアルゴリズムの複雑さO(192 ^ 3)がありましたが、不変式は256のみであったため、事前に計算されたソリューションの組み合わせで永続テーブルを作成することが決定されました(実際、ルービックキューブのフリードリッヒ法におけるOLLの類似物)。 最大6回の動きがあります。



3番目の段階は2番目の段階とまったく同じように解決されましたが、Oの指数の複雑さ(192 ^ 4)によって2日間の反復が行われ、不変式の数は既に65536でした。



方向付けられた外側と内側の色




しかし、Ana-Kataファセットの色を調整した後、問題を3次元の立方体に減らします。 4番目のステージでは3674160不変量のテーブルを使用し、3次元立方体の解は最大11の動きです。 したがって、外部ハイパーキューブが組み立てられます。



収集された外部ファセット




5番目のステージでは、3次元立方体の同じソリューションを使用しますが、唯一の例外は、任意の面の回転ごとに、内側の立方体が各回転の外部に対して必要な側で回転するため、外部の既に組み立てられたファセットはその右側のみを回転し、残ります常にほとんど組み立てられています。



第五段階


外側の右側は同じ右側を回転させ、内側は回転する必要がある側を常に回転させます。



つまり、テーブルを使用して、コンピューターは検索のためのマイクロ秒を省きましたが、プログラムの初期化時にHDDからRAMにテーブルをキャッシュするだけで数分かかります。 さて、事前計算を含む3つのテーブルが一度にあれば、アセンブリアルゴリズムはもう複雑に見えません。



すべてのキューブアセンブリ









All Articles