Graph Algorithms
Shortest path problems
[Adapted from K.Wayne]
Graph Algorithms
Shortest path problems
[Adapted from K.Wayne]
Graph Algorithms
Shortest path problems
[Adapted from K.Wayne]
Graph Algorithms
Single-Source Shortest Paths
Given graph (directed or undirected) G = (V,E) with
weight function w: E R and a vertex sV,
find for all vertices vV the minimum possible weight for
path from s to v.
We will discuss two general case algorithms:
• Dijkstra's (positive edge weights only)
• Bellman-Ford (positive end negative edge weights)
If all edge weights are equal (let's say 1), the problem
is solved by BFS in (V+E) time.
Graph Algorithms
Dijkstra’s Algorithm - Relax
Relax(vertex u, vertex v, weight w)
if d[v] > d[u] + w(u,v) then
d[v] d[u] + w(u,v)
p[v] u
[Adapted from K.Wayne]
Graph Algorithms
Dijkstra’s Algorithm - Idea
[Adapted from K.Wayne]
Graph Algorithms
Dijkstra’s Algorithm - SSSP-Dijkstra
SSSP-Dijkstra(graph (G,w), vertex s)
InitializeSingleSource(G, s)
S
Q V[G]
while Q 0 do
u ExtractMin(Q)
S S {u}
for v Adj[u] do
Relax(u,v,w)
InitializeSingleSource(graph G, vertex s)
for v V[G] do
d[v]
p[v] 0
d[s] 0
Graph Algorithms
Dijkstra’s Algorithm - Example
1
10
2
9
3
4
7
5
2
6
Graph Algorithms
Dijkstra’s Algorithm - Example
10
2
0
5
1
9
3
4
6
7
2
Graph Algorithms
Dijkstra’s Algorithm - Example
10
10
2
0
1
9
3
4
6
7
5
5
2
Graph Algorithms
Dijkstra’s Algorithm - Example
10
10
2
0
1
9
3
4
6
7
5
5
2
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
14
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
14
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
13
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
13
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
9
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm - Example
8
10
2
0
1
9
9
3
4
6
7
5
5
2
7
Graph Algorithms
Dijkstra’s Algorithm Complexity
executed (V) times
(E) times in total
(V)
(1) ?
SSSP-Dijkstra(graph (G,w), vertex s)
InitializeSingleSource(G, s)
S
Q V[G]
while Q 0 do
u ExtractMin(Q)
S S {u}
for u Adj[u] do
Relax(u,v,w)
InitializeSingleSource(graph G, vertex s)
for v V[G] do
d[v]
p[v] 0
d[s] 0
Relax(vertex u, vertex v, weight w)
if d[v] > d[u] + w(u,v) then
d[v] d[u] + w(u,v)
p[v] u
Graph Algorithms
Dijkstra’s Algorithm - Complexity
InitializeSingleSource
TI(V,E) = (V)
Relax
TR(V,E) = (1)?
SSSP-Dijkstra
T(V,E) = TI(V,E) + (V) + V (log V) + E TR(V,E) =
= (V) + (V) + V (log V) + E (1) = (E + V log V)
Graph Algorithms
Dijkstra’s Algorithm - Complexity
[Adapted from K.Wayne]
Graph Algorithms
Dijkstra’s Algorithm - Correctness
[Adapted from K.Wayne]
Graph Algorithms
Dijkstra’s Algorithm - negative weights?
[Adapted from K.Wayne]
Graph Algorithms
Bellman-Ford Algorithm - negative cycles?
[Adapted from K.Wayne]
Graph Algorithms
Bellman-Ford Algorithm - Idea
[Adapted from X.Wang]
Graph Algorithms
Bellman-Ford Algorithm - SSSP-BellmanFord
SSSP-BellmanFord(graph (G,w), vertex s)
InitializeSingleSource(G, s)
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
return true
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
5
6
-3
8
2
7
9
-4
7
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
6
-3
8
0
7
2
5
9
-4
7
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
6
6
-3
8
0
2
7
7
5
9
-4
7
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
6
6
5
-3
8
0
2
7
7
4
9
7
-4
2
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
6
2
5
-3
8
0
2
7
7
4
9
7
-4
2
Graph Algorithms
Bellman-Ford Algorithm - Example
-2
6
2
5
-3
8
0
2
7
7
4
9
-4
7
-2
Graph Algorithms
Bellman-Ford Algorithm - Complexity
executed (V) times
(E)
(E)
SSSP-BellmanFord(graph (G,w), vertex s)
InitializeSingleSource(G, s)
for i 1 to |V[G] 1| do
for (u,v) E[G] do
Relax(u,v,w)
(1)
for (u,v) E[G] do
if d[v] > d[u] + w(u,v) then
return false
return true
Graph Algorithms
Bellman-Ford Algorithm - Complexity
InitializeSingleSource
TI(V,E) = (V)
Relax
TR(V,E) = (1)?
SSSP-BellmanFord
T(V,E) = TI(V,E) + V E TR(V,E) + E =
= (V) + V E (1) + E =
= (V E)
Graph Algorithms
Bellman-Ford Algorithm - Correctness
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Bellman-Ford Algorithm - Correctness
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Bellman-Ford Algorithm - Correctness
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Bellman-Ford Algorithm - Correctness
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Shortest Paths in DAGs - SSSP-DAG
SSSP-DAG(graph (G,w), vertex s)
topologically sort vertices of G
InitializeSingleSource(G, s)
for each vertex u taken in topologically sorted order do
for each vertex v Adj[u] do
Relax(u,v,w)
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
2
3
1
7
-1
-2
4
2
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
1
7
-1
-2
4
2
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
1
7
-1
-2
4
2
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
1
7
-1
-2
4
2
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
-2
4
2
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
6
-2
4
2
4
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
6
-2
4
2
4
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
5
-2
4
2
4
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
5
-2
4
2
4
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
5
-2
4
2
3
Graph Algorithms
Shortest Paths in DAGs - Example
6
5
0
3
2
2
1
7
6
-1
5
-2
4
2
3
Graph Algorithms
Shortest Paths in DAGs - Complexity
SSSP-DAG(graph (G,w), vertex s)
topologically sort vertices of G
InitializeSingleSource(G, s)
for each vertex u taken in topologically sorted order do
for each vertex v Adj[u] do
Relax(u,v,w)
T(V,E) = (V + E) + (V) + (V) + E (1) = (V + E)
Graph Algorithms
Application of SSSP - currency conversion
[Adapted from K.Wayne]
Graph Algorithms
Application of SSSP - currency conversion
[Adapted from K.Wayne]
Graph Algorithms
Application of SSSP - currency conversion
[Adapted from K.Wayne]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
Application of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
All-Pairs Shortest Paths
Given graph (directed or undirected) G = (V,E) with
weight function w: E R find for all pairs of vertices
u,v V the minimum possible weight for path from u to v.
[Adapted from M.Jacome]
Graph Algorithms
Floyd-Warshall Algorithm - Idea
[Adapted from M.Jacome]
Graph Algorithms
Floyd-Warshall Algorithm - Idea
[Adapted from M.Jacome]
Graph Algorithms
Floyd-Warshall Algorithm - Idea
ds,t(i) – the shortest path from s to t containing only vertices
v1, ..., vi
ds,t(0) = w(s,t)
ds,t(k) =
w(s,t)
if k = 0
min{ds,t(k-1), ds,k(k-1) + dk,t(k-1)}
if k > 0
Graph Algorithms
Floyd-Warshall Algorithm - Algorithm
FloydWarshall(matrix W, integer n)
for k 1 to n do
for i 1 to n do
for j 1 to n do
dij(k) min(dij(k-1), dik(k-1) + dkj(k-1))
return D(n)
Graph Algorithms
Floyd-Warshall Algorithm - Example
W
3
1
2
7
4
1
3
8
2
-4
5
6
-5
4
0
2
3
0
4
8
0
-5
1
0
6
-4
7
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(0)
D(0)
0
2
3
0
4
8
0
-5
1
0
6
-4
7
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(1)
D(1)
0
2
3
0
4
5
8
0
-5
1
0
6
-4
7
-2
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(2)
D(2)
0
2
3
0
4
5
8
0
-5
4
1
5
0
6
-4
7
11
-2
0
0
0
0
0
0
1
0
0
0
2
0
2
0
0
0
0
2
1
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(3)
D(3)
0
2
3
0
4
-1
8
0
-5
4
1
5
0
6
-4
7
11
-2
0
0
0
0
0
0
3
0
0
0
2
0
2
0
0
0
0
2
1
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(4)
D(4)
0
3
7
2
8
3
0
4
-1
5
-1
-4
0
-5
1
4
1
5
0
6
-4
-1
3
-2
0
0
4
4
0
4
0
0
0
3
3
4
4
0
0
4
2
0
2
0
0
0
1
1
1
0
Graph Algorithms
Floyd-Warshall Algorithm - Example
(5)
D(5)
0
3
7
2
8
3
0
4
-1
5
-1
-4
0
-5
1
2
1
5
0
6
-4
-1
3
-2
0
0
4
4
0
4
0
0
0
3
3
4
4
0
0
4
5
0
2
0
0
0
1
1
1
0
Graph Algorithms
Floyd-Warshall Algorithm - Extracting the shortest paths
[Adapted from S.Cheng]
Graph Algorithms
Floyd-Warshall Algorithm - Complexity
FloydWarshall(matrix W, integer n)
for k 1 to n do
for i 1 to n do
for j 1 to n do
dij(k) min(dij(k-1), dik(k-1) + dkj(k-1))
return D(n)
3 for cycles, each executed exactly n times
T(V,E) = (n3) = (V3)
Graph Algorithms
All-Pairs Shortest Paths -Johnson's algorithm
[Adapted from M.Jacome]
Graph Algorithms
All-Pairs Shortest Paths - Reweighting
[Adapted from M.Jacome]
Graph Algorithms
All-Pairs Shortest Paths - Reweighting
[Adapted from M.Jacome]
Graph Algorithms
All-Pairs Shortest Paths - Reweighting
[Adapted from M.Jacome]
© Copyright 2026 Paperzz