SlideShare uma empresa Scribd logo
1 de 76
アルゴリズムイントロダクション 第 24 章 単一始点最短路問題 2009.6.21 Naoya Ito
第 24 章の構成 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
単一始点最短路問題とは
単一始点最短路問題とは ,[object Object],[object Object],[object Object],[object Object],0 3 9 5 11 3 5 2 1 6 4 6 2 7 s
最短路重み  δ(u, v) ,[object Object],[object Object],[object Object],0 3 9 5 11 3 5 2 1 6 4 6 2 7 s
単一始点最短路問題で得られる情報 ,[object Object],[object Object],[object Object],[object Object],0 3 9 5 11 3 5 2 1 6 4 6 2 7 s 各頂点内の数字が  δ(s, v) 緑の辺の集合が最短路木 「始点から特定の頂点への経路や最短路重み」ではなく、「始点から各頂点へのそれ」を求めているという点に注意
派生問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
単一始点最短路問題の考え方
ざっくりとした解き方の説明 ,[object Object],[object Object],0 3 9 5 11 3 5 2 1 6 4 6 2 7 0 ∞ ∞ ∞ ∞ 3 5 2 1 6 4 6 2 7
複数のアルゴリズム ,[object Object],[object Object],[object Object],[object Object],[object Object]
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1.  最短路の部分構造最適性 ,[object Object],[object Object],[object Object],[object Object],[object Object]
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2.  負の重みを持つ辺の扱い ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],0 5 11 -∞ 5 2 -3 8
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.  閉路の扱い ,[object Object],[object Object],[object Object],0 5 11 19 5 6 3 8
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.  最短路の表現 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5.  緩和  ( R ELAX ) #1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5.  緩和  ( R ELAX ) #2 5 9 2 u v R ELAX (u, v, w) 5 7 2 u v 5 6 2 u v R ELAX (u, v, w) 5 6 2 u v 一つ前の頂点  ( 先行点 )  から緩和するところがポイント 緩和の結果何も更新されないこともある
5.  緩和 #3  擬似コード ,[object Object],[object Object],[object Object],[object Object]
ついでに、初期化の擬似コード ,[object Object],[object Object],[object Object],[object Object],[object Object]
各アルゴリズムの前に知っておくべきこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],本章の各アルゴリズムは、なぜそれで最短路木、最短路重みが得られるのかそれほど直感的ではないので、上記の諸条件から理詰めで正当性を考えると良い
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
三角不等式 任意の辺  (u, v) ∈ E  に対して  δ(s, v) ≦ δ(s, u) + w(s, v)  が成立する 5 7 2 u v 0 s 5 δ(s, u) δ(s, v) w(s, v)
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
上界性 すべての  v ∈ V  に対して、 d[v] ≧ δ(s, v)  が成立する。ひとたび  d[v]  が値  δ(s, v)  を取ると、その後は決して変化しない 5 6 2 u v R ELAX (u, v, w) 5 6 2 u v d[v] = δ(s, u)
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
無経路性 頂点  s  から  v  に至る経路がない場合、 d[v] = δ(s, v) = ∞  が成立する 5 ∞ u v 0 s 5 d[v] = δ(s, v) 初期化ですべての  d[v]  は ∞になっていて、 d[v]  が更新されるのは緩和操作時だけ。緩和操作は先行点から行われるが、孤立した頂点は先行点がないので∞から更新されることがない
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
収束性 ある  u, v ∈ V  に対して、 s  ~ > u -> v  を  G  の最短路と仮定する。辺  (u, v)  に対して緩和を実行する前に  d[u] = δ(s, u)  が成立した時点があったとすると緩和実行後は常に  d[v] = δ(s, v)  が成立する 5 9 2 u v R ELAX (u, v, w) 5 7 2 u v δ(s, u) δ(s, v)
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
経路緩和性 p = <v 0 , v 1 ,  ・・・ , v k >  が  s = v 0   から  v k  に至る最短路で、 p  の辺が  (v 0 , v 1 ), (v 1 , v 2 ), ..., (v k-1 , v k )  の順序で緩和されたとき、 d[v k ] = δ(s, v k )  が成立する。 この性質は他の任意の緩和操作とは無関係に成立する。たとえこれらの緩和操作の実行が  p  の緩和操作の実行とシャッフルされた順序で実行されたとしてもこの性質は成立する。
6.  最短路と緩和の性質 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
先行点部分グラフの性質 すべての  v ∈ V  に対して  d[v] = δ(s, v)  が成立するとき、先行点部分グラフは  s  を根とする最短路木である この性質から、すべての頂点を緩和で  δ(s, v)  にすることができれば目的を達成したことになる、と言える 先の経路緩和性から、定められた順序で緩和していけば  d[v k ] = δ(s, v k )  が得られることは分かっている。よって 順番に緩和 -> 全部の頂点が  δ ->  最短路ゲット というのがアルゴリズムの基本方針となる
3 つのアルゴリズム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ベルマン・フォードの アルゴリズム
ベルマン・フォードのアルゴリズム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ベルマン・フォードのアルゴリズムの方針 ,[object Object],[object Object]
ベルマン・フォードのアルゴリズムの動き 0 ∞ ∞ ∞ ∞ 6 7 8 5 -4 9 7 2 -3 -2 s 0 6 ∞ 7 ∞ 6 7 8 5 -4 9 7 2 -3 -2 s |V| - 1  回ループし、ループ毎に各辺を緩和する 左はループ開始直前 ループ 1 回目。始点  s  以外の頂点は  d[v] = ∞  なので、始点  s  の出辺だけ  d  が更新される ( 緑の辺は先行点の値 )
ベルマン・フォードのアルゴリズムの動き 0 6 4 7 2 6 7 8 5 -4 9 7 2 -3 -2 s 0 2 4 7 2 6 7 8 5 -4 9 7 2 -3 -2 s ループ 2 回目。 1 回目のループで  d  が減少した頂点からの出辺の緩和により 2 頂点が更新 ループ 3 回目。 2 回目のループで  d  が減少した頂点からの出辺の緩和により更新
ベルマン・フォードのアルゴリズムの動き 0 2 4 7 -2 6 7 8 5 -4 6 7 2 -3 -2 s ループ 4 回目  ( 最後 ) 。 3 回目のループで  d[v]  が減少した頂点からの出辺の緩和により更新 ループを抜けた時点での  d  と  π  の値が最終的な値
擬似コード ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],各辺の緩和操作 負の重みを持つ閉路の存在確認  ( あったら  FALSE  を返す ) 正当性は補題  24.4
アルゴリズムの正当性 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
計算量 ,[object Object],[object Object],[object Object],[object Object]
トポロジカル・ソート順 による緩和
トポロジカル・ソート順に緩和 ,[object Object],[object Object],[object Object]
方針 ,[object Object],[object Object],[object Object]
アルゴリズムの動き 閉路のない有向グラフをトポロジカル・ソートする 0 ∞ ∞ ∞ ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ ∞ ∞ ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 左の頂点から順番に選択、選択された頂点の出辺を緩和する
アルゴリズムの動き 0 ∞ 2 6 ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ 2 6 6 4 s 5 2 7 -1 -2 6 1 3 4 2
アルゴリズムの動き 0 ∞ 2 6 5 4 s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ 2 6 5 3 s 5 2 7 -1 -2 6 1 3 4 2
アルゴリズムの動き 0 ∞ 2 6 5 3 s 5 2 7 -1 -2 6 1 3 4 2
擬似コード ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
アルゴリズムの正当性 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
計算量 ,[object Object],[object Object],[object Object],[object Object]
ダイクストラの アルゴリズム
ダイクストラのアルゴリズム ,[object Object],[object Object],[object Object]
ダイクストラ法の方針 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ダイクストラのアルゴリズムの動き 0 ∞ ∞ ∞ ∞ 10 5 2 3 1 9 2 4 6 s 7 0 10 ∞ 5 ∞ 10 5 2 3 1 9 2 4 6 s 7 Q = V - S  にある 選択された  u ( 最小の最短路推定値 ) S  にある 最初に選択された始点  s  からの出辺が緩和される 始点  s  は  S  に加えられる。次に選択されるのは、 S  にまだ入ってないもので最小の最短路推定値  (5)  を持つ頂点
ダイクストラのアルゴリズムの動き 0 8 14 5 7 10 5 2 3 1 9 2 4 6 s 7 同様に  u  からの出辺が緩和される そして  Q  から次の  u  を選ぶ 0 8 13 5 7 10 5 2 3 1 9 4 6 s 7 同様に繰り返す
ダイクストラのアルゴリズムの動き 0 8 9 5 7 10 5 2 3 1 9 4 6 s 7 0 8 9 5 7 10 5 2 3 1 9 4 6 s 7 緩和 !  緩和 !! おつかれさまでした 最短路重み  d,  最短路木  π  がそれぞれ得られました
擬似コード ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
アルゴリズムの正当性 ,[object Object],[object Object],[object Object],[object Object],[object Object]
計算量 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
線形計画問題への応用
線形計画問題とは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
続き ( 例題の解き方 ) A, B  を 1 時間あたりそれぞれ  x  個、 y 個作るとすると 2x + 8y ≦ 60 4x + 4y ≦ 40 x ≧ 0, y ≧ 0 という制約の下で 目的関数  f = 29x + 45y を最大化するような解  (x i , y i )  を求めれば良い
幾何学的には・・・ O x y ax + by = c a'x + b'y = c' 可能領域 各制約を満たす領域 ・・・ 可能領域にある解のうち目的関数を最大化するものを選ぶ  ( 最適解は必ず可能領域の頂点になるという性質を利用する -> シンプレックス法 )
線形計画と単一始点最短路問題 ,[object Object],[object Object],[object Object],[object Object],[object Object]
差分制約式系 ,[object Object],x1 - x2 ≦ 0 x1 - x5 ≦ -1 x2 - x5 ≦ 1 x3 - x1 ≦ 5 x4 - x1 ≦ 4 x4 - x3 ≦ -1 x5 - x3 ≦ -3 x5 - x4 ≦ 3
差分制約式系の線形計画行列 ,[object Object],[object Object],[object Object],[object Object],[object Object]
まとめ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
参考文献 ,[object Object]

Mais conteúdo relacionado

Mais procurados

情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5Tatsuki SHIMIZU
 
曲線から多様体まで駆け抜ける微分幾何学入門
曲線から多様体まで駆け抜ける微分幾何学入門曲線から多様体まで駆け抜ける微分幾何学入門
曲線から多様体まで駆け抜ける微分幾何学入門Masanari Kimura
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門Tatsuki SHIMIZU
 
熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価takuyayamamoto1800
 
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門スペクトラルグラフ理論入門
スペクトラルグラフ理論入門irrrrr
 
導来代数幾何入門
導来代数幾何入門導来代数幾何入門
導来代数幾何入門Naoya Umezaki
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングSho Hosoda
 
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラアルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラhixi365
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰hagino 3000
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別Hiroshi Nakagawa
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
とぽろじー入門(画像なし版)
とぽろじー入門(画像なし版)とぽろじー入門(画像なし版)
とぽろじー入門(画像なし版)Katsuya Ito
 
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
クラシックな機械学習の入門  6. 最適化と学習アルゴリズムクラシックな機械学習の入門  6. 最適化と学習アルゴリズム
クラシックな機械学習の入門 6. 最適化と学習アルゴリズムHiroshi Nakagawa
 
Crfと素性テンプレート
Crfと素性テンプレートCrfと素性テンプレート
Crfと素性テンプレートKei Uchiumi
 

Mais procurados (20)

情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
曲線から多様体まで駆け抜ける微分幾何学入門
曲線から多様体まで駆け抜ける微分幾何学入門曲線から多様体まで駆け抜ける微分幾何学入門
曲線から多様体まで駆け抜ける微分幾何学入門
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門
 
45107
4510745107
45107
 
熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価
 
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門スペクトラルグラフ理論入門
スペクトラルグラフ理論入門
 
独立成分分析 ICA
独立成分分析 ICA独立成分分析 ICA
独立成分分析 ICA
 
導来代数幾何入門
導来代数幾何入門導来代数幾何入門
導来代数幾何入門
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラアルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラ
 
Prml 4.3.5
Prml 4.3.5Prml 4.3.5
Prml 4.3.5
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
とぽろじー入門(画像なし版)
とぽろじー入門(画像なし版)とぽろじー入門(画像なし版)
とぽろじー入門(画像なし版)
 
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
クラシックな機械学習の入門  6. 最適化と学習アルゴリズムクラシックな機械学習の入門  6. 最適化と学習アルゴリズム
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
 
Crfと素性テンプレート
Crfと素性テンプレートCrfと素性テンプレート
Crfと素性テンプレート
 

Destaque

Web-Gakkai Symposium 2010
Web-Gakkai Symposium 2010Web-Gakkai Symposium 2010
Web-Gakkai Symposium 2010Naoya Ito
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
Introduction To Moco
Introduction To MocoIntroduction To Moco
Introduction To MocoNaoya Ito
 
090518computing Huffman Code Length
090518computing Huffman Code Length090518computing Huffman Code Length
090518computing Huffman Code LengthNaoya Ito
 
Dijkstra Algorithm
Dijkstra AlgorithmDijkstra Algorithm
Dijkstra AlgorithmNaoya Ito
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.pptNaoya Ito
 
about Thrift
about Thriftabout Thrift
about ThriftNaoya Ito
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
スペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうスペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうNaoya Ito
 
はてなブックマークのシステムについて
はてなブックマークのシステムについてはてなブックマークのシステムについて
はてなブックマークのシステムについてNaoya Ito
 
アルゴリズムイントロダクション 第2章
アルゴリズムイントロダクション 第2章アルゴリズムイントロダクション 第2章
アルゴリズムイントロダクション 第2章tniky1
 
Perlで圧縮
Perlで圧縮Perlで圧縮
Perlで圧縮Naoya Ito
 
Sphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントSphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントGo Yamada
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpTakeshi Komiya
 
Sphinxで社内勉強会(Git)の
資料を作ってみた
Sphinxで社内勉強会(Git)の
資料を作ってみたSphinxで社内勉強会(Git)の
資料を作ってみた
Sphinxで社内勉強会(Git)の
資料を作ってみたTaku SHIMIZU
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版Keiichiro Shikano
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernelNaoya Ito
 
オープンソースの情報共有の仕組み"Knowledge"のご紹介
オープンソースの情報共有の仕組み"Knowledge"のご紹介オープンソースの情報共有の仕組み"Knowledge"のご紹介
オープンソースの情報共有の仕組み"Knowledge"のご紹介koda3
 

Destaque (18)

Web-Gakkai Symposium 2010
Web-Gakkai Symposium 2010Web-Gakkai Symposium 2010
Web-Gakkai Symposium 2010
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
Introduction To Moco
Introduction To MocoIntroduction To Moco
Introduction To Moco
 
090518computing Huffman Code Length
090518computing Huffman Code Length090518computing Huffman Code Length
090518computing Huffman Code Length
 
Dijkstra Algorithm
Dijkstra AlgorithmDijkstra Algorithm
Dijkstra Algorithm
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
 
about Thrift
about Thriftabout Thrift
about Thrift
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
スペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうスペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろう
 
はてなブックマークのシステムについて
はてなブックマークのシステムについてはてなブックマークのシステムについて
はてなブックマークのシステムについて
 
アルゴリズムイントロダクション 第2章
アルゴリズムイントロダクション 第2章アルゴリズムイントロダクション 第2章
アルゴリズムイントロダクション 第2章
 
Perlで圧縮
Perlで圧縮Perlで圧縮
Perlで圧縮
 
Sphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントSphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメント
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
Sphinxで社内勉強会(Git)の
資料を作ってみた
Sphinxで社内勉強会(Git)の
資料を作ってみたSphinxで社内勉強会(Git)の
資料を作ってみた
Sphinxで社内勉強会(Git)の
資料を作ってみた
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernel
 
オープンソースの情報共有の仕組み"Knowledge"のご紹介
オープンソースの情報共有の仕組み"Knowledge"のご紹介オープンソースの情報共有の仕組み"Knowledge"のご紹介
オープンソースの情報共有の仕組み"Knowledge"のご紹介
 

Semelhante a Introduction to Algorithms#24 Shortest-Paths Problem

統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)Kota Mori
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系tmaehara
 
Unified Expectation Maximization
Unified Expectation MaximizationUnified Expectation Maximization
Unified Expectation MaximizationKoji Matsuda
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習Masahiro Suzuki
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
 
IJPC-2 C問題解説
IJPC-2 C問題解説IJPC-2 C問題解説
IJPC-2 C問題解説yutaka1999
 
Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Taiji Suzuki
 
Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Naotaka Yamada
 
A Brief Survey of Schrödinger Bridge (Part I)
A Brief Survey of Schrödinger Bridge (Part I)A Brief Survey of Schrödinger Bridge (Part I)
A Brief Survey of Schrödinger Bridge (Part I)Morpho, Inc.
 
JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料mdkcpp 1015
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - Komeometo
 
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2Computational Materials Science Initiative
 
第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
210603 yamamoto
210603 yamamoto210603 yamamoto
210603 yamamotoRCCSRENKEI
 

Semelhante a Introduction to Algorithms#24 Shortest-Paths Problem (20)

グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
Topic model
Topic modelTopic model
Topic model
 
Master Thesis
Master ThesisMaster Thesis
Master Thesis
 
統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
 
JOIsummercamp2012
JOIsummercamp2012JOIsummercamp2012
JOIsummercamp2012
 
Unified Expectation Maximization
Unified Expectation MaximizationUnified Expectation Maximization
Unified Expectation Maximization
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
 
Sparse models
Sparse modelsSparse models
Sparse models
 
IJPC-2 C問題解説
IJPC-2 C問題解説IJPC-2 C問題解説
IJPC-2 C問題解説
 
Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Sparse estimation tutorial 2014
Sparse estimation tutorial 2014
 
Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
 
A Brief Survey of Schrödinger Bridge (Part I)
A Brief Survey of Schrödinger Bridge (Part I)A Brief Survey of Schrödinger Bridge (Part I)
A Brief Survey of Schrödinger Bridge (Part I)
 
JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
 
NLPforml5
NLPforml5NLPforml5
NLPforml5
 
第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)
 
210603 yamamoto
210603 yamamoto210603 yamamoto
210603 yamamoto
 

Último

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

Introduction to Algorithms#24 Shortest-Paths Problem

  • 1. アルゴリズムイントロダクション 第 24 章 単一始点最短路問題 2009.6.21 Naoya Ito
  • 2.
  • 4.
  • 5.
  • 6.
  • 7.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. 5. 緩和 ( R ELAX ) #2 5 9 2 u v R ELAX (u, v, w) 5 7 2 u v 5 6 2 u v R ELAX (u, v, w) 5 6 2 u v 一つ前の頂点 ( 先行点 ) から緩和するところがポイント 緩和の結果何も更新されないこともある
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. 三角不等式 任意の辺 (u, v) ∈ E に対して δ(s, v) ≦ δ(s, u) + w(s, v) が成立する 5 7 2 u v 0 s 5 δ(s, u) δ(s, v) w(s, v)
  • 29.
  • 30. 上界性 すべての v ∈ V に対して、 d[v] ≧ δ(s, v) が成立する。ひとたび d[v] が値 δ(s, v) を取ると、その後は決して変化しない 5 6 2 u v R ELAX (u, v, w) 5 6 2 u v d[v] = δ(s, u)
  • 31.
  • 32. 無経路性 頂点 s から v に至る経路がない場合、 d[v] = δ(s, v) = ∞ が成立する 5 ∞ u v 0 s 5 d[v] = δ(s, v) 初期化ですべての d[v] は ∞になっていて、 d[v] が更新されるのは緩和操作時だけ。緩和操作は先行点から行われるが、孤立した頂点は先行点がないので∞から更新されることがない
  • 33.
  • 34. 収束性 ある u, v ∈ V に対して、 s ~ > u -> v を G の最短路と仮定する。辺 (u, v) に対して緩和を実行する前に d[u] = δ(s, u) が成立した時点があったとすると緩和実行後は常に d[v] = δ(s, v) が成立する 5 9 2 u v R ELAX (u, v, w) 5 7 2 u v δ(s, u) δ(s, v)
  • 35.
  • 36. 経路緩和性 p = <v 0 , v 1 , ・・・ , v k > が s = v 0 から v k に至る最短路で、 p の辺が (v 0 , v 1 ), (v 1 , v 2 ), ..., (v k-1 , v k ) の順序で緩和されたとき、 d[v k ] = δ(s, v k ) が成立する。 この性質は他の任意の緩和操作とは無関係に成立する。たとえこれらの緩和操作の実行が p の緩和操作の実行とシャッフルされた順序で実行されたとしてもこの性質は成立する。
  • 37.
  • 38. 先行点部分グラフの性質 すべての v ∈ V に対して d[v] = δ(s, v) が成立するとき、先行点部分グラフは s を根とする最短路木である この性質から、すべての頂点を緩和で δ(s, v) にすることができれば目的を達成したことになる、と言える 先の経路緩和性から、定められた順序で緩和していけば d[v k ] = δ(s, v k ) が得られることは分かっている。よって 順番に緩和 -> 全部の頂点が δ -> 最短路ゲット というのがアルゴリズムの基本方針となる
  • 39.
  • 41.
  • 42.
  • 43. ベルマン・フォードのアルゴリズムの動き 0 ∞ ∞ ∞ ∞ 6 7 8 5 -4 9 7 2 -3 -2 s 0 6 ∞ 7 ∞ 6 7 8 5 -4 9 7 2 -3 -2 s |V| - 1 回ループし、ループ毎に各辺を緩和する 左はループ開始直前 ループ 1 回目。始点 s 以外の頂点は d[v] = ∞ なので、始点 s の出辺だけ d が更新される ( 緑の辺は先行点の値 )
  • 44. ベルマン・フォードのアルゴリズムの動き 0 6 4 7 2 6 7 8 5 -4 9 7 2 -3 -2 s 0 2 4 7 2 6 7 8 5 -4 9 7 2 -3 -2 s ループ 2 回目。 1 回目のループで d が減少した頂点からの出辺の緩和により 2 頂点が更新 ループ 3 回目。 2 回目のループで d が減少した頂点からの出辺の緩和により更新
  • 45. ベルマン・フォードのアルゴリズムの動き 0 2 4 7 -2 6 7 8 5 -4 6 7 2 -3 -2 s ループ 4 回目 ( 最後 ) 。 3 回目のループで d[v] が減少した頂点からの出辺の緩和により更新 ループを抜けた時点での d と π の値が最終的な値
  • 46.
  • 47.
  • 48.
  • 50.
  • 51.
  • 52. アルゴリズムの動き 閉路のない有向グラフをトポロジカル・ソートする 0 ∞ ∞ ∞ ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ ∞ ∞ ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 左の頂点から順番に選択、選択された頂点の出辺を緩和する
  • 53. アルゴリズムの動き 0 ∞ 2 6 ∞ ∞ s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ 2 6 6 4 s 5 2 7 -1 -2 6 1 3 4 2
  • 54. アルゴリズムの動き 0 ∞ 2 6 5 4 s 5 2 7 -1 -2 6 1 3 4 2 0 ∞ 2 6 5 3 s 5 2 7 -1 -2 6 1 3 4 2
  • 55. アルゴリズムの動き 0 ∞ 2 6 5 3 s 5 2 7 -1 -2 6 1 3 4 2
  • 56.
  • 57.
  • 58.
  • 60.
  • 61.
  • 62. ダイクストラのアルゴリズムの動き 0 ∞ ∞ ∞ ∞ 10 5 2 3 1 9 2 4 6 s 7 0 10 ∞ 5 ∞ 10 5 2 3 1 9 2 4 6 s 7 Q = V - S にある 選択された u ( 最小の最短路推定値 ) S にある 最初に選択された始点 s からの出辺が緩和される 始点 s は S に加えられる。次に選択されるのは、 S にまだ入ってないもので最小の最短路推定値 (5) を持つ頂点
  • 63. ダイクストラのアルゴリズムの動き 0 8 14 5 7 10 5 2 3 1 9 2 4 6 s 7 同様に u からの出辺が緩和される そして Q から次の u を選ぶ 0 8 13 5 7 10 5 2 3 1 9 4 6 s 7 同様に繰り返す
  • 64. ダイクストラのアルゴリズムの動き 0 8 9 5 7 10 5 2 3 1 9 4 6 s 7 0 8 9 5 7 10 5 2 3 1 9 4 6 s 7 緩和 ! 緩和 !! おつかれさまでした 最短路重み d, 最短路木 π がそれぞれ得られました
  • 65.
  • 66.
  • 67.
  • 69.
  • 70. 続き ( 例題の解き方 ) A, B を 1 時間あたりそれぞれ x 個、 y 個作るとすると 2x + 8y ≦ 60 4x + 4y ≦ 40 x ≧ 0, y ≧ 0 という制約の下で 目的関数 f = 29x + 45y を最大化するような解 (x i , y i ) を求めれば良い
  • 71. 幾何学的には・・・ O x y ax + by = c a'x + b'y = c' 可能領域 各制約を満たす領域 ・・・ 可能領域にある解のうち目的関数を最大化するものを選ぶ ( 最適解は必ず可能領域の頂点になるという性質を利用する -> シンプレックス法 )
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.