フロンティア法と動的計画法の 関係について - 北海 …a4 a4 a1...

32
フロンティア法と動的計画法の 関係について 川原 JST ERATOjoint work with 堀山 貴史(埼玉大)

Upload: others

Post on 09-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

フロンティア法と動的計画法の関係について

川原 純 (JST ERATO)

joint work with 堀山 貴史(埼玉大)

Page 2: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

• フロンティア法は動的計画法である

• 動的計画法はフロンティア法であるか?

–ある種の動的計画法はフロンティア法的な見方が可能である

Page 3: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

動機

• 動的計画法の設計

–できる人は多い

• フロンティア法の設計

–難しい。新たに習得する必要あり

• 動的計画法の知識でフロンティア法を設計できるようにならないか?

Page 4: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

フロンティア法

• ZDDを構築するアルゴリズム

• ZDD やフロンティア法、DPの説明は省略

• ただし、今回扱う問題では「フロンティア」は出てこないので、フロンティア法と呼ぶのは疑問

単に、「トップダウンZDD構築法」と呼ぶべきだが、 便宜上、広義のフロンティア法と呼ぶ。

Page 5: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s-t パスの場合

• 全 s-t パスを表すZDDをフロンティア法で構築する

Page 6: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s e1 t

e2

e3

e4

e5

パスは辺の集合で表現できる

s e1 t

e2

e3

e4

e5

s e1 t

e2

e3

e4

e5

s e1 t

e2

e3

e4

e5

s e1 t

e2

e3

e4

e5

{e1, e4} {e2, e5}

{e1, e3 ,e5} {e2, e3 ,e4}

全ての s-t パスを列挙して、

辺集合の集合で表す

{{e1, e4}, {e2, e5}, {e1, e3 ,e5}, {e2, e3 ,e4}} all s-t path =

Page 7: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s-t パスに対するフロンティア法

全 s-t パスを表現する ZDD をトップダウン的に構築

ZDD

Page 8: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s e1

t

s-t パスに対するフロンティア法 [Knuth 08]

1. 辺に順番を付ける (例えば、s から幅優先)

e2

e3

e4

e5

辺 e1, e2,… の順に処理

2. ZDDを構築

e1 e1 = 0

e2 e2 = 0

e4

e2 e2 = 1 e2 = 0 e2 = 1

e1 = 1

e5

各辺変数 ei に対し、 ei = 0 or 1 を決めていく

(もっと良い方法もあり)

e3 e3 e3 e3 0 1

s e1 t

e2

e3

e4

e5

ei = 1 である辺が s-t パスになっているか?

s-t パスになっている 1

Page 9: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s e1

t

e2

e3

e4

e1 e1 = 0

e2 e2 = 0

e2 e2 = 1 e2 = 0 e2 = 1

e1 = 1

e3 e3 e3

1 0 1 0 1 0 1 0

s-t パスに対するフロンティア法 [Knuth 08]

Page 10: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

s e1

t

e2

e3

e4

e1 e1 = 0

e2 e2 = 0

e2 e2 = 1 e2 = 0 e2 = 1

e1 = 1

e3 e3

1 0 1 0

ノードを共有できるときは共有したい

ただし、子DAGを作成せずに、共有可能か判定を行う

s-t パスに対するフロンティア法 [Knuth 08]

e3

1 0 1 0

Page 11: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

… …

s t s t

1

2

3

4

5

6

7

8

9

10

11

12 1

2

3

4

5

6

7

8

9

10

11

12

6 7 8

7 6 1 i

mate[i]

frontier の部分の mate が同じなら共有する

6 7 8

7 6 1

i

mate[i]

… …

s-t パスに対するフロンティア法 [Knuth 08]

処理済み 未処理 処理済み 未処理

Page 12: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

動的計画法

(1) 部分和問題

3 7 8 15 7 6 4 2

この中から和が22になるようにいくつか選ぶことが

可能か?

Page 13: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

動的計画法で解く

• T(i, m): 1~i 番目までで足して m になるような部分集合が存在するなら1, しないなら0

3 1 4 5 和が 9

i m

0 1 2 3 4 5 6 7 8 9

1 0 0 0 0 0 0 0 0 0

1 0 0 1 0 0 0 0 0 0

1 1 0 1 1 0 0 0 0 0

1 1 0 1 1 1 0 1 1 0

1 1 0 1 1 1 1 1 1 1

0

1

2

3

4

Page 14: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

x1 x1 = 0

x2 x2 = 0

x4

x2 x2 = 1 x2 = 0 x2 = 1

x1 = 1

x3 x3 x3 x3 0 1

3 1 4 5

この中から和が 9 になる部分集合を列挙せよ ZDDで表す

部分集合に含める 部分集合に含めない

0

0 3

0 1 3 4

0 4 1 5 3 7 8

0 0 0 1 0 0 0 0 0 0 0 0

9 0 0

Page 15: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

• ZDDを構築することで…

–全集合を圧縮して保持できる

–条件を考慮した要素の検索、絞り込みができる

–要素数を求める、一様ランダムサンプリング

Page 16: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

• DPのテーブルをじっと見ているとZDDが見えてくる

3 1 4 5 和が 9

i m

0 1 2 3 4 5 6 7 8 9

1 0 0 0 0 0 0 0 0 0

1 0 0 1 0 0 0 0 0 0

1 1 0 1 1 0 0 0 0 0

1 1 0 1 1 1 0 1 1 0

1 1 0 1 1 1 1 1 1 1

0

1

2

3

4 0 0 0 0 0 0 0 0 1

Page 17: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

ビットOR

i 番目を含める i 番目を含めない 式の形から ZDD が見える

部分和問題の漸化式

T(i, m) = T(i – 1, m) | T(i – 1, m – wi)

i m

0 1 2 3 4 5 6 7 8 9

1 0 0 0 0 0 0 0 0 0

1 0 0 1 0 0 0 0 0 0

1 1 0 1 1 0 0 0 0 0

1 1 0 1 1 1 0 1 1 0

1 1 0 1 1 1 1 1 1 1

0

1

2

3

4

3 1 4 5 和が 9

1

… …

T(0, 0) = 1, T(0, m) = 0 (m = 1,…)

Page 18: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

T(i, m) = T(i – 1, update1(m)) * ei ∪ T(i – 1, update0(m))

フロンティア法のDP的な見方

s-t パスに対するフロンティア法

i m

m1 m2 m3 …

0

1

2

1

T(i, m) : 辺 e1,…,ei を用いたパスマッチングで、 フロンティア上の mate が m になるものの辺集合族

詳細略

T(0, ms) = { {} }

|E|

… …

… … …

Page 19: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

全ての動的計画法はフロンティア法的な構造をもつ?

(2) 最長昇順列

5 3 8 6 4 7 1 2 9

T(i, m) : a1 a2 … ai の長さ m の昇順列の中で、末尾が最小のもの

i m

0 1 2 3 4 5

ε φ φ φ φ φ 0 1 2 3

4

T(i, m) = T(i – 1, m)

if ai <= Tail(T(i – 1, m))

if ai > Tail(T(i – 1, m))

a1 a2 … an

ε 5 φ φ φ φ ε 3 φ φ φ φ ε 3 38 φ φ φ ε 3 36 φ φ φ

5 6

ε 3 34 φ φ φ ε 3 34 347 φ φ

Concat( T(i – 1, m – 1), ai )

Concat 列連結

Tail 列の最後

Page 20: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

全ての動的計画法はフロンティア法的な構造をもつ?

(2) 最長昇順列

5 3 8 6 4 7 1 2 9

T(i, m) : a1 a2 … ai の長さ m の昇順列の中で、末尾が最小のもの

i m

0 1 2 3 4 5

ε φ φ φ φ φ 0 1 2 3

4

a1 a2 … an

ε 5 φ φ φ φ ε 3 φ φ φ φ ε 3 38 φ φ φ ε 3 36 φ φ φ

5 6

ε 3 34 φ φ φ ε 3 34 347 φ φ

ai を 昇順列に 含めない

含める

T(i, m) = T(i – 1, m)

if ai <= Tail(T(i – 1, m))

if ai > Tail(T(i – 1, m))

Concat( T(i – 1, m – 1), ai )

Concat 列連結

Tail 列の最後

Page 21: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

A1 * A2 * A3 * A4 * A5

* =

積の回数は l × m × n

(A1 * A2) * A3 A1 * (A2 * A3) と では積の回数の合計が異なる

l × m 行列 m × n 行列 l × n 行列

(3) 連鎖行列積

A1 A2 A3 100 × 1 1 × 50 50 × 1

(A1 * A2) * A3

100 × 1 × 50 + 100 × 50 × 1 = 10000

A1 * (A2 * A3) 1 × 50 × 1 + 100 × 1 × 1 = 150

Page 22: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

S(i, j) = min{ S(i, k) + S(k + 1, j) + pi-1 pk pj} k

A1 * A2 * A3 * A4

p0 × p1 p1 × p2 p2 × p3 p3 × p4

S(i, j) : Ai * Ai+1 * … * Aj の積の最小回数

(Ai * Ai+1 * … * Ak) * (Ak+1 * Ak+2 * … * Aj)

pi-1 × pk 行列 pk × pj 行列

Page 23: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

A1 A2 A3 * A4 * *

A1

初期状態

A1

A2

0 1 2 3 4 5 6

A12 A1 A2 A3

A1 A2 A3 A4

A12 A1 A3 A23

要素 掛け算

xi = 0 i 番目が掛け算

xi = 1 i 番目が要素

T(i, m) : i 番目まで進んだとき、 スタックの高さが m であるものの最小値 T(i, m) = min { T(i – 1, m – 1), T(i – 1, m + 1) }

A1 * ((A2 * A3) * A4) を逆ポーランド記法で表す

A12 A1 A3 A23 A4 A4

A1 A2 A34 これは括弧列の集合のZDD表現にもなっている

[Saitoh et al. 09]

Page 24: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

a b a c b d c

a a b d a c d

S[p, q] : u1u2…up と v1v2…vq のLCS の長さ

u1u2 … un

v1v2 … vm

S[p, q] = if up = vq

max {S[p, q – 1], S[p – 1, q] } if up = vq

S[p, q] = max{ S[p – 1, q – 1] + Wpq, S[p, q – 1], S[p – 1, q] }

Wpq = 1

– ∞

if up = vq if up = vq

(4) 最長共通部分列 (LCS)

S[p – 1, q – 1] + 1

Page 25: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

a b a c b d c

a a b d a c d

i

j

i

j

0

1

2

3

4

5

0 1 2 3 4 5

0 0 0 0 0 0

0 1 1 1 1 1

0 1 1 2 2 2

0 1 2 2 2 3

0 1 2 2 2 3

0 1 2 3 3 3

Page 26: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

a b a c b d c

a a b d a c d

i

j

i

j

0

1

2

3

4

5

0 1 2 3 4 5

0 0 0 0 0 0

0 1 1 1 1 1

0 1 1 2 2 2

0 1 2 2 2 3

0 1 2 2 2 3

0 1 2 3 3 3

… …

Page 27: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

S[p, q] = max{ S[p – 1, q – 1] + Wpq, S[p, q – 1], S[p – 1, q] }

i = p + q

m = p

T[i, m] = S[p, q]

とおくと

T[i, m] = max { T[i – 2, m – 1] + Wp,i-p, T[i – 1, m – 1], T[i – 1, m] }

MDD (Multi-valued Decision Diagram)

xk = 1

マッチ 0

i を1増やす

2 j を1増やす

マッチ v u

x1 0

1

2

3 … …

x1

x2

x2 x3

x3

x3

x4

x4 x5

Page 28: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

詳しくは略

xi

T[i, S, j] = min {T[i – 1, S – {k}, k] + dkj} k ∈ S

k1 k2 …

(5) 巡回行商人問題

T[i, S, j] : i 個の都市を巡回済みで、 S は巡回済みの都市の集合、 j は最後に訪れた都市、 このときの距離の最小値

dkj k と j の距離

Page 29: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

強度が同じ卵が m 個ある。

n – 1 階以下の階から 落下させると必ず割れない

n 階以上の階から 落下させると必ず割れる

n は未知であり、推定したい

最悪の場合、何回試行すれば よいか?

(6) 卵の落下問題

Page 30: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

T[p, q] = min { max { T[p, q – h], T[p – 1, h – 1] }} + 1

T[p, q] : 卵の数が p、残り試行の必要がある幅が q のとき、 最悪時に必要な試行の数

h = 1,…,q

= max { T[p, q – h’], T[p – 1, h’ – 1] } + 1

xi

xj

xk

Page 31: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

x5

x4

x3

x2

x1

1

(7) フィボナッチ数列

1 1 2 3 5 8 13 … f[i] = f[i – 1] + f[i – 2]

Page 32: フロンティア法と動的計画法の 関係について - 北海 …A4 A4 A1 これは括弧列の集合のZDD 表現にもなっている A34 [Saitoh et al. 09] a b a c b d

まとめ

• T[i, m] = ( T[i – 1, m’] と T[i – 1, m’’] の式)

• DP をこのように見ることが可能というだけで、役立つかどうかは別問題

• フロンティア法の設計の役に…

の形になっている DP は ZDD で表現可能

なら MDD で表現可能

T[i, m] = ( T[i – 1, m’] と T[i – 1, m’’] と T[i – 1, m’’’] の式)