SlideShare a Scribd company logo
ZDD入門
(副題:お姉さんを救う方法)

     西尾 泰和




                 1
お姉さん?
• 副題の元ネタがわからない人は
 Youtubeで「フカシギの数え方」を見てください




   http://www.youtube.com/watch?v=Q4gTV4r0zRs
                                                2
前回のあらすじ
• 前回のランダムフォレスト(竹迫さん)は
 決定木を「特徴をランダムに選んで、決
 定しきらなくても適当に打ち切って、と
 にかくたくさん作って多数決!」だった


• 今回も決定木だが「特徴を全部使って、
 巨大な決定木をつくるぞ!」という話


                        3
決定木が表現するもの
• 0/1の特徴がたくさん与えられて0/1を返す関数
• 具体例:
 • 論理式(項が特徴、式の値が返り値)
 • 部分集合の族(各頂点が部分集合xに含まれる
  かどうかが特徴、その部分集合が族に含まれ
  るかどうかが返り値)


                             4
もっと具体例



  の族
         この情報を
         どうやって
       コンピュータの中に
         表現する?

                   5
vector<bool>

• ←赤枠の中身を持つ
• 特徴の個数をNとして2^N bitのメモリ
        3×3 は辺が12本
        → 4096通り
        → 512バイト → 余裕!

                          6
5×5だと?

• 辺の本数は4×5×2=40本
• 局面数は2^40 = 1テラ通り
• 必要なメモリは128ギガバイト…


                     7
もう一声!6×6!
  • 辺の本数は5×6×2=60本
  • 局面数は2^60 = 1ゼタ通り
  • 必要なメモリは128エクサバイト…
   一億テラバイト以上?!




    お姉さん死んじゃう!やめて!
                     8
解のvectorで持つ
xyzr
0000   • 「全部1bit使うよりf(x)=1が成立するx
0010    だけリストアップすればいいのでは」
0100
0111   • 6×6だと一局面を60bitで表現できる
1000
1011   • 解の個数は126万2816通り
1101
1111   • 60bit × 1262816 ≒ 9メガバイト
       • これならメモリに収まる!
                                    9
もう二声!8×8!
 • 辺の本数は 7×8×2=112本
 • 一局面に 112bit
 • 解の個数:789ギガ通り
 • 112bit × 789ギガ通り ≒ 11テラバイト

       お姉さん死んじゃう!やめて!
                                10
どうすればいい??



            11
共通部分をまとめる
• 「?」の部分がなんであれ結果は同一
 →じゃあ別個に持つ必要ないじゃん!
 →共通部分をまとめて圧縮しよう!




                      12
BDD:
Binary Decision Diagram
               二分木、ただし
             共通部分を共有して
             消費メモリ量を節約



               頂点削除:


            記法:点線がlo, 実線がhi
                              13
さらに
• スタートから横に進む辺を選んだら、
 下に進む辺を選んではいけない。
 選んだらその後どうあがいても全部NG



       → 「?」の中身がどうでも
          全部NGになる


                       14
ZDD:
    Zero-supress BDD
• BDDとちょっと頂点削除のルールが違う
• ZDD:「ここが1だったらどうやっても
 結果が0になる」な頂点を削除

• BDD:「ここが0でも1でも結果が変わら
 ない」な頂点を削除


                  ←違いはわずか
                            15
ZDDで8×8!
• ZDDで表現した場合の頂点数:33580個
• 112辺のどの辺についての頂点かを識別す
  るために8bit使おう (7bitでも足りるけど)

• 33580個の頂点を識別するには16bit必要
• (8bit + 16bit × 2) × 33580 ≒ 168キロバイト
 11テラ→168キロ!!
                           TAOCP-ja 7.1 P121
                                           16
BDD/ZDDで何が出来る?
• 168KBで 789ギガ通りの解の集合を保持できる
• 解を辞書順に列挙できる
• 全ての解が等確率なサンプリングが出来る
• ある局面がOKかNGか、
 最大112ステップで判定できる

• BDDのまま和・積などの集合演算ができる
                              17
何が出来る? 続き(2/4)
• f(x)→0/1 のBDDがあると、
 与えられた重みベクトルwについて、
 f(x) = 1の条件下で内積wxを最大化する解xを
 O(n+B)ステップで求められる(Boole計画法)

• 例えば各辺のコストが与えられたら、
 コスト最小のパスを探せる

            n: xのビット数、B: BDDの頂点数
                               18
何が出来る? 続き(3/4)
                                        * 独立に
• 各x_iが確率p_iで1になる時*に、
 f(x) = 1である確率をO(B)ステップで
 求められる(信頼性多項式)


          0.1 * 0.2 * (1-0.3) * (1-0.4) +
           (1-0.1) * (1-0.2) * 0.3 * 0.4

                               B: BDDの頂点数
                                            19
何が出来る? 続き(4/4)

• f(x) = 1の解の個数を最悪実行時間O(nB)で
 求めることが出来る

• 例えばお姉さんが救える!

           n: fのビット数、B: BDDの頂点数
                               20
そんな便利なBDDを
どうすれば作れるか?


             21
to be continued...
                     22

More Related Content

What's hot

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
 

What's hot (20)

最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 

More from nishio

More from nishio (20)

量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング
 
夏プロ報告
夏プロ報告夏プロ報告
夏プロ報告
 
ITと経営
ITと経営ITと経営
ITと経営
 
部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI
 
交渉力について
交渉力について交渉力について
交渉力について
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
組織横断型研究室構想
組織横断型研究室構想組織横断型研究室構想
組織横断型研究室構想
 
2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義
 
強化学習その5
強化学習その5強化学習その5
強化学習その5
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法
 
強化学習その4
強化学習その4強化学習その4
強化学習その4
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
強化学習その1
強化学習その1強化学習その1
強化学習その1
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
機械学習キャンバス0.1
機械学習キャンバス0.1機械学習キャンバス0.1
機械学習キャンバス0.1
 
首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズム
 
Wifiで位置推定
Wifiで位置推定Wifiで位置推定
Wifiで位置推定
 
ESP8266EXで位置推定
ESP8266EXで位置推定ESP8266EXで位置推定
ESP8266EXで位置推定
 

Recently uploaded

Recently uploaded (10)

2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
ゲーム理論 BASIC 演習108 -フリーライダー② -#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習108 -フリーライダー② -#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習108 -フリーライダー② -#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習108 -フリーライダー② -#ゲーム理論 #gametheory #数学
 
Key points of the revision of the Inheritance Law Contribution and Special Co...
Key points of the revision of the Inheritance Law Contribution and Special Co...Key points of the revision of the Inheritance Law Contribution and Special Co...
Key points of the revision of the Inheritance Law Contribution and Special Co...
 
〔第27回日本高等教育学会年会発表〕IRにおける教務概念のオントロジー化 − 情報科学からのアプローチ −
〔第27回日本高等教育学会年会発表〕IRにおける教務概念のオントロジー化 −	情報科学からのアプローチ −〔第27回日本高等教育学会年会発表〕IRにおける教務概念のオントロジー化 −	情報科学からのアプローチ −
〔第27回日本高等教育学会年会発表〕IRにおける教務概念のオントロジー化 − 情報科学からのアプローチ −
 
On community support centres as a sales destination.pdf
On community support centres as a sales destination.pdfOn community support centres as a sales destination.pdf
On community support centres as a sales destination.pdf
 
To obtain the status of Foreigners' Immigration Residence Operations Specifie...
To obtain the status of Foreigners' Immigration Residence Operations Specifie...To obtain the status of Foreigners' Immigration Residence Operations Specifie...
To obtain the status of Foreigners' Immigration Residence Operations Specifie...
 
modul belajar bagasa jepang pemula -N5.pdf
modul belajar bagasa jepang pemula -N5.pdfmodul belajar bagasa jepang pemula -N5.pdf
modul belajar bagasa jepang pemula -N5.pdf
 
How to create a Divorce Agreement. Presented by Wadatsumi
How to create a Divorce Agreement. Presented by WadatsumiHow to create a Divorce Agreement. Presented by Wadatsumi
How to create a Divorce Agreement. Presented by Wadatsumi
 
東京工業大学 大学院 6学院入試説明会資料 2024年度受験者向け
東京工業大学 大学院 6学院入試説明会資料 2024年度受験者向け東京工業大学 大学院 6学院入試説明会資料 2024年度受験者向け
東京工業大学 大学院 6学院入試説明会資料 2024年度受験者向け
 
The types of disability that administrative scrivener involved in the disabil...
The types of disability that administrative scrivener involved in the disabil...The types of disability that administrative scrivener involved in the disabil...
The types of disability that administrative scrivener involved in the disabil...
 

ZDD入門-お姉さんを救う方法