グラフ探索 分割統治法と ダイナミックプログラミ … › japanese ›...

45
グラフ探索 分割統治法と ダイナミックプログラミング アルゴリズム論 6回目 平成24112日(金)

Upload: others

Post on 30-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

グラフ探索

分割統治法と

ダイナミックプログラミング

アルゴリズム論 6回目

平成24年11月2日(金)

Page 2: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

グラフの諸概念 • グラフとは(有限個の)点=頂点と(有限個の)線=辺,エッジを結んだもの

• 頂点(vertex),辺(edge)

• 隣接(adjacent):1本のエッジの両端にある頂点は隣接している

• 近傍(neighbors):隣接している頂点集合

• 路(path):ある頂点から他の頂点に至る一連のエッジ

• 単純路(simple path):同じ節点を2回以上使わない路

• サイクル(cycle):最初と最後が同じ節点である単純路.

• ツリー(tree):サイクルのないグラフ.

• 連結グラフ:拡張点から他の全ての頂点へのパスが必ず1つ以上あるグラフ←→不連結グラフ

• 有向グラフ:エッジに方向性あがる←→無向グラフ

• 重み付きグラフ:エッジに重きがある場合

• ネットワーク:重み付き有向グラフ

Page 3: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

オイラーの一筆書き定理

ロシアのケーニヒスベルグという町を流れるプレーゲル川には、中央に島があって、その島と川の両岸との間には7つの橋がかかっていたという。

昔から、その町に住む人々が議論していた問題は、「7つの橋すべてを、1つの橋を複数回渡ることなくすべて渡り終えるような橋の渡り方を見つけられるのか?」 であった。

Page 4: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ケーニヒスベルグの橋

陸地を頂点,橋をエッジとすればどのようなグラフ表現になるか?

Page 5: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ケーニヒスベルグの橋のグラフ表現 (世界最初のグラフ応用例?)

• グラフの全ての辺をちょうど1回ずつ通って、開始点に戻るような道を オイラー閉路という. オイラー閉路が存在すれば、そのグラフを一筆書きすることができる.

• Gがオイラー閉路を持つ ⇔ Gの全ての頂点に対して、繋がっている辺の 数は偶数本である

Page 6: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ケーニヒスベルグの橋のグラフ表現 (世界最初のグラフ応用例?)

Page 7: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

別の橋のグラフ表現

Page 8: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

別の橋のグラフ表現

Page 9: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

グラフの適用事例

• 具象事物とそれらの接続関係を抽象的に表現したものとしてグラフを利用する

• 物理的なつながり

町と道,都市と空路,Web,...

• ビジネスプロセス,作業工程計画,...

Page 10: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

グラフの表現

• グラフ→隣接行列で表現

A

B

C

D

A B C D

A

B

C

D

1 1 1 0

1 1 1 1

1 1 1 1

0 1 1 1

Page 11: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

節点の分類と隣接節点の取り扱い

• 既に訪問した節点集合:T

• Tの隣接節点集合:F

• それ以外の節点集合:U

Fの選択方法によりグラフ探索が変わる

(1)深さ優先探索(DFS, Depth First Search)

(2)幅優先探索(BFS, Breadth First Search)

Page 12: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

深さ優先探索,縦型探索 DFS

• 節点を辿れる限り深く探索し続ける

①出発点の隣接節点集合をリストFに記録する

②リストFの第一要素の節点aを選びaを訪れる

③aとaの隣接節点集合を置換する

(二重登録があればリストの後ろを削除する)

④Fの要素が空になるまで②と③を繰り返す

Page 13: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

DFSの実行例

1

3

2

4

5

6

7

8

9

10

11

15

14

13

12

1

2

3

4

5

6

7

8

9

10

隣接節点集合F

Page 14: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

DFSの実行例

1

3

2

4

5

6

7

8

9

10

11

15

14

13

12

1 2 5 3

2 4 5 3

4 7 8 5 3

隣接節点集合F 訪問先

Page 15: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

幅優先探索,横型探索 BFS

• 隣接節点を順次訪問し,横方向に節点を辿る

①出発点の隣接節点集合をリストFに記録する

②リストFの第一要素の節点aを選びaを訪れる

③リストFよりaを削除し,aの隣接節点集合をリストFの最後に追加する

(二重登録があればリストの後ろを削除する)

④Fの要素が空になるまで②と③を繰り返す

Page 16: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

BFSの実行例

1

3

2

4

5

6

7

8

9

10

11

15

14

13

12

1

2

3

4

5

6

7

8

9

10

隣接節点集合F

Page 17: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

BFSの実行例

1

3

2

4

5

6

7

8

9

10

11

15

14

13

12

1 2 5 3

2 5 3 4

5 3 4 8 9 6

3

隣接節点集合F

Page 18: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

Divide&Conquer(分割統治法)

• 全体を部分に分割し,各部分を解き,その結果を統合して解を得る方法

• 全体の問題構造と部分の問題構造が同型であり,再帰的(recursive)という.

• 再帰法:処理手順を自分自身を使って定義する方法.

Page 19: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

階乗関数 f(n)=n! の再帰的定義

f(3) 3 f(2)

2 f(1)

1 f(0)

f(0)=1

n=0 -> f(n)=1

n not =0 -> f(n)=n x f(n-1)

Page 20: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

最大値を再帰的に求める

アルゴリズム?

(通常はコストが大きいので使わない)

データ集合をS,データ数をn

n=1 → それが最大値

n=2 → 2数を比較して大きいほうが最大値

n>2 → Sを二分して(S1,S2),S1とS2の最大値を求める

Page 21: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

再帰的図形:コッホ曲線

1.線分を3等分する

2.真中の部分を正三角形を埋め込んだ形に曲げる

3.できた4辺について,1と2の同じ操作を適用する

上記操作を繰り返し適用した結果得られる曲線

→コッホ曲線と呼ぶ

→n回操作後の長さは?

→n回操作後の面積は?

→どの部分を拡大しても同じ図形が現れる再帰的な図形

→自己相似性を持つ図形

→フラクタル

シルピンスキーのギャスケット?

Page 22: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

DP vs Divide&Conquer ダイナミックプログラミング vs 分割統治法

• 問題を(適切かどうかは不明であるが)単純な小問題に分ける

• 小問題解決結果を積み上げて最終結果を得る

• ボトムアップ解決法

• 問題(全体)を適切な小問題(小さな部分)に分ける

• 小問題解決結果を統合して全体の解を得る

• トップダウン解決法

Page 23: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ダイナミックプログラミング(DP)

• 多段階決定理論

• ある段階の決定はその直前の段階の結果の影響のみを受ける(マルコフ性)

• よって,その他の結果を考慮しないですむので効率のよいアルゴリズムとなる

Page 24: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

3つのDP問題

•ナップザック問題

•最短経路選択問題

•数値的解法

Page 25: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ナップザック問題

品物 0 1 2 3 4

大きさ 2 3 5 7 9

価値 2 4 7 11 14

限られた大きさの袋(ナップザック)に

最大価値となる品物を詰め込み方を求める問題

Eg ナップザックの大きさ=10の場合は?

品物0を5個選択するとその価値は→

品物0,1,2を選択するとその価値は→ 腕づくの方法→25組合せを調べればよい

Page 26: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

ナップザック問題とDP

1番目の小問題

• 単純な小問題への分割は? 品物数を限定すればよい

ナップザックの大きさを16にして以下考える.

①品物0(大きさ2)だけで詰め込む →この場合の最大価値は?

ナップザックの大きさ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

価値の合計 0 0 2 2

最後に入れた品物 -1 -1 0 0

Page 27: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

2番目の小問題

①品物0だけを使ったナップザック小問題の解

を使って②品物0と1を使ったナップザック小問題を解くことを考える

①の表で品物1を詰めることができるケースを調べ,「品物0だけの価値」と「品物0+1の価値」を比較して最大価値を更新していく

Page 28: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

大きさ5のナップザックに

品物1(大きさ3)を入れるかどうか?

品物0(大きさ2,価値2) だけのケース

品物0(大きさ2,価値2)と

品物1(大きさ3,価値4)のケース

品物0,価値=2

品物0,価値=2

すきま

大きさ5

全体価値=4

品物0,価値=2

品物1,価値=4

全体価値=6

X

5

4

0

5

6

1

6

6

0

6

8

1

Page 29: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

大きさ6のナップザックに

品物1(大きさ3)を入れるかどうか?

品物0(2)

品物0(2)

品物0(2)

品物0(2)

品物1(4)

品物1(4)

品物1(4)

すきま

全体価値=6 全体価値=6 全体価値=8

X X

Page 30: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

②品物0と1を使用したナップザック小問題を解け

ナップザックの大きさ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

価値の合計 0 0 2 4 4 6 8

最後に入れた品物 -1 -1 0 1 0 1 1

ナップザックの大きさ3の場合は更新されるが

大きさ4の場合は更新されない

Page 31: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

3~5番目の小問題

③品物0と1と2を使用したナップザック小問題

④品物0と1と2と3を使用したナップザック小問題

⑤品物0と1と2と3と4を使用したナップザック小問題

Page 32: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

aからbへの最短経路は?

a

b

段階 1 2 3 4

レベル1

レベル2

レベル3

問1 腕ずくの方法で調べると(総ルート数は)?

10段階10レベルの場合は?

100段階100レベルの場合は?

Page 33: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

移動コスト

1

2

3

2

1

Page 34: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第1段階に行くコスト

a 3

2

1

1段階

Page 35: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第2段階レベル1に行くコスト

3

2

1

a

段階 レベル1 1 2

1

2

3

移動コスト

前段階のコスト

1+3=4, 3+1=4, 2+2=4 -> 4

Page 36: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第2段階レベル2に行くコスト

3

2

1

段階

レベル2

1 2

1

2

3

前段階のコスト 移動コスト

4

1+2=3, 3+3=6, 2+1=3 -> 3

Page 37: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

1

段階 1 2

1 2

3 2

3 3

4

第2段階レベル3に行くコスト

1+1=2, 3+2=5,2+3=5 -> 2

Page 38: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第2段階終了時

1

段階 1

2

2

2

3 3

4

a

Page 39: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第3段階終了時

1

段階 1

2

2

2

3 3

4

a ?

?

?

3

2

1

3 4

Page 40: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

第4段階終了時

1

段階 1

2

2

2

3 3

4

a 3

5

4

?

?

?

Page 41: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

最適ルート

1

段階 1

2

2

2

3 3

4

a 3

5

4

6

5

4

b 5

3

2

1

Page 42: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

動的計画法と環境問題

• 3期で化学物質を10トン生産

• でも副産物として有害物が作られる

• 有害物は気候(期)によって変動

• 第1期目:化学物質をx生産すると有害物は2x2

• 第2期目:化学物質をx生産すると有害物はx2

• 第3期目:化学物質をx生産すると有害物は3x2

有害物総量を最小にするには化学物質をどのように生産すればいいか?

Page 43: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

DPによる数値的解放

• 1,2,3期の化学物質生産量をx1,x2,x3

x1+x2+x3=10

F(x1,x2,x3)=2X1 2+X22+3X32 を最小

Page 44: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

start

2

1

3

4

5

7

6

8

9

10

有害物

1期 2x1 2

200

162

128

98

72

50

32

18

8

2

0

0

2

1

3

4

5

7

6

8

9

10

有害物

2期 x2 2

0

1期までの

化学物質

生産量

2期までの

化学物質

生産量

67

54

43

33

24

17

11

6

3

1

0

10

有害物

3期 3x3 2

3期までの

化学物質

生産量

5,0->50+0=50

4,1->32+1=33

3,2->18+4=22

2,3->8+9=17

1,4->2+16=18

0,5->0+25=25

67

57

55

60

72

92

119

153

195

244

300

化学 有害

1期目 3 18

2期目 5 25

3期目 2 12

計 10 55

Page 45: グラフ探索 分割統治法と ダイナミックプログラミ … › japanese › 2012-A論...2012/11/02  · (2)幅優先探索(BFS, Breadth First Search) 深さ優先探索,縦型探索

拘束条件をもつ関数の極値

• 大学入試問題: 1辺がx軸に平行な長方形で,方程式 で表される図形(楕円)に内接するもの全体の中で,最大の面積をもつ長方形の面積を求めよ.

• 関数 f (x, y, z)の極値 →x, y, zで偏微分して連立方程式を解く

• 拘束条件g下での関数 f (x, y, z)の極値 →ラグランジェの未定乗数法 →~f = f – λg の極値を求める (拘束条件を含めた式を作って, 変数束縛を解く)

116

22

yx