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) withweight 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 - RelaxRelax(vertex u, vertex v, weight w)
if d[v] > d[u] + w(u,v) thend[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-DijkstraSSSP-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
10
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
10
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
10
10
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
10
10
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
1410
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
1410
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
1310
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
1310
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
910
1
5
2
649
7
2 3
Graph Algorithms
Dijkstra’s Algorithm - Example
0
5
8
7
910
1
5
2
649
7
2 3
Graph AlgorithmsDijkstra’s Algorithm - Complexity
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
(V)
(1) ?
(E) times in total
executed (V) times
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 AlgorithmsBellman-Ford Algorithm - negative cycles?
[Adapted from K.Wayne]
Graph Algorithms
Bellman-Ford Algorithm - Idea
[Adapted from X.Wang]
Graph AlgorithmsBellman-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] doRelax(u,v,w)
for (u,v) E[G] doif d[v] > d[u] + w(u,v) then
return falsereturn true
Graph Algorithms
Bellman-Ford Algorithm - Example
6
7
7-3
2
8-4
9
5-2
Graph Algorithms
Bellman-Ford Algorithm - Example
0
6
7
7-3
2
8-4
9
5-2
Graph Algorithms
Bellman-Ford Algorithm - Example
0
7
6
6
7
7-3
2
8-4
9
5-2
Graph Algorithms
Bellman-Ford Algorithm - Example
0
7
6
2
46
7
7-3
2
8-4
9
5-2
Graph Algorithms
Bellman-Ford Algorithm - Example
0
7
2
2
46
5
7
7-3
2
8
-2
-4
9
Graph Algorithms
Bellman-Ford Algorithm - Example
0
7
2
-2
46
5
7
7-3
2
8
-2
-4
9
Graph Algorithms
Bellman-Ford Algorithm - Complexity
SSSP-BellmanFord(graph (G,w), vertex s)InitializeSingleSource(G, s)for i 1 to |V[G] 1| do
for (u,v) E[G] doRelax(u,v,w)
for (u,v) E[G] doif d[v] > d[u] + w(u,v) then
return falsereturn true
executed (V) times
(E)
(E)
(1)
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
5 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
0 5 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
0 5 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
0 5 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 6 4 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 6 4 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 5 4 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 5 4 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 5 3 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Example
6 5 3 0 25 2 7 -1 -2
6 1
3 42
Graph Algorithms
Shortest Paths in DAGs - Complexity
T(V,E) = (V + E) + (V) + (V) + E (1) = (V + E)
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 AlgorithmsApplication of SSSP - currency conversion
[Adapted from K.Wayne]
Graph AlgorithmsApplication of SSSP - currency conversion
[Adapted from K.Wayne]
Graph AlgorithmsApplication of SSSP - currency conversion
[Adapted from K.Wayne]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph AlgorithmsApplication of SSSP - constraint satisfaction
[Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms
All-Pairs Shortest PathsGiven graph (directed or undirected) G = (V,E) withweight 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
2
45
1 3
3 4
-4 -5
6
7 1
82
0 3 8 -4
0 1 7
4 0 2 -5 0 6 0
W
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 8 -4
0 1 7
4 0 2 -5 0 6 0
0 0 0 0
0 0 0
0 0
0 0 0
0 0
D(0) (0)
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 8 -4
0 1 7
4 0 2 5 -5 0 -2
6 0
0 0 0 0
0 0 0
0 0
0 1 0 0 1
0 0
D(1) (1)
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 8 4 -4
0 1 7
4 0 5 11
2 5 -5 0 -2
6 0
0 0 0 2 0
0 0 0
0 0 2 2
0 1 0 0 1
0 0
D(2) (2)
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 8 4 -4
0 1 7
4 0 5 11
2 -1 -5 0 -2
6 0
0 0 0 2 0
0 0 0
0 0 2 2
0 3 0 0 1
0 0
D(3) (3)
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 -1 4 -4
3 0 -4 1 -1
7 4 0 5 3
2 -1 -5 0 -2
8 5 1 6 0
0 0 4 2 0
4 0 4 0 1
4 0 0 2 1
0 3 0 0 1
4 3 4 0 0
D(4) (4)
Graph Algorithms
Floyd-Warshall Algorithm - Example
0 3 -1 2 -4
3 0 -4 1 -1
7 4 0 5 3
2 -1 -5 0 -2
8 5 1 6 0
0 0 4 5 0
4 0 4 0 1
4 0 0 2 1
0 3 0 0 1
4 3 4 0 0
D(5) (5)
Graph AlgorithmsFloyd-Warshall Algorithm - Extracting the shortest paths
[Adapted from S.Cheng]
Graph Algorithms
Floyd-Warshall Algorithm - Complexity
T(V,E) = (n3) = (V3)
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
Graph AlgorithmsAll-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]