In graph theory, the shortest path problem is the problem of finding a path between two vertices in a graph such that the sum of the weights of its constituent edges is minimized
2. Shortest Path Problems
• Directed weighted graph.
• Path length is sum of weights of edges on path.
• The vertex at which the path begins is the source vertex.
• The vertex at which the path ends is the destination vertex.
0
3 9
5 11
3
6
5
7
6
s
t x
y z
2
2 1
4
3
5. Shortest-Path Variants
• Single-source single-destination (1-1): Find the shortest
path from source s to destination v.
• Single-source all-destination(1-Many): Find the shortest
path from s to each vertex v.
• Single-destination shortest-paths (Many-1): Find a shortest
path to a given destination vertex t from each vertex v.
• All-pairs shortest-paths problem (Many-Many): Find a
shortest path from u to v for every pair of vertices u and v.
We talk about directed, weighted graphs
6. Shortest-Path Variants (Cont’d)
• For un-weighted graphs, the shortest path problem is mapped to BFS
– Since all weights are the same, we search for the smallest number of edges
s
2
5
4
7
8
3 6 9
0
1
1
1
2
2
3
3
3
BFS creates a tree called BFS-Tree
7. Shortest-Path Variants
• Single-source single-destination (1-1): Find the shortest
path from source s to destination v.
• Single-source all-destination(1-Many): Find the shortest
path from s to each vertex v.
• Single-destination shortest-paths (Many-1): Find a shortest
path to a given destination vertex t from each vertex v.
• All-pairs shortest-paths problem (Many-Many): Find a
shortest path from u to v for every pair of vertices u and v.
No need to consider different solution or algorithm for each variant
(we reduce it into two types)
8. Shortest-Path Variants
Single-Source Single-Destination (1-1)
- No good solution that beats 1-M variant
- Thus, this problem is mapped to the 1-M
variant
Single-Source All-Destination (1-M)
- Need to be solved (several algorithms)
- We will study this one
All-Sources Single-Destination (M-1)
- Reverse all edges in the graph
- Thus, it is mapped to the (1-M) variant
All-Sources All-Destinations (M-M)
- Need to be solved (several algorithms)
- We will study it (if time permits)
9. Shortest-Path Variants
Single-Source Single-Destination (1-1)
- No good solution that beats 1-M variant
- Thus, this problem is mapped to the 1-M
variant
Single-Source All-Destination (1-M)
- Need to be solved (several algorithms)
- We will study this one
All-Sources Single-Destination (M-1)
- Reverse all edges in the graph
- Thus, it is mapped to the (1-M) variant
All-Sources All-Destinations (M-M)
- Need to be solved (several algorithms)
- We will study it (if time permits)
10. Introduction
Generalization of BFS to handle weighted graphs
• Direct Graph G = ( V, E ), edge weight fn ; w : E → R
• In BFS w(e)=1 for all e E
Weight of path p = v1 v2 … vk is
1
1
1
( ) ( , )
k
i i
i
w p w v v
11. Shortest Path
Shortest Path = Path of minimum weight
δ(u,v)= min{ω(p) : u v}; if there is a path from u to v,
otherwise.
p
13. 1- Optimal Substructure Property
Theorem: Subpaths of shortest paths are also shortest paths
• Let δ(1,k) = <v1, ..i, .. j.., .. ,vk > be a shortest path from v1 to vk
• Let δ(i,j) = <vi, ... ,vj > be subpath of δ(1,k) from vi to vj
for any i, j
• Then δ(I,j) is a shortest path from vi to vj
14. Proof: By cut and paste
• If some subpath were not a shortest path
• We could substitute a shorter subpath to create a shorter
total path
• Hence, the original path would not be shortest path
v2
v3 v4
v5 v6 v7
1- Optimal Substructure Property
v1
v0
15. Definition:
• δ(u,v) = weight of the shortest path(s) from u to v
• Negative-weight cycle: The problem is undefined
– can always get a shorter path by going around the cycle again
• Positive-weight cycle : can be taken out and reduces the cost
s v
cycle
< 0
2- No Cycles in Shortest Path
16. 3- Negative-weight edges
• No problem, as long as no negative-weight cycles are
reachable from the source (allowed)
17. 4- Triangle Inequality
Lemma 1: for a given vertex s in V and for every edge (u,v) in E,
• δ(s,v) ≤ δ(s,u) + w(u,v)
Proof: shortest path s v is no longer than any other path.
• in particular the path that takes the shortest path s v and
then takes cycle (u,v)
s
u v
19. Initialization
• Maintain d[v] for each v in V
• d[v] is called shortest-path weight estimate
and it is upper bound on δ(s,v)
INIT(G, s)
for each v V do
d[v] ← ∞
π[v] ← NIL
d[s] ← 0
Parent node
Upper bound
20. Relaxation
RELAX(u, v)
if d[v] > d[u]+w(u,v) then
d[v] ← d[u]+w(u,v)
π[v] ← u
5
u v
v
u
2
2
9
5 7
Change d[v]
5
u v
v
u
2
2
6
5 6
When you find an edge (u,v) then
check this condition and relax d[v] if
possible
No chnage
22. • Non-negative edge weight
• Like BFS: If all edge weights are equal, then use BFS,
otherwise use this algorithm
• Use Q = min-priority queue keyed on d[v] values
Dijkstra’s Algorithm For Shortest Paths
23. DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
Dijkstra’s Algorithm For Shortest Paths
24. Example: Initialization Step
3
¥ ¥
¥ ¥
0
s
u v
y
x
10
5
1
2 9
4 6
7
2
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
26. Example
2
10
5
0
s
u v
y
x
10
5
1
3
9
4 6
7
2
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
27. Example
2
8 14
5 7
0
s
y
x
10
5
1
3 9
4 6
7
2
u v
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
28. Example
10
8 13
5 7
0
s
u v
y
x
5
1
2 3 9
4 6
7
2
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
29. Example
8
u v
9
5 7
0
y
x
10
5
1
2 3 9
4 6
7
2
s
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
31. Dijkstra’s Algorithm Analysis
DIJKSTRA(G, s)
INIT(G, s)
S←Ø > set of discovered nodes
Q←V[G]
while Q ≠Ø do
u←EXTRACT-MIN(Q)
S←S U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
> DECREASE-KEY(Q, v, d[v])
O(V)
O(V Log V)
Total in the loop: O(V Log V)
Total in the loop: O(E Log V)
Time Complexity: O (E Log V)
33. Key Property in DAGs
• If there are no cycles it is called a DAG
• In DAGs, nodes can be sorted in a linear order such that all
edges are forward edges
– Topological sort
34. Single-Source Shortest Paths in DAGs
• Shortest paths are always well-defined in dags
no cycles => no negative-weight cycles even if
there are negative-weight edges
• Idea: If we were lucky
To process vertices on each shortest path from left
to right, we would be done in 1 pass
35. Single-Source Shortest Paths in DAGs
DAG-SHORTEST PATHS(G, s)
TOPOLOGICALLY-SORT the vertices of G
INIT(G, s)
for each vertex u taken in topologically sorted order do
for each v in Adj[u] do
RELAX(u, v)
36. Example
0
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
37. Example
0
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
38. Example
0 2 6
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
39. Example
0 2 6 6 4
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
40. Example
0 2 6 5 4
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
41. Example
0 2 6 5 3
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
42. Example
0 2 6 5 3
r s t u v w
5 2 7 –1 –2
6 1
3
2
4
43. Single-Source Shortest Paths in
DAGs: Analysis
DAG-SHORTEST PATHS(G, s)
TOPOLOGICALLY-SORT the vertices of G
INIT(G, s)
for each vertex u taken in topologically sorted order do
for each v in Adj[u] do
RELAX(u, v)
O(V+E)
O(V)
Total O(E)
Time Complexity: O (V + E)