πddの構築 -  · rot-πddは動的計画法に基づいて効率的に構築可能...

25
動的計画法による トポロジカルソートの数え上げと πDD の構築 北海道大学 情報科学研究科 アルゴリズム研究室 修士2年 井上 祐馬 1

Upload: others

Post on 11-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

動的計画法によるトポロジカルソートの数え上げと!

πDDの構築

北海道大学 情報科学研究科!アルゴリズム研究室 修士2年!

井上 祐馬

!1

概要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

トポロジカルソート

!4ERATO合宿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

!9ERATO合宿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

決定グラフの構築

!13ERATO合宿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

まとめ動的計画法に基づくトポロジカルソートの数え上げから、新たなπDDとその構築法を提案した

トポロジカルソートに限らず、動的計画法を用いて解ける他の問題に対しても効果的であると考えられる

豊富な演算の実装がDD構築の価値を高める

絶対・相対位置指定など(できそう)

既存πDDにおいて強力だった直積演算(難しそう)

!25ERATO合宿2013Topological Sort and πDD Construction