895 Views
October 31, 20
スライド概要
ルービックキューブ群をSageMathで見る @第19回日曜数学会 - ニコニコ動画
https://www.nicovideo.jp/watch/sm37809602
第19回日曜数学会
https://live2.nicovideo.jp/watch/lv328715485
ルービックキューブ群と SageMath の話をしました #日曜数学会 - usami-k 数学日記
https://usami-k.hatenadiary.jp/entry/2020/10/31/192705
https://usami-k.github.io/
ルービックキューブ群を SageMath で見る 宇佐見 公輔 2020 年 10 月 31 日 1/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
自己紹介 職業:プログラマ / 趣味:数学 最近の活動: イジング模型(10 月 / MathWills) ルービックキューブと群論(10 月 / 関西日曜数学友の会) 平面の敷き詰めとルート系(6 月 / 日曜数学会) 四元数のはなし(5 月 / 関西日曜数学友の会) 2/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
今回の内容 ルービックキューブは群論の言葉で考察することができます。 SageMath でルービックキューブ群について調べて遊んでみたい と思います。 3/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブ考察にあたっての前提 3 次元空間の中でキューブの位置や向きを固定します。キューブ そのものを回転させることは考えません。 キューブの操作は、各面を時計回りまたは反時計回りに 90 度ずつ 動かすことを考えます。真ん中の列を回転させることはしません。 4/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
小方体(cubelet) 小方体:キューブを構成する小立方体。中心を除いて 26 個。 1 面体:1 つの面が外側に見えている小方体。6 個。 2 面体:2 つの面が外側に見えている小方体。12 個。 3 面体:3 つの面が外側に見えている小方体。8 個。 先ほどの前提から、1 面体は動きません。2 面体と 3 面体がキュー ブの操作によって移動します。 5/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
小面(facet) キューブの各面を構成する正方形を小面と呼びます。各面で中央 を除いて 8 個、全体で 48 個あります。 +--------------+ | 1 2 3 | | 4 top 5 | | 6 7 8 | +------------+--------------+-------------+------------+ | 9 10 11 | 17 18 19 | 25 26 27 | 33 34 35 | | 12 left 13 | 20 front 21 | 28 right 29 | 36 rear 37 | | 14 15 16 | 22 23 24 | 30 31 32 | 38 39 40 | +------------+--------------+-------------+------------+ | 41 42 43 | | 44 bottom 45 | | 46 47 48 | +--------------+ 6/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
キューブ操作のシングマスター記法 各面を時計回りに 90 度回転する操作を U, D, L, R, F, B と書きま す。反時計回りは U0 または U−1 と書きます。 7/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブ群 X を小面 48 個の集合とします。キューブ操作は、X の置換写像で あると考えることができます。X の置換全体の集合 SX は群にな ります。これを X の対称群と呼びます。 SX の中にはキューブ操作の組み合わせだけでは実現できないも のもあります。例えば、3 面体のひとつをルービックキューブか ら取り外して、小面のうち 2 つの色を逆に貼り替えてからルー ビックキューブに戻す、ということをします。これは小面集合 X の置換にはなっていますが、キューブ操作だけでは元の配置に戻 すことができません。 基本操作 U, D, L, R, F, B で生成される SX の部分群 G を、ルー ビックキューブ群と呼びます。 G := hU, D, L, R, F, Bi ⊂ SX 8/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
SageMath SageMath は数学関連のソフトウェアを統合したものです。 SageMath には、ルービックキューブ群を扱うプログラムが最初 から組み込まれています。 sage: rubik = CubeGroup() sage: rubik The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48). 9/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブのグラフィカル表示 (1) sage: rubik.display2d("") sage: rubik.plot_cube("") sage: rubik.plot3d_cube("") +--------------+ | 1 2 3 | | 4 top 5 | | 6 7 8 | +------------+--------------+-------------+------------+ | 9 10 11 | 17 18 19 | 25 26 27 | 33 34 35 | | 12 left 13 | 20 front 21 | 28 right 29 | 36 rear 37 | | 14 15 16 | 22 23 24 | 30 31 32 | 38 39 40 | +------------+--------------+-------------+------------+ | 41 42 43 | | 44 bottom 45 | | 46 47 48 | +--------------+ 10/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブのグラフィカル表示 (2) sage: rubik.plot_cube("R") sage: rubik.plot_cube("R U") 11/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブの操作 (1) sage: rubik.move("R")[0] (3,38,43,19)(5,36,45,21)(8,33,48,24) (25,27,32,30)(26,29,31,28) 操作 R は長さ 4 の巡回置換 5 個の積だと分かります。 sage: rubik.move("R2")[0] (3,43)(5,45)(8,48)(19,38)(21,36) (24,33)(25,32)(26,31)(27,30)(28,29) 操作 R2 は長さ 2 の巡回置換 10 個の積だと分かります。 12/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブの操作 (2) sage: rubik.move("R U")[0] (1,3,38,43,11,35,27,32,30,17,9,33,48,24,6) (2,5,36,45,21,7,4)(8,25,19)(10,34,26,29,31,28,18) 先ほどは長さ 2 や 4 の巡回置換でしたが、今回は長さ 7 や 11 の 巡回置換が出てきているのが興味深いです。 (8,25,19) に注目してみます。これは右上手前の小方体であり、 操作 RU で元の位置に戻りますが、120 度回転しています。その ため、長さ 3 の巡回置換になっています。 13/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
ルービックキューブ群の位数 ルービックキューブ群は有限群です(有限集合の置換は有限個) 。 その大きさがどれくらいなのか見てみます。 sage: rubik = CubeGroup() sage: rubik.order() 43252003274489856000 sage: rubik.order().factor() 2^27 * 3^14 * 5^3 * 7^2 * 11 つまり、ルービックキューブで可能な配置は約 4325 京通りある ことが分かります。 14/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
元の位数 (1) Definition 群の元 g について gm = 1 が成り立つような自然数 m で最小のも のを、元 g の位数と呼びます。 Definition ルービックキューブの特定の操作手順 g を m 回繰り返すと元の配 置に戻るとき、その最小の m を g の位数と呼びます。 操作 R は 4 回行えば元に戻るので R の位数は 4 です。 sage: rubik.move("R")[0].order() 4 15/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
元の位数 (2) Theorem 有限群の元の位数は有限である。 これは、群の元 g に対して集合 {gk | k ∈ Z} が部分群となること から分かります。 Theorem ルービックキューブで特定の操作手順を何度も繰り返すと、必ず 元の配置に戻る。 ルービックキューブで考えると成り立つかどうか分からない気が しますが、群論で考えるとわりと簡単に分かる、というのは興味 深い点だと思います。 16/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
元の位数 (3) では、操作 RU は何回やれば元に戻るのか? sage: rubik.move("R U")[0].order() 105 実際にやってみると、 「え、これ本当に元に戻る・・・?」と不安 になりますが、頑張って回すと本当に戻るのでちょっと感動。 17/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
元の位数 (4) ルービックキューブ群には位数 1260 の元があります。そのひと つが RU2 D0BD0 です。これより大きい位数の元はありません。 sage: rubik.move("R U2 D' B D'")[0].order() 1260 18/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
操作手順の例:むすび 動く小面が少ない操作手順の例を挙げます。島内先生の本で「む すび」と呼んでいる手順です。操作は多いですが、結果を図で表 示すると分かりやすいような気がします。 sage: rubik.plot_cube("R B L F U^2 F' L' B' R' U^2") 19/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
共役 群の元 g に対して(群の元 h を使って)h−1 gh の形の元を共役と 呼びます。 「むすび」の共役を考えると、別の場所の置換を作り出すことがで きます。 sage: rubik.plot_cube("R R B L F U^2 F' L' B' R' U^2 R'") 20/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る
参考文献 参考文献: Rubik’s cube group functions - Sage Reference Manual David Joyner、群論の味わい -置換群で解き明かすルービッ クキューブと 15 パズル- 島内剛一、ルービック・キューブと数学パズル David Joyner 先生が SageMath にルービックキューブ群を組み 込んだようです。 島内先生の本には、ルービックキューブの様々な手順や、それを 利用した解法が載っています。(残念ながら絶版ですが) 21/21 宇佐見 公輔 ルービックキューブ群を SageMath で見る