キューブに対する操作は、キューブ面要素の置換群となる。
キューブの6面に以下のように名前をつける:
そして、面i を時計回りに90度回転する操作を rot_i とする。
面要素の集合は、実際には互いに混じらない以下のような複数の部分集合に分離できる:
操作 rot_i によって、面要素は以下のように置換される:
(0 1 2 3) --> (1 2 3 0)残りの Cen_j (j≠i) は変化なし
(0 1 2 3) --> (0 1 2 3)
(i*4 i*4+1 i*4+2 i*4+3) --> (i*4+1 i*4+2 i*4+3 i*4) ((i+2)*4+3 (i+5)*4+2 (i+3)*4+3 (i+4)*4) --> ((i+5)*4+2 (i+3)*4+3 (i+4)*4) (i+2)*4+3)
(i*4 i*4+1 i*4+2 i*4+3) --> (i*4+1 i*4+2 i*4+3 i*4) ((i+2)*4 (i+5)*4+2 (i+3)*4+3 (i+4)*4+1) --> ((i+5)*4+2 (i+3)*4+3 (i+4)*4+1 (i+2)*4) ((i+2)*4+3 (i+5)*4+1 (i+3)*4+2 (i+4)*4) --> ((i+5)*4+1 (i+3)*4+2 (i+4)*4 (i+2)*4+3)
操作 rot_i を表す行列は、上記置換を表現するような、72x72行列 R_i となる。 (内部的には、4x4行列6個(Cen_i)、24x24行列2個(Edge & Corn)が対角線上に並んだ形となる)
そして、3x3x3ルービックキューブに対する任意の操作(そして状態空間)は、単位行列 E と 6つの72x72行列 R_0〜R_5 の任意の積からなる集合 Rubik(3) として表されることとなる。
※ ほんとうは、もっとうまく(記述量を小さく) Rubik(3) を表現する方法があると思う。
ここでは、操作 rot_i を置換行列に簡単に(安直に)表現することを優先して、冗長に Rubik(3) を表現した。
筆者の経験的に以下の操作が存在することがわかっている:
(ToDo)
rot_i ^4 = e (rot_i)^(-1) = rot_i ^3
rot_i・rot_j = rot_j・rot_i ((i,j)=(0,1),(2,3),(4,5))
(rot_i・rot_i・rot_j・rot_j)^6 = e (i,j は任意(0〜5))
(rot_i・rot_j)^k1 = eとなる有限の k1 が存在する。(たぶん、k1 は 3,7,15,4 の最小公倍数 420)
(rot_i・rot_j^3)^k2 = eとなる有限の k2 が存在する。(たぶん、k2 は 7,9,4 の最小公倍数 252)
(ToDo)
コメントはありません。 :pub/log/ルービックキューブと群論