システム最適化特論 担当:平田 健太郎 第7回 (5/25) 1.グラフとネットワークにおける数理 ・ 最短経路問題とダイクストラ法(2) 1 講義日程(予定) 4/13 1.グラフとネットワークにおける数理 ・ 輸送問題とLP 4/20 ・ シンプレックス法(1) 4/27 ・ シンプレックス法(2), 双対問題 5/7 ・ 多項式時間アルゴリズム, 内点法(1) 5/11 ・ 内点法(2) 5/18 ・ 最短経路問題とダイクストラ法(1) 5/25 6/1 6/8 ・ 最短経路問題とダイクストラ法(2) ・ 組合せ最適化(1) ・ 組合せ最適化(2) 2 ダイクストラ法のalgorithm 3 15 4 2 30 50 20 1 3 80 5 10 15 15 4 2 30 50 20 1 80 5 10 3 15 4 15 4 2 30 50 20 1 80 5 10 3 15 5 15 4 2 30 50 20 1 3 80 5 10 15 15 4 2 30 50 20 1 80 5 10 3 15 6 Dijkstra法の計算量 𝑆 の要素を1つずつ増やす: 𝑛 反復高々 n 個の 𝑑 𝑖 を比較 ⇒ 𝑂 𝑛2 オーダー(最高次の次 数のみ係数は無視) 𝑆 から外に出るエッジについて 𝑑 𝑖 の更新 高々𝑚 回の処理 ⇒ 𝑂 𝑚 (ループ内の処理に見えるが) 𝑛 𝑛−1 エッジの本数は最大でも 𝑚 = 2 (𝑛個のノードをすべて相互につなぐとき) 𝑚 < 𝑛2 より, 全体では 𝑂 𝑛2 ノード数: 𝑛, エッジ本数: 𝑚 7 初期化 ノード v を探す (n 個の比較) 𝑂 𝑚 > 𝑂 𝑛 だから 全体では 𝑂 𝑚𝑛 ? 𝑂 𝑛 n 回のループ 𝑑 𝑗 の付け替え 終了判定 𝑂 𝑚 毎回処理するわけではないので, 𝑂 𝑚𝑛 の見積もりは正しくない. 都合何回あるかを考える. 8 4 2 5 1 3 4 2 5 1 3 4 2 ∴ 𝑑 𝑗 の付け替えは各ノードに 入ってくる矢印の数だけ行われる. (行われない場合もある.) 最大でも辺の総数だけ 5 1 3 4 2 5 1 3 9 10 ダイクストラ法のalgorithm (再掲) 11 ダイクストラ法の正しさの証明 性質(事実)1 アルゴリズムの実行途中で 𝑑 𝑖 には常に「s から 𝑆 に含まれる節点の みを経由して 𝑖 に至る最短路の長さ」が格納されている. 性質(事実)2 アルゴリズムの実行途中で 𝑖 ∈ 𝑆 ならば, 𝑑 𝑖 には常に「s から 𝑖 に至 る最短路の長さ」が格納されている. これらが常に成り立つことを帰納法により示す. ∗ 「実行途中」は各反復終了時を指す. 12 初期状態 第1反復後 15 4 2 30 50 20 1 80 5 10 3 15 𝑑 𝑖 は「s から 𝑆 に含まれる節点のみを経由して 𝑖 に至る最短路の長さ」 𝑖 ∈ 𝑆 ならば, 𝑑 𝑖 は「s から 𝑖 に至る最短路の長さ」 第1反復後, 性質1, 2 は成り立つ 13 第 𝑘 反復後, 性質1, 2 が成り立つと仮定する. 第 𝑘 + 1 反復後, 性質1, 2 が成り立つか? 性質2 𝑖 ∈ 𝑆 ならば, 𝑑 𝑖 には 「s から 𝑖 に至る最短路の長さ」 が格納されている. 𝑑 𝑖 の更新は 𝑆 の要素に関してのみ行うので,第 𝑘 + 1 反復後, 性質2が 成り立つならば, 𝑆 の要素から 𝑑 𝑖 の値が最小であるものを選び, その要素 𝑣 を 𝑆 に 加える際に, 性質2が保存されなれけばならない. 性質2が成り立たない. ⇒ 𝑣 までの 𝑑 𝑣 よりも短い経路が存在する. 14 性質2が成り立たない. ⇒ 𝑣 までの 𝑑 𝑣 よりも短い経路が存在する. 第 𝑘 反復後, 性質1 は成り立っている. すなわち, 𝑑 𝑣 には 「s から (𝑣を 加える前の) 𝑆 に含まれる節点のみを経由して 𝑖 に至る最短路の長さ」が 格納されている. したがって, 最短路が別にあるとすれば, (𝑣を加える前の) 𝑆 に含まれる節点以外を経由する. 𝑢 𝑣 𝑑 𝑣 𝑆 s 15 最短路が別にあるとすれば, (𝑣を加える前の) 𝑆 に含まれる節点以外を経由 する. 𝑢 𝑣 𝑑 𝑣 𝑆 s 最短路が最初に (𝑣を加える前の) 𝑆外に出る節点を𝑢 とする. 𝑢から𝑣への経路長 ℓは正. 𝑣 ≠ 𝑢 であり, 枝の長さは常に正 最短路長= 𝑑 𝑢 + ℓ < 𝑑 𝑣 𝑑 𝑢 <𝑑 𝑣 𝑆 の要素から 𝑑 𝑣 の値が最小である 𝑣 を選んだことに矛盾する. 「性質2が成り立たない」という仮定がおかしかった. 性質2は保存される. 16 第 𝑘 反復後, 性質1, 2 が成り立つと仮定する. 第 𝑘 + 1 反復後, 性質1, 2 が成り立つか? 性質1 𝑑 𝑖 には 「s から 𝑆 に含まれる節点のみを経由して 𝑖 に至る最短路の長さ」 が格納されている. 第 𝑘 + 1 反復後, 性質1が成り立つならば, 𝑑 𝑖 の更新が性質1を保存する. 17 𝑆 に𝑣 を加えた後, 「 𝑆 に含まれる節点のみを経由する」経路は i 𝑣 を経由する経路, (ii) 𝑣 を経由しない経路 のどちらか. (ii) が最短路を与えている場合, 変化なし (i) は, (i-a) 途中で 𝑣 を経由する (𝑆 から出るのは 𝑣 以外の点) (i−b) 最後に 𝑣 を経由する (𝑆 から出る直前の節点は 𝑣) に分かれるが, (i−a) は最短路には, ならないので, (i−b)のみを 考えればよい. 18 補助結果1 𝑗 ∈ 𝑆 であれば, どの 𝑖 ∈ 𝑆 に対しても, 𝑑 𝑖 < 𝑑(𝑗) 第1反復後, 正しい 第𝑘反復後, 正しいと仮定 𝑆 から最小の 𝑑 𝑣 を探して𝑆 に加える. 以降 𝑆 内の 𝑑 ⋅ は更新しない. 𝑣 と接続している 𝑆 の節点 𝑗′ について 𝑑 𝑗′ = min 𝑑 𝑗′ , 𝑑 𝑣 + 𝑎𝑣𝑗 更新前, 𝑑 𝑗′ > 𝑑 𝑣 . 更新後, 𝑑 𝑗′ = 𝑑 𝑣 + 𝑎𝑣𝑗 > 𝑑 𝑣 . 𝑣 は 𝑆の要素であったから, もとの𝑆 の任意の要素𝑖 に対して 𝑑 𝑖 < 𝑑 𝑣 . よって 𝑑 𝑖 < 𝑑 𝑗′ . 𝑣 と接続していない 𝑆 の節点 𝑗 ′′ については, 元から 𝑑 𝑖 < 𝑑 𝑗′′ . よって第𝑘 + 1反復後も正しい. 19 𝑗 ∈ 𝑆 であれば, どの 𝑖 ∈ 𝑆 に対しても, 𝑑 𝑖 < 𝑑(𝑗) 補助結果2 𝑖 𝑗 𝑠 最短路上の節点については, 最適性の原理から 𝑠 に近い順に 𝑖, 𝑗とすると 𝑑 𝑖 < 𝑑(𝑗) 𝑆 𝑣 𝑗 𝑆 𝑆 𝑣 𝑖 この状況では 𝑑 𝑖 < 𝑑(𝑣) k 𝑗 𝑆 𝑖 緑が最短路なら 𝑑 𝑖 > 𝑑(𝑣) 20 𝑆 𝑣 𝑗 𝑆 𝑆 𝑖 𝑣 k 𝑗 𝑆 𝑖 そもそも 𝑣 が加わったことで, 𝑖 への最短路が 変化するならば, 𝑖 への最短路は確定していなかった ことになり, 𝑖 ∈ 𝑆 に矛盾. 21 𝑆 に新たに含まれるようになるのは 𝑣 だから, 「 𝑆 に含まれる節点のみを 経由したときの最短経路長」が変化するのは, 𝑣から1ステップで到達 できる点に限られる. 𝑣, 𝑗 ∈ 𝐸 かつ 𝑗 ∈ 𝑆 はこれにあたる. 𝑣 から1ステップで到達できる経路が, 新たに「 𝑆 に含まれる節点のみを経 由」する経路に加わる. これが 𝑣 を経由しない従来からの𝑆 に含まれる 節点のみを経由する最短経路より短ければ, 𝑑(𝑗) の値を更新すべき. 𝑑 𝑗 = min(𝑑 𝑗 , 𝑑 𝑣 + 𝑎𝑖𝑗 ) 𝑣 𝑆 𝑆 𝑣 𝑗 𝑗 𝑆 𝑆 22
© Copyright 2024 ExpyDoc