Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
ZDD とフロンティア法2017年版 ver 0.1
奈良先端科学技術大学院大学川原 純
ZDD
• Zero-suppressed Binary Decision Diagram (ZDD) [Minato 1993]
• 集合族(集合の集合)をコンパクトに表現
{{e1, e2, e5}, {e1, e3, e4, e7}, {e1, e5, e8, e12}, {e3, e7, e9}, {e2, e6, e7, e8, e9, e10}, {e4}, {e1, e4, e6, e8}, {e1, e2, e5, e8}, {e1, e9, e10}, {e4, e5, e9}, {e1, e3, e4, e5, e9, e11}, {e6, e7}, {e1, e4, e5}, {e1, e5, e8, e10}, {e2, e5, e11}, {e5, e8, e9}, {e2, e3, e7, e8}, {e10, e11, e12},…}
特殊な形をしたグラフ
ZDD
ゼロサプレス型二分決定グラフ
集合族
ZDD の読み方
{
}
e1 e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { } { }
{ } { } { }
ZDD
集合族
0 1
10
e1
e2
e3e4
e5
e3
e3
0 : 0 終端
1 : 1 終端それぞれ1個ずつ
ei : ノード e1 e5~ いずれかのラベル0-枝と1-枝を1個ずつもつ
(点線)(実線)ei が ej を指すなら
i < j
ZDD の読み方
{
}
e1 e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { } { }
{ } { } { }
ZDD
集合族
0 1
10
e1
e2
e3e4
e5
e3
e3
ei : ノード e1 e5~ いずれかのラベル0-枝と1-枝を1個ずつもつ
(点線)(実線)
集合と根から までの経路が1対1対応
根
1
ei が ej を指すならi < j
ZDD の読み方
{
}
e1 e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { } { }
{ } { } { }
ZDD
集合族
0 1
10
e1
e2
e3e4
e5
e3
e3
ei : ノード e1 e5~ いずれかのラベル0-枝と1-枝を1個ずつもつ
(点線)(実線)
集合と根から までの経路が1対1対応
根
1
ei が ej を指すならi < j
ZDD の読み方
{
}
e1 e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { } { }
{ } { } { }
ZDD
集合族
0 1
10
e1
e2
e3e4
e5
e3
e3
ei : ノード e1 e5~ いずれかのラベル0-枝と1-枝を1個ずつもつ
(点線)(実線)
集合と根から までの経路が1対1対応
根
1
ei が ej を指すならi < j
ZDD と二分木
• ZDD は2分木を圧縮したものとみなすことができる
e1e1 = 0e2
e2 = 0
e4
e2e2 = 1 e2 = 0 e2 = 1
e1 = 1
e5
e3 e3 e3 e30 1
1 1 他は 011
{}
e2 e4e2e5e4e3,, e3
,e5e5 e5e5,
{ } { },{ } { } { }
11
e5{ } e3 e5{ }ZDD
0 1
10
e1
e2
e3e4
e5
e3
e1{ }e3
1枚でわかるZDDの特徴• 情報が(構造によっては)指数的に効率よく
圧縮されて保存されている• ZDD演算を用いることで、
蓄えられている情報の活用が可能• ある要素を含む(含まない)解の抽出
• 集合演算(∪, ∩, subtract, superset, subset)
• 要素の数の数え上げ• 一様ランダムサンプリング
• 重み最大・最小の要素の抽出
{e1, e2, e5},{e1, e4},{e1, e3, e4, e7},...
{e1, e4},{e1, e3, e4, e7},...
アルゴリズムe4 を含む集合を抽出
{e1, e2, e5}, {e1, e3, e4, e7}, {e1, e5, e8, e12}, {e3, e7, e9}, {e2, e6, e7, e8, e9, e10}, {e4}, {e1, e4, e6, e8}, {e1, e2, e5, e8}, {e1, e9, e10}, {e4, e5, e9}, {e1, e3, e4, e5, e9, e11}, {e6, e7}, {e10, e11, e12},…
3266598486981642 通り
∪
和集合
{e1, e2, e5},{e1, e3, e4, e7},...
{e1, e4},{e1, e3, e4, e7} ,...
{e1, e2, e5},{e1, e4},{e1, e3, e4, e7},...
アルゴリズム
グラフ最適化• ZDD をグラフ最適化に用いることもできる• 本スライドでは ZDD のグラフ最適化への適用事例を紹介
• パスの列挙と数え上げ• 配電網構成• パズルの求解・問題生成• 選挙区割と避難所割当
• すべて同じ枠組みで扱える
パスの列挙
• グラフ G=(V, E) と 2頂点 s, t が与えられたときs から t への全てのパスを求める問題
3×3 グリッドグラフ
s
t
パスの列挙
• グラフ G=(V, E) と 2頂点 s, t が与えられたときs から t への全てのパスを求める問題
s
t
パス集合の集合族による表現• 入力グラフ G を固定する• パス集合を部分グラフとみなせる
• パス集合をZDDで表現できる
入力グラフ G a
bc
st
e1
e2e3
e4
e5
e6
{e1, e5}
{e2, e3, e5}
{e1, e3, e4, e6}
{e2, e4, e6}
e1
e2 e2
e3 e3
e4 e4 e4 e4
e5 e5e5
e6
10
e1e2
e3e4
e5e6
パス列挙(ZDD構築)アルゴリズム [Knuth 2011]a
bc
s te1
e2e3
e4
e5
e6
最初に根ノードを作成
D. E. Knuth, The art of computer programming, Vol. 4A, Combinatorial algorithms, Addison-Wesley, 2011.
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
e1 を使わない e1 を使う
e1 を使わない/使う場合に対応したノードをそれぞれ作成
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
e1 を使わない e1 を使う
e2 を使わない
e1, e2 を両方とも使わないとs の次数が0になり、s-t パスが完成しない→ 枝刈りする(0-終端に接続)
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
e1 を使わない e1 を使う
e2 を使わない e2 を使う
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
e1 を使わない e1 を使う
e2 を使わない e2 を使う e2 を使わない e2 を使う
s の次数が2になり、s-t パスが完成しない→ 枝刈りする
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
…
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
…
0 0 1 0
s-t パスが完成すればしなければ 0
1
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
…
0 0 1 0 0 0 1 0
← 2つのノードは子の構造が同じ
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
…
処理済み辺 未処理辺
s と接続いずれにも接続しない
で囲まれた頂点の接続のされ方が同じ
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
… 子の構造が同じなので、マージできる
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
…
0 0 1 0
マージすることで同じ計算の繰り返しを避けられ、効率がよくなる
パス列挙(ZDD構築)アルゴリズム
fd
sa
b c
d
hf
g
s t a
b c
d
hf
g
s t
fd
s
フロンティア
処理済み辺 未処理辺
部分パスの反対側の端点を各ノードに記憶しておく。フロンティア上ですべて一致するなら、2つは同じ状態とみなし、マージを行う(マージが可能なことの証明は [Yoshinaka et al. 2012] )
R. Yoshinaka, T. Saitoh, J. Kawahara, K. Tsuruma, H. Iwashita, and S. Minato,"Finding all solutions and instances of numberlink and slitherlink by ZDDs,"Algorithms, 5(2):176--213, 2012.
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
sa
as
s
a
b
ssa
as
s
a
b
s
ノードに記憶させる情報
パス列挙(ZDD構築)アルゴリズムa
bc
s te1
e2e3
e4
e5
e6
完成したZDD(0-終端は省略、1終端は非共有)
s
t
e1e2
e3e4 e5e6
e11
e10e7 e9
e8
e12入力グラフ
ZDD (0終端は省略)
ZDDの構築例
s
t
e1e2
e3e4 e5e6
e11
e10e7 e9
e8
e12
作成されたZDDのノード数に比例する計算時間がかかる
作成されるZDDの幅の上界値は
一般グラフ
Cs+2 - 2Cs+1
Bk + 2Bk-1
n: 頂点数
平面グラフ
k×k グリッドグラフ
フロンティアサイズ s
2 0.48 n log n + O(n)
Bk ~ 2 × 3k Ck ~ 4k / k3/2Ballot 数 Catalan数
アルゴリズムの計算時間
高野圭司, "フロンティア法から生成される ZDD の幅解析,"数理解析研究所講究録, vol. 1849, pp. 77--82, 2013.
K. Sekine, H. Imai, and S. Tani, "Computing the Tutte polynomial of a graph of moderate size," In Proc. of the 6th International Symposium on Algorithms and Computation (ISAAC), pp. 224--233, 1995.
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
11
1
n
n0
n1
n から までの経路の本数= n0 から までの経路の本数
+ n1 から までの経路の本数
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
根
11
1
n
n0
n1
n から までの経路の本数= n0 から までの経路の本数
+ n1 から までの経路の本数
1
ノードから1-終端までの経路の数
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
根
11
1
n
n0
n1
n から までの経路の本数= n0 から までの経路の本数
+ n1 から までの経路の本数
1
ノードから1-終端までの経路の数
下から上に向かって計算する(動的計画法)
2
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
根
11
1
n
n0
n1
n から までの経路の本数= n0 から までの経路の本数
+ n1 から までの経路の本数
1
ノードから1-終端までの経路の数
下から上に向かって計算する(動的計画法)
2
3
要素の数え上げ
• ZDD が構築できれば、対応する集合族内の要素(=集合)の個数が計算できる
• ZDD の根から1-終端までの経路の本数が要素の個数
0 1
10
e1
e2
e3e4
e5
e3
根
11
1
n
n0
n1
n から までの経路の本数= n0 から までの経路の本数
+ n1 から までの経路の本数
1
ノードから1-終端までの経路の数
下から上に向かって計算する(動的計画法)
2
3
5
1
6
根の が要素の個数になる6
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
5 1
6確率56
16
確率
6つの集合から1つをランダムに選択
数え上げ時に計算した、各ノードから1-終端までの経路の個数を用いる
根ノードからスタート以下の確率で方向を選択して移動
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
3 2
5確率35
25
確率
以下の確率で方向を選択して移動
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
1 2
3確率13
23
確率
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
6つの集合から1つをランダムに選択
一様ランダムサンプリング
• 要素を一様ランダムサンプリングする
0 1
10
e1
e2
e3e4
e5
e3
{
}
e2 e4e2e5e4e3
,
, e3
,e5
e5 e5e5,
{ } { }
{ } { } { }
e1{ }e3
根
12
3
5
1
6
e5{ }1-終端まで到達すると根から1-終端までの経路が得られ、対応する集合が1つ得られる
6つの集合から1つをランダムに選択
実験結果
The On-Line Encyclopedia of Integer Sequence (OEIS) : 数列大辞典
http://oeis.org/A007764
n × n グリッドグラフ頂点の数 (n + 1) × (n + 1) の対角のパスの数の数え上げ
実験結果
The On-Line Encyclopedia of Integer Sequence (OEIS) : 数列大辞典
Hiroaki Iwashita, Yoshio Nakazawa, Jun Kawahara, Takeaki Uno, and Shin-ichi Minato,Efficient Computation of the Number of Paths in a Grid Graph with Minimal Perfect Hash Functions (JCDCG2 2013)
8.4 × 10149
n × n グリッドグラフ頂点の数 (n + 1) × (n + 1) の対角のパスの数の数え上げ
実験結果n × n グリッドグラフ頂点の数 (n + 1) × (n + 1) の対角のパスの数の数え上げ
The On-Line Encyclopedia of Integer Sequence (OEIS) : 数列大辞典
Hiroaki Iwashita, Yoshio Nakazawa, Jun Kawahara, Takeaki Uno, and Shin-ichi Minato,Efficient Computation of the Number of Paths in a Grid Graph with Minimal Perfect Hash Functions (JCDCG2 2013)
8.4 × 10149
n time(sec.)
memory (MB)
17 20.9 849
18 67.6 2376
19 212.4 6663
20 652.0 18729
21 3244.3 52791
22 5695.0 149254
23 21313.0 422861n=24,25は特殊な並列化
様々なグラフ構造• パス以外にも様々なグラフ構造に対してZDD 構築可能
• ハミルトンパス• 複数終端対パス• 森、全域木• マッチング• 集合被覆• グラフ分割• etc.
川原 純, 湊 真一,"組合せ問題の解を列挙索引化するZDD構築アルゴリズムの汎用化,"電子情報通信学会コンピュテーション研究会, 信学技報, vol. 112, No. 93, COMP2012-12, pp. 1-7, June 2012.
辺変数型
パス型 森型パス
サイクル
ハミルトンパス
ハミルトンサイクル
オイラー路
複数終端対パス
(ナンバーリンク)
森 全域木
シュタイナー木
カット(セット)
s-tカット
k 終端カット
連結成分
Tutte多項式
Jones多項式(ひもの絡み目)
上記2つ[関根, 今井 1996]
[Yoshinaka et al. 2012]
[Knuth 2008]
信頼性多項式
[Imai et al. 1997]
信頼性多項式
[Hardy et al. 2007]
複数サイクル
頂点変数型
頂点被覆独立集合支配集合
0-1 ナップザック部分和特殊
数分割特殊
頂点彩色
括弧列マトロイドTutte 多項式
[Imai et al. 1996][Saitoh et al. 2009]
動的計画法的な見方も可能
クリーク
フラグ型
辺被覆
完全マッチング
マッチング
集合被覆
集合分割
集合パッキング
上記3つ[今井, 今井 1998]
ハイパーグラフ
一般化
グラフ
根付き森、木
有向パス [Knuth 08]
[Knuth 2008]
有向グラフ
ZDD に関するその他の研究成果
• 最長路問題の求解 [Kawahara et al. 2016]• 頂点故障も考慮した信頼性評価 [園田ら 2016]• 避難計画作成 [Takizawa et al. 2013]• AND/OR 演算に関する計算量の証明[Yoshinaka et al. 2012]
• 簡潔データ構造による ZDD のインデックス作成[Denzumi et al. 2014]
• プリミティブソーティングネットワークの数え上げ [Kawahara et al. 2011]
ZDD に関するその他の研究成果
• グラフ彩色問題 [Morrison et al. 2016]• 多次元ナップサック問題 [安田ら 2016]• 制約を追加したナップザック問題[Nishino et al. 2015]
• Web の影響拡散の厳密計算 [Maehara et al. 2017]
• 自然言語処理における最適化 [西野ら 2015]• 系統樹復元問題に対する列挙アルゴリズム[Kiyomi et al. 2012]
様々な決定グラフ
• BDD (Binary Decision Diagram): 論理関数• ZDD (Zero-suppressed BDD): 集合族• Sequence DD: 文字列集合• πDD (Permutation DD): 置換集合
ZDDのライブラリ• CUDD: 様々な論文で使われている決定グラフライブラリ (「CUDD」で検索)
• Ruby版 VSOP ライブラリ: ERATO湊離散構造処理系プロジェクトで作成したライブラリ
• http://www.nysol.jp/• ZDD処理だけではなく、頻出パターンマイニング
(LCM over ZDD)なども使える{リンゴ, みかん, チョコレート, 牛乳},{リンゴ, バナナ, 牛乳},{きゅうり, バナナ, チョコレート},{リンゴ, トマト, 牛乳},...
頻出のパターンを抽出
グラフ最適化のためのライブラリ
• graphillion• グラフ集合を扱うためのライブラリ• python や C++ で手軽に• パス、全域木、マッチング等、様々な対象を列挙可能
• TdZdd• トップダウンでZDDを構築するための汎用ライブラリ• 細かな挙動設定が可能• graphillion の内部でも使用されている
http://graphillion.org
Takeru Inoue, Hiroaki Iwashita, Jun Kawahara, and Shin-ichi Minato,"Graphillion: software library designed for very large sets of labeled graphs,"International Journal on Software Tools for Technology Transfer, pp. 57-66, Feb. 2016
戸田 貴久, 斎藤 寿樹, 岩下 洋哲, 川原 純, 湊 真一,"ZDDと列挙問題 - 最新の技法とプログラミングツール,"コンピュータソフトウェア, 2017. (to appear)
https://github.com/kunisura/TdZdd
参考文献
ERATO 湊離散構造処理系プロジェクト (著), 湊真一 (編集),"超高速グラフ列挙アルゴリズム-〈フカシギの数え方〉が拓く,組合せ問題への新アプローチ-," 森北出版, 2015/4/8.http://www.amazon.co.jp/dp/4627852614
川原 純, 湊 真一,"組合せ問題の解を列挙索引化するZDD構築アルゴリズムの汎用化,"電子情報通信学会コンピュテーション研究会, 信学技報, vol. 112, No. 93, COMP2012-12, pp. 1-7, June 2012.
Jun Kawahara, Takeru Inoue, Hiroaki Iwashita, Shin-ichi Minato,"Frontier-based Search for Enumerating All Constrained Subgraphs with Compressed Representation," IEICE Trans. Fundamentals (Special Issue on Discrete Mathematics and Its Applications), 2017 (to appear).
論文
書籍