ルービック・キューブ

id:succeed氏へ
やはりと言うべきか,ルービック・キューブの群構造を調べた人は既に数多く,ググったらすぐに色々なネタバレが見つかってしまった.

分かりやすい総数の数え方:

... This result, the "order" of the cube "group", is: 43,252,003,274,489,856,000 (~= 4.32 * 10^19).

総数を得るには隅と辺の中央とを区別するのがポイントらしい.隅のブロックは辺の中央へ移ることはあり得ないから.このサイトには「定跡」が載っているが,他にも色々あるらしい.

群論専門のフリーソフトで解析してみた例:

gap> cube := Group(
> ( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19),
> ( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35),
> (17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11),
> (25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24),
> (33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27),
> (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40) );

gap> Size( cube );
43252003274489856000

「隅と縁の区別」は計算からも示されている.

数学の講義ネタになってる例も多いようだ.

任意の配置を最短ステップで解くアルゴリズムは見つかってないらしい.現在 知られているうちで最も優れたものはIDA*に基づくが,最短であることは示せていないとか.