Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rubiks Cube and SageMath
Search
USAMI Kosuke
October 31, 2020
Science
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubiks Cube and SageMath
※ Docswell に移行しました
https://www.docswell.com/s/usami-k/5P97GG-rubiks-cube-and-sagemath
USAMI Kosuke
October 31, 2020
More Decks by USAMI Kosuke
See All by USAMI Kosuke
Onsager代数とその周辺 / Onsager algebra tsudoi
usamik26
0
700
Apple HIG 正式名称クイズ結果発表 / HIG Quiz Result
usamik26
0
270
ゆめみ大技林製作委員会の立ち上げの話 / daigirin project
usamik26
0
400
@ViewLoadingプロパティラッパの紹介と自前で実装する方法 / @ViewLoading property wrapper implementation
usamik26
0
560
これからUICollectionViewを実践活用する人のためのガイド / Guide to UICollectionView
usamik26
1
820
Xcodeとの最近の付き合い方のはなし / Approach To Xcode
usamik26
2
740
UICollectionView Compositional Layout
usamik26
0
880
Coding Swift with Visual Studio Code and Docker
usamik26
0
590
Swift Extension for Visual Studio Code
usamik26
2
1.1k
Other Decks in Science
See All in Science
データベース06: SQL (3/3) 副問い合わせ
trycycle
PRO
1
1k
大黒市で発生した大規模インシデント の ポストモーテムから読み解く、 記憶媒体消去の大切さ
shucho0103
0
210
TypeScript で WebAssembly を用いた 型安全なプラグイン設計
nagano
2
570
20260410_SystemsThinking
takusamar
1
120
医療 LLM ベンチマークの現在地:多面的評価 と日本ローカライズ
analokmaus
1
600
ITTF卓球世界ランキングのポイント比を用いた試合結果予測モデルの性能評価 / Performance evaluation of match result prediction models using the point ratio of the ITTF Table Tennis World Ranking
konakalab
0
140
チュートリアル:世界モデル
hf149
0
1.9k
Conversation is the New Dashboard: 属人性を排除する第4世代BIツールの勢力図
shomaekawa
1
610
白金鉱業Vol.21【初学者向け発表枠】身近な例から学ぶ数理最適化の基礎 / Learning the Basics of Mathematical Optimization Through Everyday Examples
brainpadpr
1
770
HDC tutorial
michielstock
2
750
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
1
1.6k
プロジェクト「Azayaka」のSARの数式とジオメトリ
syuchimu
0
380
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Practical Orchestrator
shlominoach
191
11k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
420
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Become a Pro
speakerdeck
PRO
31
6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
1/21 ルービックキューブ群を SageMath で見る 宇佐見 公輔 2020 年 10 月
31 日 宇佐見 公輔 ルービックキューブ群を SageMath で見る
2/21 自己紹介 職業:プログラマ / 趣味:数学 最近の活動: イジング模型(10 月 / MathWills)
ルービックキューブと群論(10 月 / 関西日曜数学友の会) 平面の敷き詰めとルート系(6 月 / 日曜数学会) 四元数のはなし(5 月 / 関西日曜数学友の会) 宇佐見 公輔 ルービックキューブ群を SageMath で見る
3/21 今回の内容 ルービックキューブは群論の言葉で考察することができます。 SageMath でルービックキューブ群について調べて遊んでみたい と思います。 宇佐見 公輔 ルービックキューブ群を SageMath
で見る
4/21 ルービックキューブ考察にあたっての前提 3 次元空間の中でキューブの位置や向きを固定します。キューブ そのものを回転させることは考えません。 キューブの操作は、各面を時計回りまたは反時計回りに 90 度ずつ 動かすことを考えます。真ん中の列を回転させることはしません。 宇佐見
公輔 ルービックキューブ群を SageMath で見る
5/21 小方体(cubelet) 小方体:キューブを構成する小立方体。中心を除いて 26 個。 1 面体:1 つの面が外側に見えている小方体。6 個。 2
面体:2 つの面が外側に見えている小方体。12 個。 3 面体:3 つの面が外側に見えている小方体。8 個。 先ほどの前提から、1 面体は動きません。2 面体と 3 面体がキュー ブの操作によって移動します。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
6/21 小面(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 | +--------------+ 宇佐見 公輔 ルービックキューブ群を SageMath で見る
7/21 キューブ操作のシングマスター記法 各面を時計回りに 90 度回転する操作を U, D, L, R, F,
B と書きま す。反時計回りは U または U−1 と書きます。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
8/21 ルービックキューブ群 X を小面 48 個の集合とします。キューブ操作は、X の置換写像で あると考えることができます。X の置換全体の集合 SX
は群にな ります。これを X の対称群と呼びます。 SX の中にはキューブ操作の組み合わせだけでは実現できないも のもあります。例えば、3 面体のひとつをルービックキューブか ら取り外して、小面のうち 2 つの色を逆に貼り替えてからルー ビックキューブに戻す、ということをします。これは小面集合 X の置換にはなっていますが、キューブ操作だけでは元の配置に戻 すことができません。 基本操作 U, D, L, R, F, B で生成される SX の部分群 G を、ルー ビックキューブ群と呼びます。 G := U, D, L, R, F, B ⊂ SX 宇佐見 公輔 ルービックキューブ群を SageMath で見る
9/21 SageMath SageMath は数学関連のソフトウェアを統合したものです。 SageMath には、ルービックキューブ群を扱うプログラムが最初 から組み込まれています。 sage: rubik =
CubeGroup() sage: rubik The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48). 宇佐見 公輔 ルービックキューブ群を SageMath で見る
10/21 ルービックキューブのグラフィカル表示 (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 | +--------------+ 宇佐見 公輔 ルービックキューブ群を SageMath で見る
11/21 ルービックキューブのグラフィカル表示 (2) sage: rubik.plot_cube("R") sage: rubik.plot_cube("R U") 宇佐見 公輔
ルービックキューブ群を SageMath で見る
12/21 ルービックキューブの操作 (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 個の積だと分かります。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
13/21 ルービックキューブの操作 (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 の巡回置換になっています。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
14/21 ルービックキューブ群の位数 ルービックキューブ群は有限群です(有限集合の置換は有限個) 。 その大きさがどれくらいなのか見てみます。 sage: rubik = CubeGroup() sage:
rubik.order() 43252003274489856000 sage: rubik.order().factor() 2^27 * 3^14 * 5^3 * 7^2 * 11 つまり、ルービックキューブで可能な配置は約 4325 京通りある ことが分かります。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
15/21 元の位数 (1) Definition 群の元 g について gm = 1
が成り立つような自然数 m で最小のも のを、元 g の位数と呼びます。 Definition ルービックキューブの特定の操作手順 g を m 回繰り返すと元の配 置に戻るとき、その最小の m を g の位数と呼びます。 操作 R は 4 回行えば元に戻るので R の位数は 4 です。 sage: rubik.move("R")[0].order() 4 宇佐見 公輔 ルービックキューブ群を SageMath で見る
16/21 元の位数 (2) Theorem 有限群の元の位数は有限である。 これは、群の元 g に対して集合 {gk |
k ∈ Z} が部分群となること から分かります。 Theorem ルービックキューブで特定の操作手順を何度も繰り返すと、必ず 元の配置に戻る。 ルービックキューブで考えると成り立つかどうか分からない気が しますが、群論で考えるとわりと簡単に分かる、というのは興味 深い点だと思います。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
17/21 元の位数 (3) では、操作 RU は何回やれば元に戻るのか? sage: rubik.move("R U")[0].order() 105
実際にやってみると、 「え、これ本当に元に戻る・・・?」と不安 になりますが、頑張って回すと本当に戻るのでちょっと感動。 宇佐見 公輔 ルービックキューブ群を SageMath で見る
18/21 元の位数 (4) ルービックキューブ群には位数 1260 の元があります。そのひと つが RU2D BD です。これより大きい位数の元はありません。
sage: rubik.move("R U2 D' B D'")[0].order() 1260 宇佐見 公輔 ルービックキューブ群を SageMath で見る
19/21 操作手順の例:むすび 動く小面が少ない操作手順の例を挙げます。島内先生の本で「む すび」と呼んでいる手順です。操作は多いですが、結果を図で表 示すると分かりやすいような気がします。 sage: rubik.plot_cube("R B L F
U^2 F' L' B' R' U^2") 宇佐見 公輔 ルービックキューブ群を SageMath で見る
20/21 共役 群の元 g に対して(群の元 h を使って)h−1gh の形の元を共役と 呼びます。 「むすび」の共役を考えると、別の場所の置換を作り出すことがで
きます。 sage: rubik.plot_cube("R R B L F U^2 F' L' B' R' U^2 R'") 宇佐見 公輔 ルービックキューブ群を SageMath で見る
21/21 参考文献 参考文献: Rubik’s cube group functions - Sage Reference
Manual David Joyner、群論の味わい -置換群で解き明かすルービッ クキューブと 15 パズル- 島内剛一、ルービック・キューブと数学パズル David Joyner 先生が SageMath にルービックキューブ群を組み 込んだようです。 島内先生の本には、ルービックキューブの様々な手順や、それを 利用した解法が載っています。 (残念ながら絶版ですが) 宇佐見 公輔 ルービックキューブ群を SageMath で見る