Slide 1

Slide 1 text

プラレールで作る 論理回路 プログラマのための数学LT会 2! 東京工業大学 情報理工学院 数理・計算科学系 赤間 仁志 @lin_calc

Slide 2

Slide 2 text

自己紹介スライド ● 赤間 仁志 ○ 東京工業大学 情報理工学院 数理・計算科学系 ● セキュリティ・キャンプ全国大会 2014 卒業生 ○ セキュアなシステムを作ろうクラス OSECPU-VMゼミ ● 明日親知らずを抜きます

Slide 3

Slide 3 text

概要 プラレールで 論理計算

Slide 4

Slide 4 text

fig. 某社オフィスに構築された半加算器 (1bitの加算回路)

Slide 5

Slide 5 text

背景

Slide 6

Slide 6 text

プラレール ● タカラトミーが販売する鉄道模型のおもちゃ ● 対象年齢は3歳以上 ● いろいろなレールがある ○ …...ので,意図せずに計算が可能となった

Slide 7

Slide 7 text

先行研究 ● むにむに教授 ,プラレールとレゴで論理演算。 (2014) ○ https://www.youtube.com/watch?v=SqwVAE_RMTk

Slide 8

Slide 8 text

問題提起 ● 先行研究では,レゴの助力を得てプラレールで計算をする ● 純粋なプラレールでどこまで計算ができるか? 結論:任意の論理関数を表現できる(予想)

Slide 9

Slide 9 text

プラレール論理計算の原理

Slide 10

Slide 10 text

● 分岐レールにはポイントがある ○ ポイントの向きで分岐 ● 向きでゼロとイチを表現できる ● 入出力,および変数として使用 ○ 読み書き可能 真偽値の表現 (ターンアウトレール)

Slide 11

Slide 11 text

真偽値の読み出し = 分岐

Slide 12

Slide 12 text

真偽値の書き込み = ポイントを蹴る

Slide 13

Slide 13 text

計算の流れ 1. 論理関数を表現するレイアウトを組む 2. 入力に相当するポイントを人間が切り替える 3. スタート位置から電車を走らせる 4. 電車の動きで,出力に相当するポイントが切り替わる

Slide 14

Slide 14 text

例:ORゲート X = A or B input output

Slide 15

Slide 15 text

例:ANDゲート X = A and B

Slide 16

Slide 16 text

例:XOR

Slide 17

Slide 17 text

なぜXORだけ複雑になるのか? ● そもそもXORってどんな演算だろうか ● XORの ”気持ち” を解析しよう ということで, ● 論理関数を別の形で表して考える ● Binary decision diagramを導入

Slide 18

Slide 18 text

Binary decision diagram (BDD) ● 論理関数 ( {0, 1}^n → {0, 1} ) を表すデータ構造 ● 応用範囲がとても広い ○ 論理回路合成 ○ 充足可能性問題 (SAT) ○ シンボリックモデル検査 など ● 偶然にもプラレールに応用できた ● 変数の順序を定めると構造は一意 0 1 z x y

Slide 19

Slide 19 text

0 1 z x y 1. いちばん上からスタート 2. その変数が0なら破線を, 1なら実線をたどってゆく 3. 終端が関数の値 BDDの意味 f(x, y, z) = x and (y or z)

Slide 20

Slide 20 text

● x = 1, y = 0, z = 1 を代入 1. x = 1なので実線をたどる 2. y = 0なので破線をたどる 3. z = 1なので実線をたどる 4. 終端ノード1にたどり着く 計算の例 0 1 z x y f(x, y, z) = x and (y or z)

Slide 21

Slide 21 text

Binary Decision Diagram (BDD) の特徴 ● 2つのBDD (A, B) 同士の論理演算(and, orなど)が効率的 ○ ノードの数を各々 |A|, |B|とすると O(|A| |B|) 時間 ● ある論理関数に対して,もっともノード数の少ないBDDが一意に存在 ○ ただし変数の順序は固定されているとする ○ BDDをもっともノードが小さくなるよう簡約する操作は O(|A| log |A|) ○ 2つのBDDが同じ論理関数を表すか比較することも簡単 ● 他にもたくさんいいところがある

Slide 22

Slide 22 text

BDDとプラレールの対応 x x 0 1 0 1 ≒

Slide 23

Slide 23 text

0 1 z x y 0 1 ≒ _人人人人人人人_ > 完全に一致 <  ̄Y^Y^Y^Y^Y^Y ̄ x y z

Slide 24

Slide 24 text

AND OR XOR 0 1 A B 0 1 A B 0 1 A B B Bが2つある!

Slide 25

Slide 25 text

プラレール回路でXORが素朴に作れない理由 ● 入力Bの分岐レールはレイアウト上にひとつしか存在しない ● ので,入力Bから異なる分岐先に接続することはできない → 0 → 1 → 1 → 0

Slide 26

Slide 26 text

プラレールで素朴に記述できるための条件 ● 論理関数 Φ : {0, 1}^n → {0, 1} がプラレールで素朴に記述できる if and only if ● Φに対応する(既約な)BDDが同じ変数のノードを2つ以上持たない プラレールの性質を,数学的なデータ構造の特徴で表すことができた

Slide 27

Slide 27 text

過去の展示

Slide 28

Slide 28 text

半加算器 ver. 1.0.0 ● OSC 2016/Tokyo Fall ○ 2016年11月 ● 3.5m * 2.5mほど ● 計算は約2分かかる

Slide 29

Slide 29 text

半加算器 ver. 2.1.1 ● OSC 2017/Tokyo Spring ○ 2017年3月 ● -31%の小型化 ● 2.5m四方に入る ● 計算時間は変わらず

Slide 30

Slide 30 text

2進数カウンタ ● 自動ターンアウトレールのトグル動作を利用し,2進数カウンタを制作 ● Developer Summit 2017にて展示

Slide 31

Slide 31 text

参考文献 ・むにむに教授 ,プラレールとレゴで論理演算。 https://www.youtube.com/watch?v=SqwVAE_RMTk ・プラレールで半加算器を設計した話 https://cybozushiki.cybozu.co.jp/articles/m001205.html ・Huth, Michael, and Mark Ryan. Logic in Computer Science: Modelling and reasoning about systems. Cambridge university press, 2004. ・画像:いらすとや

Slide 32

Slide 32 text

まとめと告知 ● プラレールは論理計算ができる ● Binary decision diagramをプラレールのレイアウトと対応させた ○ 面白いデータ構造なので興味を持ってもらえると嬉しいです ● 結局,プラレールでXORはどうやって作ったのか? ○ 続きはWebで! 「プラレール 半加算器」で検索 ● 9/9, 10のOSC 2017 Tokyo/Fallで新作を展示します! Follow us on Twitter! @lin_calc