• 検索結果がありません。

講義「アルゴリズムとデータ構造」

N/A
N/A
Protected

Academic year: 2021

シェア "講義「アルゴリズムとデータ構造」"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

講義「アルゴリズムとデータ構造」

第14回 グラフとネットワークのアルゴリズム(3)

大学院情報科学研究科 情報理工学専攻 情報知識ネットワーク研究室

喜田拓也

2019/5/21 講義資料

(2)

今日の内容

最小全域木を求めるクラスカルのアルゴリズム

(おさらい)

最小全域木を求めるプリムのアルゴリズム プリムのアルゴリズムの考え方

時間計算量が O 𝑚𝑚 log 𝑛𝑛 であることの証明 最短路問題について

最短路と最短路木

ダイクストラのアルゴリズム

ダイクストラ・アルゴリズムの直観的理解

(3)

ネットワーク 𝐺𝐺 の最小全域木 (おさらい)

定義:

グラフ 𝐺𝐺𝐺 はネットワーク(重み付きグラフ) 𝐺𝐺 = (𝑉𝑉, 𝐸𝐸) の 最小全域木(最小スパニング木)である

𝐺𝐺𝐺 は 𝐺𝐺 の全域木で含まれる辺の重みの総和が最小のもの ⇕

𝐺𝐺 の最小スパニング木

3 4

2 5 1

2 7

ネットワーク 𝐺𝐺

4 2 1

2

応用例として,通信網の設計,ガス・水道の配管設計などがある

3

(4)

[考え方] 解 𝑇𝑇 を空集合から始めて,重みが小さい辺から選択し,

現在の解 𝑇𝑇 に加えていく.ただし,選択することにより閉路ができる 場合は選択しない.

クラスカルのアルゴリズム (おさらい)

クラスカルのアルゴリズムの解 𝑇𝑇 がもつ性質

• 𝑇𝑇 は閉路を含まない

• 𝑇𝑇 は,森になっている(必ずしも連結しているとは限らない)

※ グラフ 𝐺𝐺 が森 ⇔ 𝐺𝐺 は閉路のないグラフ

3 4

2 5 1

2 7

3 4

2 5 1

2 7

3 4

2 5 1

2 7

3 4

2 5 1

2 7

3 4

2 5 1

2 7 閉路ができる!

(5)

最小全域木を求めるプリムのアルゴリズム

5

[考え方] 解候補 𝑉𝑉 𝑇𝑇 , 𝑇𝑇 をある頂点 𝑣𝑣 0 のみからなる木( 𝑣𝑣 0 からな る部分グラフに対する最小全域木)から始めて,最小全域木

𝑉𝑉 𝑇𝑇 , 𝑇𝑇 の範囲を徐々に広げていく.

3 4

2 5 1

2 7

3 4

2 5 1

2 7

3 4

2 5 1

2 7

3 4

2 5 1

2 7

最小全域木が求まっている範囲 𝑉𝑉

𝑇𝑇

, 𝑇𝑇 拡張候補辺(赤い辺)

𝑉𝑉

𝑇𝑇

に属する頂点との間に辺がある

𝑉𝑉 − 𝑉𝑉

𝑇𝑇

に属する頂点(青い頂点)

拡張候補辺を選んだとき 𝑉𝑉

𝑇𝑇

に追加される

3 4

2 5 1

2 7

𝑣𝑣

拡張候補辺のうち,重みが最小のものを選択 その先の頂点を加えたら,拡張候補辺を更新

𝑣𝑣

𝑣𝑣

𝑣𝑣

(6)

プリムのアルゴリズム (疑似コード)

Procedure MST-Prim( 𝐺𝐺 = (𝑉𝑉, 𝐸𝐸) : グラフ , 𝑤𝑤 : 重み , 𝑠𝑠 : 起点 ) 1: 𝑣𝑣 ← 𝑠𝑠 ; 𝑇𝑇 ← ∅ ; 𝑉𝑉 𝑇𝑇 ← {𝑠𝑠} ; 𝑑𝑑 𝑠𝑠 ← 0 ;

2: for all 𝑣𝑣 ∈ 𝑉𝑉 - 𝑉𝑉 𝑇𝑇 do 𝑑𝑑 𝑣𝑣 = ∞ ; 3: while ( 𝑉𝑉 𝑇𝑇 ≠ 𝑉𝑉 ) do

4: for each ( 頂点 𝑣𝑣 と隣接する頂点 𝑣𝑣 ∈ 𝑉𝑉 − 𝑉𝑉 𝑇𝑇 ) do 5: if ( 𝑤𝑤 𝑣𝑣 , 𝑣𝑣 < 𝑑𝑑 𝑣𝑣 ) then

6: 𝑑𝑑(𝑣𝑣) ← 𝑤𝑤(𝑣𝑣 , 𝑣𝑣) , 𝑒𝑒(𝑣𝑣) ← 𝑣𝑣 , 𝑣𝑣 ;

7: end if

8: end for

9: 𝑣𝑣 ← arg min 𝑣𝑣∈𝑉𝑉−𝑉𝑉

𝑇𝑇

𝑑𝑑 𝑣𝑣 ;

10: 𝑉𝑉 𝑇𝑇 ← 𝑉𝑉 𝑇𝑇 ∪ 𝑣𝑣 , 𝑇𝑇 ← 𝑇𝑇 ∪ 𝑒𝑒 𝑣𝑣 ; 11: end while

12: 最小全域木 𝑇𝑇 を出力する ;

𝑒𝑒(𝑣𝑣) は 𝑣𝑣 を端点と

する拡張候補辺

𝑑𝑑 (𝑣𝑣) は 𝑣𝑣 を端点と

する拡張候補辺

の重み

(7)

プリムのアルゴリズムの動作例

7

3

2 2 2 3

1 4 1

4 3 1 1 2 3 3

0 𝑣𝑣

3 2

∞ ∞

∞ ∞

0

𝑣𝑣 2

2

2

1

∞ ∞ ∞

0

𝑣𝑣 2

2

2

1

3 4

∞ ∞

2 𝑣𝑣 0

2

2 1

3 4

4 ∞

2 𝑣𝑣 0 2

2 1

1 4

3 ∞

𝑣𝑣 0 2

2

2 1

1 4

1 ∞

2 𝑣𝑣

0 2 2

2 1

1 4

1 ∞

2

𝑣𝑣 0 2

2

2

1

1 1

1 3 2

𝑣𝑣 0 2

2

2

1

1 1

1 3 2

𝑣𝑣 0 2

2

2

1

1 1

1 3 2

𝑣𝑣

:追加された頂点 赤字:更新された値

:拡張候補辺

:解候補

𝑠𝑠

(8)

(証明) 1 行目は定数時間で, 2 行目は明らかに O(𝑛𝑛) 時間かかる.

3 行目の while のチェックは 𝑉𝑉 と 𝑉𝑉 𝑇𝑇 のサイズ比較で行えるため,毎 回の実行は定数時間である.

4 行目の for each のループは新たな 𝑣𝑣 毎に実行される. 𝑣𝑣 は結局 はすべての 𝑣𝑣 ∈ 𝑉𝑉 が一度ずつなるので, for each ループの中身は while ループ全体で 2𝑚𝑚 回実行される. for each ループの中身は数 値比較と代入だけなので毎回の実行は定数時間であり,グラフが 隣接リストで与えられている場合,全体で O(𝑚𝑚) 時間で実行できる.

9 行目の arg min の実行は,単純に行うと 𝑘𝑘 回目のループのとき O 𝑛𝑛 − 𝑘𝑘 時間がかかる.しかし,ヒープを使えば 1 回あたり O(log 𝑛𝑛) 時間でできる. 10 行目は明らかに定数時間でできるので,以上から,

while ループ全体では O(𝑚𝑚 + 𝑛𝑛 log 𝑛𝑛) 時間かかることになる.

グラフの連結性より 𝑚𝑚 ≥ 𝑛𝑛 − 1 なので,よって全体を O 𝑚𝑚 log 𝑛𝑛 時間で抑えることができる. 【証明終わり】

最悪時間計算量が O(𝑚𝑚 log 𝑛𝑛) の証明

(9)

札幌から新千歳空港への最安乗り換え?

札幌 新札幌 北広島 恵庭 千歳 南千歳 新千歳 空港

9

※ JR 北海道のウェブサイト, 2019 年 5 月 21 日調べ 快速エアポート(自由席)利用の場合

260 260 260 220 170 310

450 450 360 260 350

640 640 450 400

840 640 590

840 880

1070

(10)

最短路とは

定義:

無向ネットワーク 𝐺𝐺 = (𝑉𝑉, 𝐸𝐸) において,頂点 𝑢𝑢 ∈ 𝑉𝑉 から頂点 𝑣𝑣 ∈ 𝑉𝑉 への最短路( shortest path )とは, 𝑢𝑢 から 𝑣𝑣 への路( path )のうち,

辺の重みの総和が最小のものである.

※ 負の重みを許すか否かで問題の難しさが変わる

本講義では,重みはすべて非負の値をとると仮定する 3

2 2 2 3

1 4 1

4

3 1

1 2 3

𝑢𝑢 3

𝑣𝑣

𝑢𝑢 から 𝑣𝑣 への最短路

(11)

最短路木とは

11

定義:

辺の重みが非負である連結な無向ネットワーク 𝐺𝐺 = (𝑉𝑉, 𝐸𝐸) に対し,

グラフ 𝐺𝐺′ は頂点 𝑠𝑠 ∈ 𝑉𝑉 からの最短路木( shortest path tree )である 𝐺𝐺′ は 𝑠𝑠 を根とする 𝐺𝐺 の全域木で, 𝑠𝑠 ⇕ から各頂点への路が最短路に なっているもの

3

2 2 2 3

1 4 1

4

3 1

1 2 3

𝑠𝑠 3

𝑠𝑠 を根とする最短路木

(12)

Edsger W. Dijkstra

(1930–2002)

オランダ

1972

年チューリング賞

最短路木を求めるダイクストラ アルゴリズム

12

[考え方] 解候補 𝑉𝑉 𝑇𝑇 , 𝑇𝑇 をある頂点 𝑠𝑠 のみからなる木

( 𝑠𝑠 からなる部分グラフに対する最短路木)から始めて,

最短路木 𝑉𝑉 𝑇𝑇 , 𝑇𝑇 の範囲を徐々に広げていく.

3 4

2 5 1

2 7

3 4

2 5

2 7

𝟏𝟏

3 4

2 5 7 𝟏𝟏

𝟐𝟐 𝑠𝑠 = 𝑣𝑣

𝑣𝑣

𝑣𝑣

3 𝟒𝟒

2 𝟏𝟏 5

𝟐𝟐 7

𝑣𝑣

最短路木が求まっている範囲

拡張候補辺(赤い辺)

𝑉𝑉

𝑇𝑇

に属する頂点との間に辺がある

𝑉𝑉 − 𝑉𝑉

𝑇𝑇

に属する頂点(青い頂点)

拡張候補辺を選んだとき 𝑉𝑉

𝑇𝑇

に追加される

拡張候補辺は, 𝑢𝑢 ∈ 𝑉𝑉 𝑇𝑇 と 𝑣𝑣 ∈ 𝑉𝑉 − 𝑉𝑉 𝑇𝑇 との間の 辺 𝑒𝑒 = (𝑢𝑢, 𝑣𝑣) のうち, 𝑠𝑠 から 𝑢𝑢 への最短路長 𝑑𝑑(𝑢𝑢)

と 𝑤𝑤(𝑒𝑒) の和が最小のもの

3 𝟒𝟒

𝟔𝟔 𝟏𝟏 5

𝟐𝟐 7

𝑣𝑣

(13)

ダイクストラ アルゴリズム (疑似コード)

13

Procedure SPT-Dijkstra( 𝐺𝐺 = (𝑉𝑉, 𝐸𝐸) : グラフ , 𝑤𝑤 : 重み , 𝑠𝑠 : 起点 ) 1: 𝑣𝑣 ← 𝑠𝑠 ; 𝑇𝑇 ← ∅ ; 𝑉𝑉 𝑇𝑇 ← {𝑠𝑠} ; 𝑑𝑑 𝑠𝑠 ← 0 ;

2: for all 𝑣𝑣 ∈ 𝑉𝑉 - 𝑉𝑉 𝑇𝑇 do 𝑑𝑑 𝑣𝑣 = ∞ ; 3: while ( 𝑉𝑉 𝑇𝑇 ≠ 𝑉𝑉 ) do

4: for each ( 頂点 𝑣𝑣 と隣接する頂点 𝑣𝑣 ∈ 𝑉𝑉 − 𝑉𝑉 𝑇𝑇 ) do 5: if ( 𝑤𝑤 𝑣𝑣 , 𝑣𝑣 + 𝑑𝑑 𝑣𝑣 < 𝑑𝑑 𝑣𝑣 ) then

6: 𝑑𝑑 𝑣𝑣 ← 𝑤𝑤 𝑣𝑣 , 𝑣𝑣 + 𝑑𝑑 𝑣𝑣 , 𝑒𝑒(𝑣𝑣) ← 𝑣𝑣 , 𝑣𝑣 ;

7: end if

8: end for

9: 𝑣𝑣 ← arg min 𝑣𝑣∈𝑉𝑉−𝑉𝑉

𝑇𝑇

𝑑𝑑 𝑣𝑣 ;

10: 𝑉𝑉 𝑇𝑇 ← 𝑉𝑉 𝑇𝑇 ∪ 𝑣𝑣 , 𝑇𝑇 ← 𝑇𝑇 ∪ 𝑒𝑒 𝑣𝑣 ; 11: end while

12: 最短路木 𝑇𝑇 を出力する ;

𝑒𝑒(𝑣𝑣 ) は 𝑣𝑣 を端点と する拡張候補辺 𝑑𝑑 (𝑣𝑣) は 𝑣𝑣 を端点と する拡張候補辺 の重み

Prim のアルゴリズムとの 違いは +𝑑𝑑 𝑣𝑣

だけ!

時間計算量は同じ O 𝑚𝑚 log 𝑛𝑛

(14)

ダイクストラ アルゴリズムの動作例

3

2 2 2 3

1 4 1

4 3 1 1 2 3 3

0 𝑣𝑣

3 2

∞ ∞

∞ ∞

0

𝑣𝑣 3

2

4

3

∞ ∞ ∞

0 3 𝑣𝑣 2

4

3

7 ∞

0 3 2

4 3

6 7

7 ∞

∞ 𝑣𝑣

2 𝑣𝑣 0 3

4 3

5 7

7 ∞

𝑣𝑣 0 3

2

4 3

5 7

6 ∞

7 𝑣𝑣

0 3 2

4 3

5 7

6 ∞

7

𝑣𝑣 0 3

2

4

3

5 7

6 10 7

𝑣𝑣 0 3

2

4

3

5 7

6 10 7 𝑠𝑠

𝑣𝑣 2

0 3 2

4

3

5 7

6 10 7

𝑣𝑣

:追加された頂点 赤字:更新された値

:拡張候補辺

:解候補

(15)

ダイクストラ アルゴリズムの直観的理解

15

3

2 2 2 3

1 4 1

4

3 1

1 2 3

𝑠𝑠 3

𝑠𝑠

辺を細かく分けて,すべての辺の重みが等しく( 1 に)なるようにする 起点 𝑠𝑠 から幅優先探索を行い,到達した順に頂点を解に加える

1 2 3 5 6 7

8 9

10

4

探索の深さ

(16)

最短路に関する発展的な話題

辺の重みが非負整数の場合は平均時 O(𝑚𝑚) まで改善で きる(ただし,ランダムアルゴリズムによる)

[U. Meyar, Single-source shortest-paths on arbitrary directed graphs in linear average- case time, in ACM-SIAM Symposium. Discrete Algorithms, 2001, pp. 797-806.]

ベルマン - フォード アルゴリズム( Bellman-Ford algorithm ) は正負の重みを扱えるが,最悪時計算量は O(𝑚𝑚𝑛𝑛)

与えられたグラフについて,すべての 2 頂点間の距離を

求めるワーシャル - フロイド アルゴリズム( Warshall-Floyd

algorithm )の最悪時間計算量は O(𝑛𝑛 3 )

(17)

札幌から新千歳空港への最安乗り換え!

札幌 新札幌 北広島 260 450 恵庭 640 千歳 810 南千歳 840 新千歳 空港 1040

17

※ JR 北海道のウェブサイト, 2019 年 5 月 21 日調べ 快速エアポート(自由席)利用の場合

260 260 260 220 170 310

450 450 360 260 350

640 640 450 400

840 640 590

840 880

1070

参照

関連したドキュメント

They obtained some results on characterization and existence of farthest points in normed linear spaces in terms of bounded linear functionals.. Section 2 gives some

In [4] it was shown that for an undirected graph with n nodes and m (undirected) edges, more than 2m - n chips guarantee that the game is infinite; fewer than m chips guarantee that

2 A Hamiltonian tree of faces in the spherical Cayley map of the Cayley graph of S 4 giving rise to a Hamiltonian cycle, the associated modified hexagon graph Mod H (X) shown in

The previous theorem seems to suggest that the events are postively correlated in dense graphs.... Random Orientation on

In Section 3 the extended Rapcs´ ak system with curvature condition is considered in the n-dimensional generic case, when the eigenvalues of the Jacobi curvature tensor Φ are

Compactly supported vortex pairs interact in a way such that the intensity of the interaction decays with the inverse of the square of the distance between them. Hence, vortex

All three problems (1*, 2*.1 2*.2) are open; there are conjectures which would provide complete answers to these problems and some partial results supporting these conjectures

To solve the linear inhomogeneous problem, many techniques and new ideas to deal with the fractional terms and source term which can’t be treated by using known ideas are required..