Transcript ppt
Proper Interval Graphsの
ランダム生成と列挙
○斎藤
山中
清見
上原
寿樹(JAIST)
克久(電気通信大)
礼(JAIST)(祝・結婚)
隆平(JAIST)
問題(1)
連結なProper Interval Graphのランダム生成
入力:自然数 n
出力:n頂点の連結なProper Interval Graph
例 n=5
一様ランダムに生成
同型性を考慮
問題(2)
連結なProper Interval Graphの列挙
入力:自然数 n
出力:n頂点の連結なProper Interval Graphを列挙
例 n=5
漏れなく、重複なく
同型性を考慮
すべて出力
提案アルゴリズム
連結なProper Interval Graphのランダム生成
入力:自然数 n
出力:n頂点の連結なProper Interval Graph
一様ガンダムに生成(同型性を考慮)
数え上げを利用
O(n+m)時間
連結なProper Interval Graphの列挙
入力:自然数 n
出力:n頂点の連結なProper Interval Graphを列挙
漏れなく、重複なく(同型性を考慮)
逆探索法を利用
1つあたりO(1)時間
提案アルゴリズム
連結なProper Interval Graphのランダム生成
入力:自然数 n
出力:n頂点の連結なProper Interval Graph
一様ランダムに生成(同型性を考慮)
数え上げを利用
O(n+m)時間
連結なProper Interval Graphの列挙
入力:自然数 n
出力:n頂点の連結なProper Interval Graphを列挙
漏れなく、重複なく(同型性を考慮)
逆探索法を利用
1つあたりO(1)時間
Interval Graphs
Interval表現を持つグラフクラス
Proper Interval Graphs
Unit Interval表現を持つグラフクラス
すべてのIntervalの長さが同じ
カッコ列を用いた表現
Unit Interval表現のカッコ列表現
Unit Interval表現をカッコ列で表現
Interval表現の各端点を左からスイープ
左端点 → “(”
右端点 → “)”
左端点が現れる順番に
右端点も現れる
((( ))( ()) )
Unit Interval表現
カッコ列表現
カッコ列表現
n頂点のProper Interval Graphのカッコ列表現の特徴
カッコの数:2n
“(”の数:n個
“)”の数:n個
non-negative
左からスイープしたとき、どの地点を見ても、左カッコの数は右カッコ
の数よりも多いか等しい
( ( ( ) ) ( ( ) ) )
+1 +1 +1 -1 -1 +1 +1 -1 -1 -1
01 2 3 21 2 3 210
0
カッコ列表現
n頂点のProper Interval Graphのカッコ列表現の特徴
カッコの数:2n
“(”の数:n個
“)”の数:n個
non-negative
左からスイープしたとき、どの地点を見ても、左カッコの数は右カッコ
の数よりも多いか等しい
( ( ) ) ) (
0
?
Interval表現が書けない
カッコ列表現
n頂点のProper Interval Graphのカッコ列表現の特徴
カッコの数:2n
“(”の数:n個
“)”の数:n個
non-negative
左からスイープしたとき、どの地点を見ても、左カッコの数は右カッコ
の数よりも多いか等しい
( ( ) ) ( )
0
Unit Interval表現
グラフ表現
カッコ列表現
連結なProper Interval Graphのカッコ列表現
左カッコと右カッコの数が等しいのは2箇所
左端と右端のみ
両端を除いたカッコ列がnon-negative
(( ( ( ) ) ) ( ( ) ) ))
0
0
カッコ列表現
Lemma 1. (X. Dell, P. Hell, J. Huang, 1996)
連結なProper Interval Graphは1つ、または2つ
のカッコ列表現を持つ
このグラフは2つのカッコ列表現しかもたない
(()(()()))
異なるカッコ列
Proper Interval Graph
Unit Interval表現
カッコ列表現
カッコ列表現
Lemma 1. (X. Dell, P. Hell, J. Huang, 1996)
連結なProper Interval Graphは1つ、または2つ
のカッコ列表現を持つ
このグラフは1つのカッコ列表現しかもたない
(()(())())
Proper Interval Graph
Unit Interval表現
カッコ列表現
reversible
ランダム生成アルゴリズム
カッコ列をランダムに生成
Proper Interval Graphの数え上げを利用
一様ランダムにカッコ列を生成することができる
( ( ( ( ) ) ( ) ( ) ) )
C(n' )
0
0
1 2n'
n'1 n'
reversibleなカッコ列に
対応するグラフの出現
確率が低い
Sn: reversibleでないカッコ列の数
せ い き
か く り つ
せ い
き
か
生起確率の正規化
non-negativeなカッコ列
Rn: reversibleなカッコ列の数
Sn Rn C(n)
n
Rn
n / 2
reversibleでないカッコ列
…
(()(()()))
((()())())
… … … … …
S Rn
確率: n
Sn 2Rn
…
Case 1
reversibleなカッコ列
(()(())())
Case 2
Rn
確率:
Sn 2Rn
(()(())())
一様にグラフを出力
カタラン数の一般化
ランダム生成
i 2n i
C(n, i)
2n i n
Case 1(一様ランダムなカッコ列)
左から順にカッコを一つずつ生成
確率に応じて, “(” と “)” のどちらかを選択
( ( ( ) )( ( ) () ) )
p = C(2n’ - k, hl)
q = C(2n’ - k, hr)
k:生成したカッコの数
h:高さ
“(” :
p
pq
“)” :
q
pq
構築時間
•カッコ列:O(n)
•グラフ:O(n+m)
i 2n i
C(n, i)
2n i n
ランダム生成
Case 2( reversibleなカッコ列)
1.
2.
真ん中の高さを決める
左から順にカッコを一つずつ生成
確率に応じて, “(” と “)” のどちらかを選択
) (( ) ) ) )
p = C(n’ - k, hl)
q = C(n’ - k, hr)
k:生成したカッコの数
h:高さ
h 1 n 1
n 1 (n h) / 2
“(” :
p
pq
“)” :
q
pq
構築時間
•カッコ列:O(n)
•グラフ:O(n+m)
まとめ・今後の課題
n頂点のProper Interval Graphのランダム
生成と列挙
ランダム生成:O(n+m)時間
列挙:1つあたりO(1)時間
高々n頂点に拡張できる
Interval Graphのランダム生成と列挙