Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プラレールで作る論理回路

 プラレールで作る論理回路

プログラマのための数学LT会 2! での発表です.
ライセンスは CC BY-SA 2.0とします.

関連記事: https://cybozushiki.cybozu.co.jp/articles/m001205.html

Akama Hitoshi

July 19, 2017
Tweet

More Decks by Akama Hitoshi

Other Decks in Programming

Transcript

  1. 自己紹介スライド • 赤間 仁志 ◦ 東京工業大学 情報理工学院 数理・計算科学系 • セキュリティ・キャンプ全国大会

    2014 卒業生 ◦ セキュアなシステムを作ろうクラス OSECPU-VMゼミ • 明日親知らずを抜きます
  2. Binary decision diagram (BDD) • 論理関数 ( {0, 1}^n →

    {0, 1} ) を表すデータ構造 • 応用範囲がとても広い ◦ 論理回路合成 ◦ 充足可能性問題 (SAT) ◦ シンボリックモデル検査 など • 偶然にもプラレールに応用できた • 変数の順序を定めると構造は一意 0 1 z x y
  3. • 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)
  4. Binary Decision Diagram (BDD) の特徴 • 2つのBDD (A, B) 同士の論理演算(and,

    orなど)が効率的 ◦ ノードの数を各々 |A|, |B|とすると O(|A| |B|) 時間 • ある論理関数に対して,もっともノード数の少ないBDDが一意に存在 ◦ ただし変数の順序は固定されているとする ◦ BDDをもっともノードが小さくなるよう簡約する操作は O(|A| log |A|) ◦ 2つのBDDが同じ論理関数を表すか比較することも簡単 • 他にもたくさんいいところがある
  5. AND OR XOR 0 1 A B 0 1 A

    B 0 1 A B B Bが2つある!
  6. プラレールで素朴に記述できるための条件 • 論理関数 Φ : {0, 1}^n → {0, 1}

    がプラレールで素朴に記述できる if and only if • Φに対応する(既約な)BDDが同じ変数のノードを2つ以上持たない プラレールの性質を,数学的なデータ構造の特徴で表すことができた
  7. 半加算器 ver. 1.0.0 • OSC 2016/Tokyo Fall ◦ 2016年11月 •

    3.5m * 2.5mほど • 計算は約2分かかる
  8. 半加算器 ver. 2.1.1 • OSC 2017/Tokyo Spring ◦ 2017年3月 •

    -31%の小型化 • 2.5m四方に入る • 計算時間は変わらず
  9. まとめと告知 • プラレールは論理計算ができる • Binary decision diagramをプラレールのレイアウトと対応させた ◦ 面白いデータ構造なので興味を持ってもらえると嬉しいです •

    結局,プラレールでXORはどうやって作ったのか? ◦ 続きはWebで! 「プラレール 半加算器」で検索 • 9/9, 10のOSC 2017 Tokyo/Fallで新作を展示します! Follow us on Twitter! @lin_calc