Professional Documents
Culture Documents
Shortest Path Algorithms
Shortest Path Algorithms
Highway system
– Distance
– Travel time
– Number of stoplights
– Krispy Kreme locations
Network of airports
– Travel time
– Fares
– Actual distance
1
Weighted path length
Consider an edge-weighted graph
G = (V,E).
Let C(vi,vj) be the weight on the edge
connecting vi to vj.
A path in G is a non-empty sequence of
vertices P = {v1, v2, v3, …, vk}.
The weighted path length is given by
k-1
∑C(v ,v
i=1
i i+1)
2
Shortest weighted path
from b to f:
a
{b, a, c, e, f}
3 1 5
b 5 c 2 d
4 5
e 1 f
b 5 c 2 d
4 5
Shortest unweighted
path from b to f: 1
e f
{b, c, e, f}
b 5 c -8 d
4 5
{d, a, c, e, f} cost: 4
{d, a, c, d, a, c, e, f} -6
e f
cost: 2
{d, a, c, d, a, c, d, a, c, e, f} cost: 0
3
Dijkstra’s Algorithm
Dijkstra’s Algorithm
v kv dv pv a
a F ∞ 3 1 5
b F 0
b 5 c 2 d
c F ∞
4 5
d F ∞
e 1 f
e F ∞
f F ∞
4
v kv dv pv a
a F 3 b 5
3 1
b T 0 --
b 5 c 2 d
c F 5 b
4 5
d F ∞
e 1 f
e F ∞
f F ∞
v kv dv pv a
a T 3 b 5
3 1
b T 0 --
b 5 c 2 d
c F 4 a
4 5
d F 8 a
e 1 f
e F ∞
f F ∞
v kv dv pv a
a T 3 b 5
3 1
b T 0 --
b 5 c 2 d
c T 4 a
4 5
d F 6 c
e 1 f
e F 8 c
f F ∞
5
v kv dv pv a
a T 3 b 5
3 1
b T 0 --
b 5 c 2 d
c T 4 a
4 5
d T 6 c
e 1 f
e F 8 c
f F 11 d
v kv dv pv a
a T 3 b 5
3 1
b T 0 --
b 5 c 2 d
c T 4 a
4 5
d T 6 c
e 1 f
e T 8 c
f F 9 e
v kv dv pv a
a T 3 b 5
3 1
b T 0 --
b 5 c 2 d
c T 4 a
4 5
d T 6 c
e 1 f
e T 8 c
f T 9 e
6
3
v kv dv pv a
a T 3 b
b T 0 -- 6
b 4 c d
c T 4 a
d T 6 c
9
e T 8 c 8 e f
f T 9 e
Dijsktra’s Algorithm
Dijsktra(G,s0)
{
//Initialize
n = |V|; O( )
createtable(n); //stores k,d,p O( )
createpq(|E|); //empty pq O( )
table[s0].d = 0; O( )
insertpq(0,s0); O( )
Dijsktra’s Algorithm
//con’t
while (!pq.isempty) O( )
{
v0 = getMin(); O( )
if (!table[v0].k) //not known O( )
{
table[v0].k = true; O( )
for each vi ∈ Adj[v0] O( )
{
newd=table[v0].d + weight(vi,v0); O( )
7
Dijsktra’s Algorithm
//con’t
// newd=table[v0].d + weight(vi,v0);
if (table[vi].d) > newd) O( )
{
table[vi].d = newd; O( )
table[vi].p = v0; O( )
insertpq(newd,vi); O( )
}
}
}
}
Dijsktra’s Algorithm
//con’t
for each v ∈ G(V,E) O( )
//build vertex set in T
v ∈ T(V,E’);