190 likes | 363 Views
ラベル付き区間グラフを列挙する BDD とその応用. ○斎藤 寿樹( ERATO ・ BDD/ZDD 普及協会 ) 湊 真一(北海道大学, ERATO ・ BDD/ZDD 普及協会 会長 兼務). 夏の LA シンポジウム 2010 年 7 月 20 日. 区間グラフ. 区間表現を持つグラフクラス 区間の集合 各区間は頂点と対応 2つの区間に重なりがある ⇔ 対応する頂点間に辺がある. 多くのアルゴリズムが存在. 提案されたアルゴリズムが実装上高速か?. 計算機実験. 偏りのないデータを入力したい. 入力. 出力. 一様ランダムにデータを生成.
E N D
ラベル付き区間グラフを列挙するBDDとその応用ラベル付き区間グラフを列挙するBDDとその応用 ○斎藤 寿樹(ERATO・BDD/ZDD普及協会) 湊 真一(北海道大学,ERATO・BDD/ZDD普及協会 会長 兼務) 夏のLAシンポジウム 2010年7月20日
区間グラフ • 区間表現を持つグラフクラス • 区間の集合 • 各区間は頂点と対応 • 2つの区間に重なりがある ⇔ 対応する頂点間に辺がある 多くのアルゴリズムが存在
提案されたアルゴリズムが実装上高速か? 計算機実験 偏りのないデータを入力したい 入力 出力 一様ランダムにデータを生成 区間グラフ
単純な区間グラフのランダム生成法 • 区間をn個ランダムに生成 • 区間[0, 1]におさまるような,区間をn個ランダムに生成 0 1 区間グラフは一様に出力されていない 密なグラフが生成されやすい 本発表:BDDを使って,連結なラベル付き区間グラフを一様ランダムに生成
BDD (Binary Decision Diagram) x1 • 論理関数をグラフで表現 x2 x2 x3 x3 x3 x3 1 0 1 0 1 0 1 1 x1 x2 BDDを用いると ・列挙 ・数え上げ ・ランダム生成 ・etc. x3 0 1
n頂点のすべての区間グラフを表現するBDD 辺(i, j)を使う 辺(i, j)を使わない • 論理変数ei, jを用意(1≦i<j≦n) • 論理関数 F 区間グラフ 区間グラフではない 1 3 1 3 5 5 2 4 2 4 区間グラフ 区間グラフではない F(1,1,1,0,0,1,0,1,1,1) = 1 F(1,1,0,0,0,1,0,1,1,1) = 0
n頂点のすべての区間グラフを表現するBDD e1,2 0 1 • 論理関数 FのBDD • 例:n=5 e1,3 0 0 1 1 e1,4 ・・・ e4,5 0 1
BDDを用いた区間グラフのランダム生成 • ランダム生成アルゴリズム (Knuth, the art of computer programming, vol. 4.1) • 解の数を数える • BDDをボトムアップに探索 • 変数に{0, 1}を割り当てる • トップダウンに割り当て • “偏った”コインフリップ • 解の数の割合 541 303 238 102 136 136 167 35 67 67 69 67 69 69 98 n頂点の区間グラフをランダム生成できる 0 1
構築したBDDの応用 • n頂点の区間グラフのランダム生成 • 辺の数や次数を制限したものもランダム生成できる ∧ 1 0 0 1 0 1 5頂点のすべての区間グラフを表現するBDD 辺の数が6以下のすべてのグラフを表現するBDD 頂点数が5で,辺の数が6以下のすべての区間グラフを表現するBDD
構築したBDDの応用 • n頂点の区間グラフのランダム生成 • 辺の数や次数を制限したものもランダム生成できる • 区間サンドイッチ問題(NP-完全問題)がBDDサイズの線形時間で解ける
区間グラフのBDDの構築手法 • 区間グラフを列挙 • 効率のよい列挙アルゴリズム [清見, 来嶋, 宇野, 2006] • グラフの数は指数個 時間がかかる! e1,2 e1,3 e1,4 ∨ 1 3 e1,5 5 ・・・ 2 4 出力したグラフ e4,5 0 1 0 1 構築中のBDD
区間グラフのBDDの構築手法 • 区間グラフを列挙 • 効率のよい列挙アルゴリズム [清見, 来嶋, 宇野, 2006] • 論理関数Fを論理式で表現 • 論理変数のみを用いて,区間グラフの認識を行う 簡単にはできない 区間グラフの認識アルゴリズムは複雑 最も単純なアルゴリズム:LexBFSを用いたアルゴリズム (Corneil, et. al., SODA, ’98)
計算機実験 • 区間グラフを列挙して,BDDを構築 • 計算機環境 • CPU • Quad-Core 3.1GHz • Memory • 528GB • プログラミング言語 • C • BDDパッケージ • BemⅡ 約3日強 約2800倍
計算機実験 頂点数 7辺の数m以下(x軸) ・区間グラフの数 ・BDDのサイズ
ノード数:650712 (約12 Mbyte) 計算機実験 BDDサイズの変化 (n=8)
今後の課題 • 区間グラフを表現するBDDについて • 区間グラフを列挙せずに構築可能か? • 区間グラフの認識を論理変数のみで行えるか? • n-1頂点のBDDを使って,n頂点のBDDが作れないか? • 区間を論理変数で表現する? • 非連結な区間グラフのBDD • BDDを構築しないで、区間グラフのランダム生成 • 解の数を数える手法の考案 • ラベルなしグラフのランダム生成 • どのようにBDDの表現するか?
頂点数7 辺の数を制限したときのグラフの数とBDDのサイズ
計算機実験 頂点数7次数を制限 ・グラフの数 ・BDDのサイズ