ZDD入門-お姉さんを救う方法
- 8. もう一声!6×6!
• 辺の本数は5×6×2=60本
• 局面数は2^60 = 1ゼタ通り
• 必要なメモリは128エクサバイト…
一億テラバイト以上?!
お姉さん死んじゃう!やめて!
8
- 9. 解のvectorで持つ
xyzr
0000 • 「全部1bit使うよりf(x)=1が成立するx
0010 だけリストアップすればいいのでは」
0100
0111 • 6×6だと一局面を60bitで表現できる
1000
1011 • 解の個数は126万2816通り
1101
1111 • 60bit × 1262816 ≒ 9メガバイト
• これならメモリに収まる!
9
- 10. もう二声!8×8!
• 辺の本数は 7×8×2=112本
• 一局面に 112bit
• 解の個数:789ギガ通り
• 112bit × 789ギガ通り ≒ 11テラバイト
お姉さん死んじゃう!やめて!
10
- 15. ZDD:
Zero-supress BDD
• BDDとちょっと頂点削除のルールが違う
• ZDD:「ここが1だったらどうやっても
結果が0になる」な頂点を削除
• BDD:「ここが0でも1でも結果が変わら
ない」な頂点を削除
←違いはわずか
15
- 18. 何が出来る? 続き(2/4)
• f(x)→0/1 のBDDがあると、
与えられた重みベクトルwについて、
f(x) = 1の条件下で内積wxを最大化する解xを
O(n+B)ステップで求められる(Boole計画法)
• 例えば各辺のコストが与えられたら、
コスト最小のパスを探せる
n: xのビット数、B: BDDの頂点数
18
- 19. 何が出来る? 続き(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