|
Simplex
Twophase
Dijkstra
Prim
Kruskal
Ford-Fulkerson
Dijkstra Java applet demos:
FAQ
Japanese/English
|
最短経路問題
連結グラフ G=(V,E) と重み d:E->R+ および
始点 s in V が与えられたとき、
s から 他の頂点までの最短経路と最短距離を求めよ。
ダイクストラ法
ダイクストラ法はたいへん効率の良いアルゴリズムとして知られている。
- Set i=0, S0= {u0=s},
L(u0)=0, and L(v)=infinity for v <> u0.
If |V| = 1 then stop, otherwise go to step 2.
- For each v in V\Si, replace L(v) by
min{L(v), L(ui)+dvui}.
If L(v) is replaced, put a label (L(v), ui) on v.
- Find a vertex v which minimizes {L(v): v in V\Si}, say ui+1
.
- Let Si+1 = Si cup {ui+1}.
- Replace i by i+1. If i=|V|-1 then stop, otherwise go to step 2.
ダイクストラ法をインプリメントした下のプログラムは
O(|V|2) アルゴリズムである。
{v in V\Si : L(v) < infinity} をとっておくために
ヒープを用いれば、計算時間を O(|E|log|V|) とすることができる。
Java ソースファイル:
Java アプレットデモ:
- a (6,10) graph
- a (16,33) graph
- a (12,23) graph
- a (16,33) digraph
- a (9,15) graph 徳島から四国の他の主要地点まで
- a (48,77) graph 徳島県とその周辺
- a (8,12) graph
- a (6,12) graph
- a (10,19) graph
- a (14,22) graph
関連ページ:
|