---
title: ルービックキューブ群をSageMathで見る
tags:  #数学 #日曜数学会  
author: [USAMI Kosuke](https://www.docswell.com/user/usami-k)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJLZ38QP7R.jpg?width=480
description: ルービックキューブ群を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
published: October 31, 20
canonical: https://www.docswell.com/s/usami-k/5P97GG-rubiks-cube-and-sagemath
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LJLZ38QP7R.jpg)

ルービックキューブ群を SageMath で見る
宇佐見 公輔
2020 年 10 月 31 日
1/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 2

![Page Image](https://bcdn.docswell.com/page/47MVD6127W.jpg)

自己紹介
職業：プログラマ / 趣味：数学
最近の活動：
イジング模型（10 月 / MathWills）
ルービックキューブと群論（10 月 / 関西日曜数学友の会）
平面の敷き詰めとルート系（6 月 / 日曜数学会）
四元数のはなし（5 月 / 関西日曜数学友の会）
2/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 3

![Page Image](https://bcdn.docswell.com/page/P7R24PL5J9.jpg)

今回の内容
ルービックキューブは群論の言葉で考察することができます。
SageMath でルービックキューブ群について調べて遊んでみたい
と思います。
3/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PJXD23WXEX.jpg)

ルービックキューブ考察にあたっての前提
3 次元空間の中でキューブの位置や向きを固定します。キューブ
そのものを回転させることは考えません。
キューブの操作は、各面を時計回りまたは反時計回りに 90 度ずつ
動かすことを考えます。真ん中の列を回転させることはしません。
4/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 5

![Page Image](https://bcdn.docswell.com/page/3JKXMYV9ED.jpg)

小方体（cubelet）
小方体：キューブを構成する小立方体。中心を除いて 26 個。
1 面体：1 つの面が外側に見えている小方体。6 個。
2 面体：2 つの面が外側に見えている小方体。12 個。
3 面体：3 つの面が外側に見えている小方体。8 個。
先ほどの前提から、1 面体は動きません。2 面体と 3 面体がキュー
ブの操作によって移動します。
5/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LE35Y9M9J5.jpg)

小面（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 で見る


# Page. 7

![Page Image](https://bcdn.docswell.com/page/8EDD5G68EG.jpg)

キューブ操作のシングマスター記法
各面を時計回りに 90 度回転する操作を U, D, L, R, F, B と書きま
す。反時計回りは U0 または U−1 と書きます。
7/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 8

![Page Image](https://bcdn.docswell.com/page/V7PXG3YWE8.jpg)

ルービックキューブ群
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 で見る


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2JVL64G97Q.jpg)

SageMath
SageMath は数学関連のソフトウェアを統合したものです。
SageMath には、ルービックキューブ群を扱うプログラムが最初
から組み込まれています。
sage: rubik = CubeGroup()
sage: rubik
The Rubik&#039;s cube group with generators R,L,F,B,U,D
in SymmetricGroup(48).
9/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 10

![Page Image](https://bcdn.docswell.com/page/5EGXN184JL.jpg)

ルービックキューブのグラフィカル表示 (1)
sage: rubik.display2d(&quot;&quot;)
sage: rubik.plot_cube(&quot;&quot;)
sage: rubik.plot3d_cube(&quot;&quot;)
+--------------+
| 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 で見る


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4JQ8QD9R7P.jpg)

ルービックキューブのグラフィカル表示 (2)
sage: rubik.plot_cube(&quot;R&quot;)
sage: rubik.plot_cube(&quot;R U&quot;)
11/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 12

![Page Image](https://bcdn.docswell.com/page/K742NZXQJ1.jpg)

ルービックキューブの操作 (1)
sage: rubik.move(&quot;R&quot;)[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(&quot;R2&quot;)[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 で見る


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LJ1M5RNLEG.jpg)

ルービックキューブの操作 (2)
sage: rubik.move(&quot;R U&quot;)[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 で見る


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GJW3514QJ2.jpg)

ルービックキューブ群の位数
ルービックキューブ群は有限群です（有限集合の置換は有限個）
。
その大きさがどれくらいなのか見てみます。
sage: rubik = CubeGroup()
sage: rubik.order()
43252003274489856000
sage: rubik.order().factor()
2^27 * 3^14 * 5^3 * 7^2 * 11
つまり、ルービックキューブで可能な配置は約 4325 京通りある
ことが分かります。
14/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4EZVNP23J3.jpg)

元の位数 (1)
Definition
群の元 g について gm = 1 が成り立つような自然数 m で最小のも
のを、元 g の位数と呼びます。
Definition
ルービックキューブの特定の操作手順 g を m 回繰り返すと元の配
置に戻るとき、その最小の m を g の位数と呼びます。
操作 R は 4 回行えば元に戻るので R の位数は 4 です。
sage: rubik.move(&quot;R&quot;)[0].order()
4
15/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 16

![Page Image](https://bcdn.docswell.com/page/Y7658MVZEV.jpg)

元の位数 (2)
Theorem
有限群の元の位数は有限である。
これは、群の元 g に対して集合 {gk | k ∈ Z} が部分群となること
から分かります。
Theorem
ルービックキューブで特定の操作手順を何度も繰り返すと、必ず
元の配置に戻る。
ルービックキューブで考えると成り立つかどうか分からない気が
しますが、群論で考えるとわりと簡単に分かる、というのは興味
深い点だと思います。
16/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G75Y9ZD974.jpg)

元の位数 (3)
では、操作 RU は何回やれば元に戻るのか？
sage: rubik.move(&quot;R U&quot;)[0].order()
105
実際にやってみると、
「え、これ本当に元に戻る・・・？」と不安
になりますが、頑張って回すと本当に戻るのでちょっと感動。
17/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 18

![Page Image](https://bcdn.docswell.com/page/9J2G2R85JR.jpg)

元の位数 (4)
ルービックキューブ群には位数 1260 の元があります。そのひと
つが RU2 D0BD0 です。これより大きい位数の元はありません。
sage: rubik.move(&quot;R U2 D&#039; B D&#039;&quot;)[0].order()
1260
18/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 19

![Page Image](https://bcdn.docswell.com/page/DEYVYD66EM.jpg)

操作手順の例：むすび
動く小面が少ない操作手順の例を挙げます。島内先生の本で「む
すび」と呼んでいる手順です。操作は多いですが、結果を図で表
示すると分かりやすいような気がします。
sage: rubik.plot_cube(&quot;R B L F U^2 F&#039; L&#039; B&#039; R&#039; U^2&quot;)
19/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 20

![Page Image](https://bcdn.docswell.com/page/VJNMPN1178.jpg)

共役
群の元 g に対して（群の元 h を使って）h−1 gh の形の元を共役と
呼びます。
「むすび」の共役を考えると、別の場所の置換を作り出すことがで
きます。
sage: rubik.plot_cube(&quot;R R B L F U^2 F&#039; L&#039; B&#039; R&#039; U^2 R&#039;&quot;)
20/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


# Page. 21

![Page Image](https://bcdn.docswell.com/page/YE9N3R5YE3.jpg)

参考文献
参考文献：
Rubik’s cube group functions - Sage Reference Manual
David Joyner、群論の味わい －置換群で解き明かすルービッ
クキューブと 15 パズル－
島内剛一、ルービック・キューブと数学パズル
David Joyner 先生が SageMath にルービックキューブ群を組み
込んだようです。
島内先生の本には、ルービックキューブの様々な手順や、それを
利用した解法が載っています。（残念ながら絶版ですが）
21/21
宇佐見 公輔
ルービックキューブ群を SageMath で見る


