Transcript ppt

Bipartite Permutation Graphの
ランダム生成と列挙
○斎藤
大舘
山中
上原
寿樹(JAIST)
陽太(群馬大)
克久(電気通信大)
隆平(JAIST)
背景
計算機実験
偏りがない
一様ランダム
入力
出力
列挙

入力のグラフ


Interval Graph
Permutation Graph
[Saitoh et al. 09]
Proper Interval Graph
Bipartite Permutation Graph

ランダム生成・列挙
提案アルゴリズム

連結なBipartite Permutation Graphのランダム生成


入力:自然数 n
出力:n頂点の連結なBipartite Permutation Graph




一様ランダムに生成(ラベルなし:同型性を考慮)
数え上げを利用
演算回数がO(n)回
連結なBipartite Permutation Graphの列挙


入力:自然数 n
出力:n頂点の連結なBipartite Permutation Graphを列挙



漏れなく、重複なく(ラベルなし:同型性を考慮)
逆探索法を利用
1つあたりO(1)時間
Permutation Graph

ライン表現を持つグラフクラス
1
2
3
4
5
6
1
6
4
3
3
6
4
1 5
ライン表現
2
2
5
Permutation Graph
Bipartite Permutation Graph

Bipartite Graph かつ Permutation Graph
1
2
3
4
5
6
7
8
3
5
6 1 2 8
ライン表現
4
7
6
3
4
2
1
8
7
5
Bipartite Permutation Graph
ランダム生成や列挙を行う
Bipartite Permutation Graph

補題1
連結なBipartite Permutation Graphのライン表現は
Xの頂点に対応する線分(青線):左上から右下へ
Yの頂点に対応する線分(赤線):右上から左下へ
(同じ色の線分は交差しない)
1
4
2
12
03
41 50 60 71 80
13
15
61 01 20 81 40 70
ライン表現
6
3
0
1
8
7
5
(0, 0)
BipartiteDyckパス
Permutation Graph
0と1の文字列を視覚化 ⇒ Dyckパス
0と1の文字列で,ライン表現を表せる
0と1の文字列 ⇒ Dyckパス

ライン表現を左からスイープ

1
1
0
1
0
1
1
0
0
0
ラインを上下交互に見る


1 ⇒ 右に1、上に1
0 ⇒ 右に1、下に1
0
(0, 0)
n頂点のBipartite Permutation Graph

Dyckパスの特徴

最後の座標は(2n, 0)


上でn個, 下でn個
1と0の数が等しい



1 1 0 1 0 1 0
1 1 0 0 0 1 0
上で1は下で0, 上で0は下で1
x軸より上
y座標が0で囲まれた領域が
コンポーネントに対応
0
(0, 0)
(2n, 0)
n頂点の連結なBipartite Permutation Graph

1 1 0 1 0 0 1 0
Dyckパスの特徴

最後の座標は(2n, 0)


上でn個, 下でn個
1と0の数が等しい



1 1 1 0 0 1 0 0
上で1は下で0, 上で0は下で1
x軸より上
(0, 0)と(2n, 0)を除くとy座標は1以上
1
0
n頂点の連結なBipartite Permutation Graph

1 1 0 1 0 0 1 0
Dyckパスの特徴

最後の座標は(2n, 0)


上でn個, 下でn個
1と0の数が等しい



1 1 1 0 0 1 0 0
上で1は下で0, 上で0は下で1
x軸より上
(0, 0)と(2n, 0)を除くとy座標は1以上
1
Dyckパスを一様ランダムに生成すればよい?
ダメな理由


Bipartite Permutation Graphとライン表現は
1対1対応ではない
グラフによって対応するライン表現の数が
異なる
対応するライン表現

補題2

連結なBipartite Permutation Graphはライン表現を高々4つ持つ
左右反転
回転
上下
反転
上下 反転
この4つのライン表現しか持たない
左右反転
対応するライン表現

すべてのBipartite Permutation Graphが4つの
ライン表現を持つわけではない
左右対称
左右反転
上下 反転
上下 2つのライン表現しかもたない
反転
左右対称
対応するライン表現

すべてのBipartite Permutation Graphが4つの
ライン表現を持つわけではない
上下対称なライン表現
回転対称なライン表現
2つのライン表現しかもたない
対応するライン表現

すべてのBipartite Permutation Graphが4つの
ライン表現を持つわけではない
1対1
上下・左右・回転対称なライン表現
Bipartite Permutation Graph
ライン表現を一様ランダムに生成
ライン表現
左右対称 上下左右 回転対称
回転対称
上下対称
ライン表現を一様ランダムに生成すると
ライン表現を4つ持つグラフが生成されやすい!
ライン表現を一様ランダムに生成
ライン表現
左右対称 上下左右 回転対称
回転対称
上下対称
解決するために
ライン表現を複数持つグラフの生成確率を下げる
標準形のみを生成する
うまくいかない!
生起確率の正規化
ライン表現
左右対称 上下左右 回転対称
回転対称
上下対称
左右対称 上下左右
回転対称
上下対称 上下左右
回転対称
回転対称 上下左右
回転対称
ランダム生成アルゴリズム
対応する数が等しい
数を数えればよい
1. これら4つの中からどれかを選択
2. 選択したものをランダムに生成
数え上げ

ライン表現全体

長さ2n-2のDyckパス
長さ2n-2のDyckパスの数=C(n-1)
1  2n 
 
カタラン数: C(n) 
n 1  n 
1
0
数え上げ

回転対称


長さ2n-2のDyckパス
Dyckパスが左右対称
回転対称なライン表現
長さ2n-2で左右対称な   n  1 
 (n  1) / 2 
Dyckパスの数


1
数え上げ
1 1 1 0 0 1 0 0

上下対称


上の文字列と下の文字
列が等しい
長さn-2のDyckパス
1 1 1 0 0 1 0 0
上下対称なライン表現
長さn-2のDyckパスの数=C(n/2-1)
1  2n 
 
カタラン数: C(n) 
n 1  n 
1
上原財団による懸賞問題
数え上げ

回転対称と対応
1 1 1 0 1 0 0 0
左右対称

回転対称と対応

2-Motzkinパスと対応
1 1 0 0 1 1 0 0
左右対称なライン表現
 n 1 

左右対称の数 回転対称の数 
 (n  1) / 2
1 1 1 0 1 1 0 0
1 1 0 0 1 0 0 0
回転対称なライン表現
1
生起確率の正規化
ライン表現
左右対称 上下左右 回転対称
回転対称
上下対称
左右対称 上下左右 上下対称 上下左右 回転対称
回転対称
回転対称
上下左右
回転対称
ランダム生成アルゴリズム
Proper Interval
Graphのランダム
生成を参照
1. これら4つの中からどれかを選択
2. 選択したものをランダムに生成
O(n)回の演算
O(n)領域
Bipartite Permutation Graphの
列挙アルゴリズム(アウトライン)
単純な列挙アルゴリズム
Bipartite Permutation Graphか?
 出力されたグラフか?

1辺を
削除

重複を防ぐため


巨大なメモリが必要
とても遅い
Not Bipartite Permutation
逆探索アルゴリズム
根

1辺を
削除
全域木


親子関係
提案アルゴリズム

ライン表現(標準形)
逆探索アルゴリズム
根

1辺を
削除
全域木


親子関係
提案アルゴリズム
ライン表現(標準形)
 O(1) 時間/グラフ

まとめと今後の課題

連結なn頂点のBipartite Permutation Graph




ランダム生成:O(n+m)時間
列挙:O(1)時間/Graph
Permutation Graphのランダム生成と列挙
Interval Graphのランダム生成と列挙