rubick
DESCRIPTION
tokkuniTRANSCRIPT
![Page 1: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/1.jpg)
数学とアルゴリズムとの関りについて ~ルービックキューブの例~
by小倉拳
![Page 2: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/2.jpg)
自己紹介・名前 小倉 拳 (挙ではない)
・twitter @catupper
・シンボルカラー 赤・種族 猫 遊び人・NPCAでの呼称 赤い人・好きな物数学プログラミング立方体
![Page 3: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/3.jpg)
テーマ
数学とアルゴリズムの関わりの歴史や実情をルービックキューブのコンピューターの世界における数学的な考察を例に考えてみたい(願望)
注:本プレゼンテーションはプレゼンター的な諸事情で話題が変な方向に行きがちですあと途中からスライドが手抜きです
![Page 4: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/4.jpg)
ルービックキューブとは
シンプルかつ難解なパズル
エルノー・ルービック教授作
日本では1980年頃に
ツクダオリジナル社の平社員の独断で
発売開始
ブームが数十年置きに来る
隅に置けない四角いヤツ
![Page 5: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/5.jpg)
コンピューターとの関わり3Dであらゆる方向の回転があることから3D処理やシミュレートの実演として度々話題になる
シンプルさから1980年ころから解法アルゴリズムの論文が飛び交う
誕生から25年したつい最近、やっとアルゴリズムが確立された長いこと処理速度、処理効率における問題があった
![Page 6: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/6.jpg)
アルゴリズムの進化
基本的には全探索のみだった
数学的に解こうという試みがなされ
ステップを踏んだり、形式を確立したり
あらゆるアルゴリズムが考え出された
その過程で人間が大会などで使っているアルゴリズムが発明された
![Page 7: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/7.jpg)
解法の歴史
人類用の解ツクダ社開発のツクダ式上面→下面→中層
スピードキューブ主流のLBL方式下層→中層→上層
目隠しのための解法3 cycle method
3つづつ入れ替える
これらは人間の脳の処理能力内
![Page 8: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/8.jpg)
あるソルブロボット
あるリトアニアの少年が開発したルービックキューブソルブロボットはLBL方式をで解くシステムになっている
彼のブログ要約「アルゴリズムについてはちょっと
ググっただけだからあんまり早く
はない」
引用:Andrius Sutas's blog
![Page 9: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/9.jpg)
どうすれば手数を少なく解く
ことができるのか?
力技は面白く無いからさらに
効率的なアルゴリズムが必要。
![Page 10: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/10.jpg)
アルゴリズムPC用アルゴリズムは先述の人間用アルゴリズムのように視覚を使って解くのにやさしい必要がない
数学的にややこしい計算が出てきたりしても大丈夫。
オーダーが鍵になってくるのでアルゴリズムの上でどのように数値が絡んでくるか知る必要があった数値化して解く必要があった
![Page 11: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/11.jpg)
そこで群論を使って解くという考えがでてきた
![Page 12: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/12.jpg)
群論的考察ルービックキューブの各部位に名称をつける
R,L,U,D,F,B面 RUF(頂点) DU(辺) etc..
回転においてどのように各部位が入れ替わるか
分析
例:R面を時計回りに回転RFUがRUBに移る
向きが120度回転する
→向きという要素もある 前 右
![Page 13: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/13.jpg)
回転における分析
回転するとパーツの位置や向きが変わる各パーツの入れ替わりは写像の形をとっている
これらの写像はすべて全単射で合成可能
崩れた状態から目的の状態までの写像を
回転の写像の組み合わせであらわす
![Page 14: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/14.jpg)
数値での処理各回転の場所、向きの変化、入れ替わりの関数を数値化する
各場所を番号付けしてそれらの移動を基に数値化
今回は移動後の数字で自分より左がわで自分より小さい数の個数で場合分け
0×1!+1×2!+2×3!+4×4!+1×5!+6×6!+7×7!=39950
1 2 3 4 5 6 7 8
2 6 3 4 1 5 7 8
例:
![Page 15: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/15.jpg)
数値化からの考察
このような数値化を施すことでルービックキューブの全体像が見えてくるキューブの組み合わせの数は
(2^11)*(3^7)*12!*8!/2通りある
キューブの回転は順序を入れ替えること
ができない(非可換)ので少ない回転数
で多くの場合に到達できる
![Page 16: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/16.jpg)
解法を見つけるにはこれらの入れ替わりの組み合わせをパターンごとに
分類して段階を踏んで完成に近づける。
人間用解法は場所単位で段階を踏むがコンピューター用解法は手順(動き)で段階を踏む例:{右、左、上、前面の回転だけで出来る状態}
→ {それ以外の回転で作ることの出来る状態}
→ {全部完成した状態}
今までいくつかのアルゴリズムが発見されている
![Page 17: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/17.jpg)
解法の歴史コンピューター用の解放シスルウェイトのアルゴリズム 動きでグループ分けして 全探索 最大52手
コシエンバのアルゴリズム
少ないグループわけをして A*検索 最大40手
リチャードのアルゴリズム
場所でもグループ分けして A*検索 最大22手
Two-Phase-Argorithm
上3つのアルゴリズムの総称 群論関係
![Page 18: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/18.jpg)
ソルブロボット事情
ソルブロボットの大半は先述のアルゴリズム
人間の手とはちがい早く動かせない代わりに
短く解く
アルゴリズムをいかに早く処理するかが課題最近では1秒かかる程度
回転中に処理することでロスを回避
スピードでは人間に叶いそうにない
![Page 19: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/19.jpg)
残る課題サイズに関係ない一般化オーダーがN^2logNとなるアルゴリズムは見つかっている
最短手数探索が課題
ソルブロボットの高性能化技術面の課題
スピード
アルゴリズムだけが課題じゃない!
実用のためのアルゴリズム
![Page 20: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/20.jpg)
ルービックキューブは奥が深い!PCの処理能力をもってしても解決はできないほど課題が沢山有る。
これを解決するためにも数学の技術やアルゴリズムのレベルの向上が必
要。プログラムを組むためにも
アルゴリズムは大事である!それに応じて数学も大事である!
結論
![Page 21: Rubick](https://reader034.vdocuments.mx/reader034/viewer/2022042816/559895951a28abde348b4651/html5/thumbnails/21.jpg)
参考資料
Andrius Sutas's blog
The Q cube algo
「群論」におけるGoogle検索結果
その他群論関連の本
2ch数学板
Yahoo知恵袋の人々