Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
概要DAGのトポロジカルソートは多くの用途がある
半順序集合のlinear extensionと等価
トポロジカルソートの数え上げは#P-completeだが、動的
計画法(DP)により求めることができる
上記のDPテーブルと対応したDecision Diagramsを設計する
ことで、DPと同程度に高速にDDを構築し、構築後のDD
を用いて更なるクエリに対応できる
!2ERATO合宿2013Topological Sort and πDD Construction
内容
DAGのトポロジカルソート
トポロジカルソートを数え上げるDP
対応する決定グラフの構築法
まとめ
!3ERATO合宿2013Topological Sort and πDD Construction
トポロジカルソートDAG(有向非閉路グラフ)のトポロジカルソートとは、頂点aからbに
辺があるとき、必ずaの方がbより前にあるようにした並べること
DAGを半順序関係とみなすと、対応する全順序を1つ求めることに
相当(posetのlinear extension)
!5
1 6
52 4
3 × 1→6→3→2→4→5 ※2より5の方が後ろに来ている
○ 1→5→6→2→4→3 ※5と6のように、パスが無いもの同士の順序はどちらでもよい
ERATO合宿2013Topological Sort and πDD Construction
トポロジカルソートの数え上げ(DFS)
探索的な方法: 全順列を生成するようにDFS
まだ使っていない頂点集合のみからなる部分グラフにおいて、入次数が0の頂点のみ持ってくる
以降、矛盾が起こることはない
!6
1 6
52 4
3例:ここまで16と選んだ ・35は入次数0なので選べる ・2は5に指されているので選べない
ERATO合宿2013Topological Sort and πDD Construction
トポロジカルソートの数え上げ(DFS)
探索的な方法: 全順列を生成するようにDFS
まだ使っていない頂点集合のみからなる部分グラフにおいて、入次数が0の頂点のみ持ってくる
以降、矛盾が起こることはない
!7
52 4
3例:ここまで16と選んだ ・35は入次数0なので選べる ・2は5に指されているので選べない
ERATO合宿2013Topological Sort and πDD Construction
探索木の様子(DFS)
!8
123456
1 6
52 4
3
23456
2346 2345
346 234 245
1
15 16
152 156 165163
・空間計算量 = 部分集合の数 = O(n!)
234
ERATO合宿2013Topological Sort and πDD Construction
トポロジカルソートの数え上げ(DP)
動的計画法:DFSにおいて、同一視できる状態をまとめる
“まだ使っていない頂点集合”が一致していれば、以降の選択肢は同じ
今までに選んだ順番はどうでもよい
!10
1 6
52 4
3例:ここまで156と選んだ ・まだ使っていない頂点集合は234 ・165と選んでも同じ
ERATO合宿2013Topological Sort and πDD Construction
探索木の様子(DFS)
!11
123456
1 6
52 4
3
23456
2346 2345
346 234 245
1
15 16
152 156 165163
・空間計算量 = 部分集合の数 = O(n!)
234
ERATO合宿2013Topological Sort and πDD Construction
探索木の様子(DP)
!12
123456
1 6
52 4
3
23456
2346 2345
346 234 245
・空間計算量 = 部分集合の数 = O(2n)1
15 16
152156 165
163
ERATO合宿2013Topological Sort and πDD Construction
集合の順列表現k要素からなる集合をn要素からなる順列で表現することを考える
順列の前半n-k個にあれば既に使った、後半k個にあればまだ使っていない頂点集合と考える
!14
1246 3 5 1 2 4 6
126 3 5 4 1 2 6
ERATO合宿2013Topological Sort and πDD Construction
部分集合の順列表現順列の前半n-k個にあれば既に使った、後半k個にあればまだ使っていない頂点集合と考える
“まだ使っていない集合”から”既に使った集合”に移す操作は、右ローテーションに対応
!15
4を使う[3,5]を右ローテーション
1246 3 5 1 2 4 6
126 3 5 4 1 2 6
ERATO合宿2013Topological Sort and πDD Construction
探索木の様子(DFS)
!16
123456
23456
2346 2345
346 234 245234
1 2 3 4 5 6
1 2 3 4 5 6
1 6 2 3 4 51 5 2 3 4 6
1 5 2 3 4 6
1 5 6 2 3 4 1 6 3 2 4 5
1 6 5 2 3 4
[1,1]
[2,5] [2,6]
[3,3][3,6]
[3,6] [3,3]
1
15 16
152 156 165163
ERATO合宿2013Topological Sort and πDD Construction
探索木の様子(DP)
!17
123456
23456
2346 2345
346 234 245
1 2 3 4 5 6
1 2 3 4 5 6
1 6 2 3 4 51 5 2 3 4 6
1 5 2 3 4 61 5 6 2 3 4
1 6 3 2 4 51 6 5 2 3 4
[1,1]
[2,5] [2,6]
[3,3] [3,6] [3,6] [3,3]
1
15 16
152156 165
163
ERATO合宿2013Topological Sort and πDD Construction
二分決定グラフへの変換
!18
1 2 3 4 5 6
1 2 3 4 5 6
1 6 2 3 4 51 5 2 3 4 6
1 5 2 3 4 61 5 6 2 3 4
1 6 3 2 4 51 6 5 2 3 4
[1,1]
[2,5] [2,6]
[3,3] [3,6] [3,6] [3,3]
1,1
2,5
2,6
3,3
3,3
3,63,6
?
?
?
1 2 3 4 5 6
1 2 3 4 5 6
1 6 2 3 4 5
1 5 2 3 4 6
1 6 5 2 3 4
辺を頂点に1 2 3 4 5 6
1 5 2 3 4 6
ERATO合宿2013Topological Sort and πDD Construction
πDD [minato11]
!19
πDD: 順列の集合を表す決定グラフ
節点: 互換 (2要素の交換)
1-終端節点へのパス: 1つの順列
1つの節点にちょうど2つの枝:
1-枝 (始点の節点を使う)
0-枝 (始点の節点を使わない)
τ1,4
1{(2 1 4 3), (4 1 3 2), (4 2 3 1)} ={τ1,2○τ3,4, τ1,2○τ2,4, τ1,4}
τ2,4
τ3,4
τ1,2
0
ERATO合宿2013Topological Sort and πDD Construction
既存πDDとの関係
1-枝を下ったときの意味が変わるだけで、本質は同じ
!20
2,5
1 2 3 4 5 6
2,5
1 2 3 4 5 6
1 5 2 3 4 6 1 5 3 4 2 6
今回の順列決定グラフ:!区間[a,b]を右ローテーション
今までのπDD:!a番目の要素と
b番目の要素を交換
ERATO合宿2013Topological Sort and πDD Construction
既存πDDとの関係
1-枝を下ったときの意味が変わるだけで、本質は同じ
!21
2,5
1 2 3 4 5 6
2,5
1 2 3 4 5 6
1 5 2 3 4 6 1 5 3 4 2 6
今回の順列決定グラフ:!区間[a,b]を右ローテーション
今までのπDD:!a番目の要素と
b番目の要素を交換
Rot-πDDと仮称する
ERATO合宿2013Topological Sort and πDD Construction
動的計画法とフロンティア法
ZDDのトップダウン構築法であるフロンティア法は動的計画法と強い関連が知られている
川原先生の発表
http://www-erato.ist.hokudai.ac.jp/docs/autumn2012/jkawahara.pdf
Rot-πDDはDPに基づいてトップダウンに構築できる
順列問題に対するDPは今回同様に集合を1状態としてまとめるものが多い
ハミルトンパスなど
Rot-πDDのトップダウン構築も同様に親和性が高い
!22ERATO合宿2013Topological Sort and πDD Construction
DD構築のモチベーション
Rot-πDDは動的計画法に基づいて効率的に構築可能
⇔Rot-πDDを構築せずとも、動的計画法により同程度の計算量で解ける
単に「その問題を解く」だけならDDを作る必要はない
“構築した後”に何をさせるかが重要
⇒Rot-πDD上の演算を充実させ、用途を広げる
!23ERATO合宿2013Topological Sort and πDD Construction
演算の構想
aよりbの方が前にある順列だけ取り出す
⇒ 辺追加クエリ
要素vが位置pにある順列だけ取り出す
⇒絶対位置指定クエリ
2つの順列集合の積集合を求める
⇒2つのDAGに共通するトポロジカルソートを求める
!24ERATO合宿2013Topological Sort and πDD Construction