Microsoft PowerPoint - DA2_2017.pptx

Similar documents
Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - ad11-09.pptx

離散数学

Microsoft PowerPoint - mp11-06.pptx

Microsoft PowerPoint - mp13-07.pptx

Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

離散数学

PowerPoint プレゼンテーション

Microsoft PowerPoint - mp11-02.pptx

計算幾何学入門 Introduction to Computational Geometry

Microsoft PowerPoint - 06graph3.ppt [互換モード]

アルゴリズムとデータ構造

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

Microsoft PowerPoint - 13基礎演習C_ITプランナー_2StableMatching.pptx

Microsoft PowerPoint - 09re.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft Word - VBA基礎(3).docx

Taro-再帰関数Ⅲ(公開版).jtd

情報システム評価学 ー整数計画法ー

調和系工学 ゲーム理論編

Microsoft PowerPoint - 応用数学8回目.pptx

umeda_1118web(2).pptx

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

数学 Ⅲ 無限等比級数の問題解答 問 1 次の無限級数の和を求めよ (1) (5) (2) (6) (7) (3) ( 解 )(1) 初項 < 公比 < の無限等比級数より収束し (4) (2) (3) その和は ( 答 ) であるから 初項 < 公比 となっている よって 収束し その和は よって

Microsoft PowerPoint - ce07-09b.ppt

AI 三目並べ

Microsoft PowerPoint - H22制御工学I-10回.ppt

memo

不偏推定量

PowerPoint プレゼンテーション

様々なミクロ計量モデル†

曲線 = f () は を媒介変数とする自然な媒介変数表示 =,= f () をもつので, これを利用して説明する 以下,f () は定義域で連続であると仮定する 例えば, 直線 =c が曲線 = f () の漸近線になるとする 曲線 = f () 上の点 P(,f ()) が直線 =c に近づくこ

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

alg2015-6r3.ppt

オートマトンと言語

東邦大学理学部情報科学科 2014 年度 卒業研究論文 コラッツ予想の変形について 提出日 2015 年 1 月 30 日 ( 金 ) 指導教員白柳潔 提出者 山中陽子

スライド タイトルなし

Microsoft Word - 201hyouka-tangen-1.doc

Microsoft Word - NumericalComputation.docx

Microsoft Word - 町田・全 H30学力スタ 別紙1 1年 数学Ⅰ.doc

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

Taro-数値計算の誤差(公開版)

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

データ構造

Microsoft PowerPoint - 10.pptx

-5 -

<4D F736F F F696E74202D D8C7689E682C68DC5934B89BB F A2E707074>

グラフの探索 JAVA での実装

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Microsoft PowerPoint - 第3回2.ppt

プログラム言語及び演習Ⅲ

EBNと疫学

第 4 週コンボリューションその 2, 正弦波による分解 教科書 p. 16~ 目標コンボリューションの演習. 正弦波による信号の分解の考え方の理解. 正弦波の複素表現を学ぶ. 演習問題 問 1. 以下の図にならって,1 と 2 の δ 関数を図示せよ δ (t) 2

Transcription:

1// 小テスト内容 データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (I) 1 1 第 章の構成. 単一始点最短路問題 単一始点最短路問題とは 単一始点最短路問題の考え方 単一始点最短路問題を解くつのアルゴリズム ベルマン フォードのアルゴリズム トポロジカル ソートによる解法 ダイクストラのアルゴリズム 1 1 単一始点最短路問題とは 単一始点最短路問題とは 前提 : 重み付き有向グラフ 特定の開始頂点 から任意の頂点 v までの最短路を求める問題 例 : シカゴからボストンまでの最短経路 最短 重み最小 ( 経路本数最小ではない ) 1 1 11 1 1

1// 最短路重み δ(u, v) w(u, v) u v の重み δ(u, v) u v の最短路重み u v の経路がないとき δ(u, v) = 単一始点最短路問題で得られる情報 (1) 始点 から任意の頂点 v までの最短路重み δ(, v) () 任意の頂点 v までの経路 先行点 π[v] v の前の頂点 π[v] は最短路木を構成 1 11 1 1 11 各頂点内の数字が δ(, v) 緑の辺の集合が最短路 始点から特定の頂点への経路や最短路重み ではなく, 始点から各頂点へのそれ を求めているという点に注意 1 派生問題 単一始点最短路問題 (1 to N) が解けると以下の問題も解ける 単一目的地最短路問題 (N to 1) 1 to N を N to 1 に変更すれば OK 単一点対最短路問題 (1 to 1) 単一始点最短路から自明 一見,1 to 1 なので単一始点最短路を求めるよりも良い方法がありそうだが, 最悪の場合に漸近的に速く実行できる方法は知られていない 全点対最短路問題 (N to N) これはもっと良い方法がある 第 章 単一始点最短路問題の考え方 1 ざっくりとした解き方の説明 各頂点に始点 からの重みの和を記録. 最初は全部 適当なアルゴリズムで各辺を調べて, 頂点に記録している重みが最短路のそれになるよう調整 複数のアルゴリズム 前提条件により最適なアルゴリズムが変わる 負の重み, 閉路のありなし ( 後述 ) アルゴリズムの違い 各辺を調べる ( 緩和する, 後述 ) 回数, 調べる順番に相違がある 当然, 調べる回数 / 順番が多い方が, より汎用的な目的に使えるアルゴリズムになる 1 1 11

1//. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質 最短路の部分経路は最短路 証明 : 補題.1 部分構造最適性 動的計画法, 貪欲アルゴリズムが適用できる可能性 ダイクストラ法は貪欲戦略を採っている. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質. 負の重みを持つ辺の扱い 全体として負の重みを持つ閉路, が問題 その閉路を巡回すると最短路重みを無限に小さくできる v に至る経路上に負の重みの閉路が存在するなら δ(, v) = - とする 最短路が定義不可能 ( 閉路にならない ) 負の重みの経路 扱えるアルゴリズム / 扱えないアルゴリズム 負の重みの閉路があれば, それを発見して終了するアルゴリズムが存在 11 -. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質

1// ( 前述通り ) 負の重みを持つ閉路が経路にあると最短路が定義できない 最短路は正の重みを持つ閉路を含まない その閉路を取り除くと同一の始点と目的地を持つより小さな重みを持つ経路が生じるから 11 1. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質 1. 最短路の表現 頂点 v に対して別の頂点か NIL を値とする先行点 π[v] π[v] = u u v が最短路に含まれる π[u] = x x u が最短路に含まれる π[x] = x が最短路に含まれる x v u が最短路 第. 節の PRINT PATH(G,, v) で最短路を出力できる. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質. 緩和 (RELAX) #1 頂点に保存する重み 最短路推定値 d[v] とする ( 最短路の重みの上界 ) d[v] と δ(, v) を混同しないこと 緩和 (u, v) に対する緩和操作 u を経由することで v を改善できるなら d[v] および π[v] を更新する 緩和により d[v] が減少し,π[v] が更新される 緩和を適当な順序でグラフに施していくことで, 最短路木を得る 上界を厳しくしていく操作を 緩和 と呼ぶのは奇妙なのだが, 伝統的にこの用語が使われる. 緩和 (RELAX) # RELAX(u, v, w) つ前の頂点 ( 先 点 ) から緩和するところがポイント RELAX(u, v, w) 緩和の結果何も更新されないこともある

1//. 緩和 # 擬似コード RELAX(u, v, w) if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) π[v] u ついでに, 初期化の擬似コード INITIALIZE-SINGLE-SOURCE(G, ) for 各頂点 v V[G] do d[v] π[v] NIL d[]. 負の重みを持つ辺の扱い. 最短路の表現. 緩和. 最短路と緩和の性質. 最短路と緩和の性質 本章のアルゴリズムの正当性を証明するための, 最短路と緩和に関する諸性質. 上界性. 収束性. 経路緩和性. 先行点グラフの性質 本章の各アルゴリズムは, なぜそれで最短路, 最短路重みが得られるのかそれほど直感的ではないので, 上記の諸条件から理詰めで正当性を考えると良い. 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 三角不等式 任意の辺 (u, v) E に対して δ(, v) δ(, u) + w(, v) が成 する u δ(, u) δ(, v) w(, v) v 1

1//. 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 上界性 すべての v V に対して,d[v] δ(, v) が成 する. ひとたび d[v] が値 δ(, v) を取ると, その後は決して変化しない RELAX(u, v, w) d[v] = δ(, u). 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 無経路性 頂点 から v に る経路がない場合,d[v] = δ(, v) = が成 する d[v] = δ(, v) 初期化ですべての d[v] は になっていて,d[v] が更新されるのは緩和操作時だけ. 緩和操作は先 点から われるが, 孤 した頂点は先 点がないので から更新されることがない. 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 収束性 ある u, v V に対して, > u v を G の最短路と仮定する. 辺 (u, v) に対して緩和を実 する前に d[u] = δ(, u) が成 した時点があったとすると緩和実 後は常に d[v] = δ(, v) が成 する δ(, u) RELAX(u, v, w) δ(, v)

1//. 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 経路緩和性 p = <v, v 1,, v k > が = v から v k に る最短路で,p の辺が (v, v 1 ), (v 1, v ),..., (v k-1, v k ) の順序で緩和されたとき, d[v k ] = δ(, v k ) が成 する. この性質は他の任意の緩和操作とは無関係に成 する. たとえこれらの緩和操作の実 が p の緩和操作の実 とシャッフルされた順序で実 されたとしてもこの性質は成 する.. 最短路と緩和の性質. 上界性. 収束性. 経路緩和性. 先行点部分グラフの性質 先行点部分グラフの性質 すべての v V に対して d[v] = δ(, v) が成 するとき, 先 点部分グラフは を根とする最短路 である この性質から, すべての頂点を緩和で δ(, v) にすることができれば 的を達成したことになる, と える先の経路緩和性から, 定められた順序で緩和していけば d[v k ] = δ(, v k ) が得られることは分かっている. よって順番に緩和 全部の頂点が δ 最短路が得られるというのがアルゴリズムの基本 針となる 1 つのアルゴリズム ベルマン フォードのアルゴリズム O(VE) 負の重みOK,( 負の重みは持たない ) 閉路 OK トポロジカル ソート順序の緩和 Θ(V + E) 負の重み OK, 閉路なし ベルマン フォードのアルゴリズム ダイクストラのアルゴリズム O(VlgV + E) or O((V+E)lgV) 負の重みなし

1// ベルマン フォードのアルゴリズム 一般の単一始点最短路問題を解く 負の重みを持つ辺を含んでも OK 負の重みを持つ閉路の存在をチェックすることができる ベルマン フォードのアルゴリズムの方針 V - 1 回, すべての辺を緩和するとすべての v に対して d[v] = δ(, v) になる すべての v に対して... 先行点部分グラフの性質から, グラフは最短路木 BELLMAN FORD(G, w, ) 負の重みを持つ閉路がない 返値 TRUE d[v] と π[v] も想定通りに埋まる 負の重みを持つ閉路がある 返値 FALSE ベルマン フォードのアルゴリズムの動き - - V - 1 回ループし, ループ毎に各辺を緩和する左はループ開始直前 ベルマン フォードのアルゴリズムの動き - - ループ 回.1 回 のループで d が減少した頂点からの出辺の緩和により 頂点が更新 - - ループ1 回. 始点 以外の頂点は d[v] = なので, 始点 の出辺だけ d が更新される ( 緑の辺は先 点の値 ) - - ループ 回. 回 のループで d が減少した頂点からの出辺の緩和により更新 ベルマン フォードのアルゴリズムの動き - - ループ 回 ( 最後 ). 回 のループで d[v] が減少した頂点からの出辺の緩和により更新 ループを抜けた時点での d と π の値が最終的な値 BELLMAN-FORD(G, w, ) INITIALIZE-SINGLE-SOURCE(G, ) for i 1 to V[G] - 1 do for 各辺 (u, v) E[G] do RELAX(u, v, w) 擬似コード 各辺の緩和操作 for 各辺 (u, v) E[G] do if d[v] > d[u] + w(u, v) then return FALSE 負の重みを持つ閉路の存在確認 ( あったら FALSE を返す ) 正当性は補題. return TRUE

1// このネットワークの赤の頂点からの最短距離をベルマン フォードのアルゴリズムで求めよ -1-1 1-1 - 1 1-1 - 1 1-1 - 1 1 緩和操作は, 各ノードに関して逐次的に実行しても, 並列に実行しても良い ( ここでは並列に実行した結果を示す ) 1 1 1 1-1 - 1 1 1 1 1-1 - 1 1 1 1 1

1// 1-1 1 1 - -1 1 1 1-1 1 1 - -1-1 1 1 : アルゴリズムの正当性 1-1 1 1 - -1-1 1 ベルマン フォートアルゴリズムで最短路が得られることを証明せよ 証明すべきこと " V - 1 回繰り返した後, すべての頂点 v に対して d[v] = δ(, v) になっている " これが分かれば先行点部分グラフの性質から最短路木が得られることが証明できる ヒント : 経路緩和性を使う : アルゴリズムの正当性 計算量 経路緩和性による証明 ( 補題.) 各辺はループ毎に必ず緩和される 経路緩和性の順序に沿って緩和が行われたと考えることができる, という点がポイント v の経路 p = <v, v 1... v k > としたとき, 経路 p は高々 V - 1 個の辺を持つ. k V - 1 i = 1,... k に対して (v i-1, v i ) は i 回目の繰り返しで緩和される辺のひとつ 経路緩和性が成立する v =, V k = v であり, 経路緩和性から d[v] = d[v k ] = δ(, v k ) = δ(, v) O(VE) 初期化 O(V) V -1 のループ一回あたり O(E) O(VE) 負の閉路発見の for ループの実行時間 O(E) 1 1