Download presentation
Presentation is loading. Please wait.
1
Discrete Optimization Lecture 1
Shortest paths Slides courtesy of M. Pawan Kumar Slides available online
2
Outline Graph Preliminaries Complexity Preliminaries
Undirected Graphs Directed Graphs Complexity Preliminaries Shortest Path Algorithms
3
Undirected Graphs G = (V, E) ‘n’ vertices or nodes V
‘m’ edges E: unordered pairs from V
4
Neighboring or Adjacent Vertices
G = (V, E) v1 v4 v2 v5 v3 v6 Connected by an edge e = (u,v) = (v,u). ‘v0’ and ‘v1’ adjacent, ‘v0’ and ‘v5’ not adjacent, …
5
Parallel Edges G = (V, E) Represented by the same pair of vertices. v0
6
Loops G = (V, E) Edges that connect a vertex to itself. v0 v1 v4 v2 v5
7
Simple Graphs v0 G = (V, E) v1 v4 v2 v5 v3 v6 Graphs without parallel edges and without loops.
8
Degree of a Vertex G = (V, E) Number of edges incident on the vertex.
deg(v0) = 2, deg(v1) = 2, deg(v4) = 3, …
9
Walk G = (V, E) Sequence P = (v0,e1,v1,…,ek,vk), ei = (vi-1,vi)
v0, (v0,v4), v4, (v4,v2), v2, (v2,v5), v5, (v5,v4), v4
10
Path G = (V, E) Sequence P = (v0,e1,v1,…,ek,vk), ei = (vi-1,vi)
Vertices v0,v1,…,vk are distinct
11
Length of a Walk G = (V, E) Number of edges: k
Length of above walk = 5
12
Length of a Walk G = (V, E) l: E R
2 4 v1 v4 l: E R 2 1 1 5 v2 v5 1 -2 v3 v6 4 Sum of lengths of all edges: Σi l(ei) Length of above walk = = 13
13
Closed Walk G = (V, E) Sequence P = (v0,e1,v1,…,ek,vk), ei = (vi-1,vi)
v0 = vk
14
Circuit G = (V, E) Sequence P = (v0,e1,v1,…,ek,vk), ei = (vi-1,vi)
v0 = vk Vertices v0,v1,…,vk-1 are distinct
15
Outline Graph Preliminaries Complexity Preliminaries
Undirected Graphs Directed Graphs Complexity Preliminaries Shortest Path Algorithms
16
Directed Graphs (Digraphs)
v0 D = (V, A) v1 v4 v2 v5 v3 v6 ‘n’ vertices or nodes V ‘m’ arcs A: ordered pairs from V
17
Neighboring or Adjacent Vertices
D = (V, A) v1 v4 v2 v5 v3 v6 Connected by an arc a = (u,v). ‘v0’ is the inneighbor of ‘v4’
18
Neighboring or Adjacent Vertices
D = (V, A) v1 v4 v2 v5 v3 v6 Connected by an arc a = (u,v). ‘v4’ is the outneighbor of ‘v0’
19
Parallel Arcs v0 D = (V, A) v1 v4 v2 v5 v3 v6 Represented by the same ordered pair of vertices.
20
Loops D = (V, A) Arcs that connect a vertex to itself. v0 v1 v4 v2 v5
21
Simple Graphs v0 D = (V, A) v1 v4 v2 v5 v3 v6 Graphs without parallel arcs and without loops.
22
Underlying Undirected Graph
v0 D = (V, A) v1 v4 v2 v5 v3 v6 Graphs obtained by ignoring orientation of arcs.
23
Underlying Undirected Graph
v0 G = (V, E) v1 v4 v2 v5 v3 v6 Graphs obtained by ignoring orientation of arcs.
24
Indegree of a Vertex D = (V, A) Number of arcs entering the vertex.
indeg(v0) = 1, indeg(v1) = 1, indeg(v4) = 2, …
25
Outdegree of a Vertex D = (V, A) Number of arcs leaving the vertex.
outdeg(v0) = 1, outdeg(v1) = 1, outdeg(v2) = 2, …
26
Walk D = (V, A) Sequence P = (v0,a1,v1,…,ak,vk), ai = (vi-1,vi)
v0, (v0,v4), v4, (v4,v5), v5, (v5,v2), v2, (v2,v4), v4
27
Path D = (V, A) Sequence P = (v0,a1,v1,…,ak,vk), ai = (vi-1,vi)
Vertices v0,v1,…,vk are distinct
28
Length of a Walk D = (V, A) Number of arcs: k Length of above walk = 4
29
Length of a Walk D = (V, A) l: E R
2 4 v1 v4 l: E R 2 1 1 5 v2 v5 1 -2 v3 v6 4 Sum of lengths of all edges: Σi l(ei) Length of above walk = = 11
30
Closed Walk D = (V, A) Sequence P = (v0,a1,v1,…,ak,vk), ai = (vi-1,vi)
v0 = vk
31
Circuit D = (V, A) Sequence P = (v0,a1,v1,…,ak,vk), ai = (vi-1,vi)
v0 = vk Vertices v0,v1,…,vk-1 are distinct
32
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms
33
✔ ✗ f(n) O(g(n)) There exists k > 0 and n0 such that
f(n) ≤ k g(n) for all n ≥ n0 f(n) = 5n2 + 3nlog(n) f(n) = 5n3 + 3nlog(n) g(n) = n2 g(n) = n2 ✔ ✗
34
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms Breadth-first Search Dijkstra’s Method Bellman-Ford Method Floyd-Warshall Method
35
The Shortest Path Problem
Find the shortest path from s to t v0 Length of path = Number of arcs v1 v4 v2 v5 v3 v6 v7
36
The Shortest Path Problem
Find the shortest path from s to t v0 3 2 -1 Length of path = Σ Length of arcs v1 v4 3 1 2 6 v2 v5 3 5 -3 v3 2 v6 1 7 v7
37
Applications Minimize number of stops (lengths = 1) Minimize amount
of time (positive lengths)
38
Applications Convert 1 ounce of gold to US dollars
1 GOLD = * * = USD Take log to convert products to sums (possibly negative lengths) GBP EUR JPY CHF USD GOLD 1.0 0.6853 0.4569 0.6368 208.1 1.4599 0.6677 0.9303 189.05 129.52 120.4 2.1904 1.4978 1.3941 455.2 1.5714 1.0752 0.7182 327.25 Example courtesy of Robert Sedgewick
39
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms Breadth-first Search Dijkstra’s Method Bellman-Ford Method Floyd-Warshall Method
40
Breadth-First Search D = (V, A) s Assumption: all lengths = 1
Length of path = Number of arcs v2 v5 |V| = n, |A| = m v3 v6 v7
41
Breadth-First Search Shortest path to all vertices from ‘s’
Queue is empty. All nodes unvisited. Push ‘s’ to queue. Set length(s) = 0. While (‘t’ is unvisited) Pop u from queue. Length(unvisited outneighbors) = Length(u)+1 Push unvisited outneighbors to queue End Shortest path to all vertices from ‘s’
42
Breadth-First Search s Queue Length Populate the queue with ‘s’
v0 Length of ‘s’ = 0. v1 v4 v2 v5 Queue v0 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 v7
43
Breadth-First Search u = v0 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v1 v4 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 v7
44
Breadth-First Search u = v1 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v4 v2 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 2 v7
45
Breadth-First Search u = v4 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v2 v5 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 2 v7
46
Breadth-First Search u = v2 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v5 v3 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 2 3 v7
47
Breadth-First Search u = v5 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v3 v6 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 2 3 v7
48
Breadth-First Search u = v3 s Queue Length Pop from the queue.
Length(unvisited outneighbors) = Length(u) + 1 v1 v4 Push unvisited outneighbors to queue. v2 v5 Queue v6 v3 v6 Length v0 v1 v2 v3 v4 v5 v6 v7 1 2 3 4 v7
49
Breadth-First Search Shortest path to all vertices from ‘s’
Queue is empty. All nodes unvisited. Push ‘s’ to queue. Set length(s) = 0. While (‘t’ is unvisited) Pop u from queue. Length(unvisited outneighbors) = Length(u)+1 Push unvisited outneighbors to queue End Shortest path to all vertices from ‘s’
50
Analysis Time Complexity : O( n + m ) Queue operations
At most ‘n’ elements in the queue In the worst case, all arcs will be visited once
51
How fast is O( n + m )? Complexity of this type is called linear.
Just reading the data from disk is also linear. My laptop does 107 addition in 2 seconds (python) Graphs with 105 edges are tractable.
52
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms Breadth-first Search Dijkstra’s Method Bellman-Ford Method Floyd-Warshall Method
53
Dijkstra’s Method D = (V, A) Assumption: No negative arc lengths
4 2 D = (V, A) 1 v1 v4 Assumption: No negative arc lengths 3 1 2 6 v2 v5 Length of path = Σ arc lengths = Σ l(u,v) 3 5 3 v3 2 v6 |V| = n, |A| = m 1 7 v7
54
Breadth-First Search Fails
v0 4 2 1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 1 7 v7
55
Breadth-First Search Fails
v0 Counter-example !! 4 2 1 v1 v4 Blue with shorter than red. 3 1 2 6 v2 v5 3 5 3 v3 2 v6 1 7 v7
56
Dijkstra’s Method Set d(v) = ∞ for all v V. Set U = V.
Set d(s) = 0. Set u = s. While u is not equal to t Choose u = argminvU d(v) For each v such that (u,v) A d(v) = min { d(v), d(u) + l(u,v)} End Set U = U \ {u} End
57
Dijkstra’s Method Set U = V; Set d(s) = 0 s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 ∞ v7
58
Dijkstra’s Method Set U = V s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 4 ∞ 2 v7
59
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 4 ∞ 2 v7
60
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 4 ∞ 2 v7
61
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 4 v7
62
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 4 v7
63
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 4 v7
64
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 2 v7
65
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 2 v7
66
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 2 v7
67
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 2 ∞ v7
68
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 2 ∞ v7
69
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 2 ∞ v7
70
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 ∞ v7
71
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 ∞ v7
72
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 ∞ v7
73
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
74
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
75
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
76
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v)
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 For each v such that (u,v) A 6 v2 v5 d(v) = min { d(v), d(u) + l(u,v)} 3 5 3 End v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
77
Dijkstra’s Method Set U = U \ {u} s d: Over-estimation of distance 4 2
1 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
78
Dijkstra’s Method Set U = U \ {u} s Choose u = argminvU d(v) Stop.
4 2 Choose u = argminvU d(v) 1 v1 v4 3 1 2 Stop. 6 v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
79
Summary Set d(v) = ∞ for all v V. Set U = V.
Set d(s) = 0. Set u = s. While u is not equal to t Choose u = argminvU d(v) For each v such that (u,v) A d(v) = min { d(v), d(u) + l(u,v)} End Set U = U \ {u} End
80
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 ∞ v7
81
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 ∞ v7
82
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 ∞ v7
83
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 4 ∞ 2 v7
84
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 4 ∞ 2 v7
85
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 4 v7
86
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 4 v7
87
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 2 v7
88
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 2 v7
89
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 2 ∞ v7
90
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 2 ∞ v7
91
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 ∞ v7
92
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A ∞ v2 v5 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 ∞ v7
93
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
94
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
95
Dijkstra’s Method - Path
v0 4 2 1 v1 v4 3 Predecessor 1 2 6 v0 v1 v2 v3 v4 v5 v6 v7 N/A v2 v5 3 5 3 v3 2 v6 d: Over-estimation of distance 1 7 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 2 8 v7
96
Time Complexity Maximum ‘n’ iterations Each iteration is O(n)
Total time complexity = O(n2) Graphs with up to 1000 nodes
97
Can we do faster? Yes, we can do O( (n + m) log n )
We need a data structure to store d: priority queue or heap It allows 2 operations on elements: Popping the minimum in O(log n) Modifying an element in O(log n)
98
Data structure: heap Binary tree, where each node is smaller than its children Minimum is always at the root Shape: balanced tree 5 1 3 4 9 8 Binary tree can be implemented with an array: 1 2 3 4 5 6 9 8
99
Heap: adding elements When adding an element
5 1 3 4 9 8 When adding an element we check its parent to keep the heap properties.
100
Heap: adding elements When adding an element
5 1 4 3 9 8 When adding an element we check its parent to keep the heap properties.
101
Heap: adding elements When adding an element
5 1 4 3 9 8 When adding an element we check its parent to keep the heap properties.
102
Heap: popping elements
5 3 1 4 9 8 When popping an element we replace the root with the last element. We check its children to keep the heap properties.
103
Heap: popping elements
5 1 3 4 9 8 When popping an element we replace the root with the last element. We check its children to keep the heap properties.
104
Dijkstra’s Method with heap
Set d(v) = ∞ for all v V. Set U = V. Set d(s) = 0. Set u = s. Init heap While u is not equal to t Pop from heap u = argminvU d(v) For each v such that (u,v) A d(v) = min { d(v), d(u) + l(u,v)} Update d(v) in the heap End Set U = U \ {u} End
105
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms Breadth-first Search Dijkstra’s Method Bellman-Ford Method Floyd-Warshall Method
106
Bellman-Ford Method D = (V, A) Assumption: No negative
3 2 D = (V, A) -2 v1 v4 Assumption: No negative length directed circuits. 3 1 2 6 v2 v5 3 5 3 Length of path = Σ arc lengths = Σ l(u,v) v3 2 v6 1 7 v7 |V| = n, |A| = m
107
Dijkstra’s Method Fails
v0 3 2 -2 v1 v4 3 1 2 6 v2 v5 3 5 3 v3 2 v6 1 7 v7
108
Dijkstra’s Method Fails
v0 If s = v0, u = v4 in the first iteration 3 2 -2 v1 v4 3 1 2 d(u) > dist(u) 6 v2 v5 3 5 3 v3 2 v6 1 7 v7
109
Bellman-Ford Method s v0 v0 Let dk(t) = minimum length s-t walk traversing at most k arcs. 3 2 -2 v1 v4 3 1 2 6 dk+1(t) = minimum of dk(t), min(u,t) A dk(u) + l(u,t) v2 v5 3 5 3 v3 2 v6 1 7 v7 v7
110
Bellman-Ford Method k = 0. dk(s) = 0 While (k < n) dk+1(t) = dk(t)
For each (u,v) A dk+1(v) = min { dk+1(v), dk(u) + l(u,v) } End k = k + 1 End
111
Bellman-Ford Method k = 0 s dk dk+1 Predecessor 3 2 -2 ∞ 3 1 2 6 3 ∞ 5
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
112
Bellman-Ford Method k = 0 s dk dk+1 Predecessor 3 2 -2 ∞ 3 1 2 6 3 3 ∞
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
113
Bellman-Ford Method k = 0 s dk dk+1 Predecessor 3 2 -2 ∞ 3 1 2 6 3 3 ∞
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
114
Bellman-Ford Method k = 0 s dk dk+1 Predecessor 3 2 -2 ∞ 3 1 2 6 3 3 ∞
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
115
Bellman-Ford Method k = 0 s dk dk+1 Predecessor 3 2 -2 ∞ 3 1 2 6 3 3 ∞
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
116
Bellman-Ford Method k = 0 All other dk+1 are ∞ s dk dk+1 Predecessor 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
117
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
118
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
119
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
120
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
121
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
122
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
123
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
124
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
125
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
126
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
127
Bellman-Ford Method k = k +1 = 1 s dk dk+1 Predecessor 3 2 -2 3 ∞ 2 3
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 ∞ 2 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
128
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
129
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
130
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
131
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
132
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
133
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
134
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
135
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
136
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
137
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
138
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
139
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
140
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
141
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
142
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
143
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
144
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
145
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 9 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
146
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
147
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
148
Bellman-Ford Method k = k +1 = 2 s dk dk+1 Predecessor 3 2 -2 3 4 ∞ 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 ∞ 1 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 1 ∞ 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
149
Bellman-Ford Method k = k +1 = 3 s dk dk+1 Predecessor 3 2 -2 3 4 7 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 7 1 ∞ 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 8 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
150
Bellman-Ford Method k = k +1 = 4 s dk dk+1 Predecessor 3 2 -2 3 4 6 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 8 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
151
Bellman-Ford Method k = k +1 = 5 s dk dk+1 Predecessor 3 2 -2 3 4 6 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
152
Bellman-Ford Method k = k +1 = 6 s dk dk+1 Predecessor 3 2 -2 3 4 6 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
153
Bellman-Ford Method k = k +1 = 7 s dk dk+1 Predecessor 3 2 -2 3 4 6 1
v0 v0 3 2 dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
154
Bellman-Ford Method k = k +1 = 8 s Stop after ‘n’ iterations dk dk+1
v0 v0 3 2 Stop after ‘n’ iterations dk -2 v1 v4 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 3 1 2 6 v2 v5 dk+1 3 v0 v1 v2 v3 v4 v5 v6 v7 3 4 6 1 7 5 3 v3 2 v6 Predecessor 1 7 v0 v1 v2 v3 v4 v5 v6 v7 N/A v7 v7
155
Summary k = 0. dk(s) = 0 While (k < n) dk+1(t) = dk(t)
For each (u,v) A dk+1(v) = min { dk+1(v), dk(u) + l(u,v) } End k = k + 1 End
156
Time Complexity O( n m ) Outer iteration Run ‘n’ times Inner Iteration
O(m) operations
157
Outline Graph Preliminaries Complexity Preliminaries
Shortest Path Algorithms Breadth-first Search Dijkstra’s Method Bellman-Ford Method Floyd-Warshall Method
158
Floyd-Warshall Method
All-pairs shortest paths. v0 3 2 3 D = (V, A) -2 v1 v3 3 Assumption: No negative length directed circuits. 1 2 2 6 v2 v4 Length of path = Σ arc lengths = Σ l(u,v) |V| = n, |A| = m
159
Bellman-Ford Method’s Complexity
v0 3 2 3 O(n2m) -2 v1 v3 3 1 2 2 6 Apply Bellman-Ford ‘n’ times v2 v4
160
Floyd-Warshall Method
v0 Let dk(s,t) = minimum length s-t walk using only {s,t,v0,…,vk-1}. 3 2 3 -2 v1 v3 3 1 2 2 6 dk+1(s,t) = minimum of dk(s,t), dk(s,vk) + dk(vk,t) v2 v4
161
Floyd-Warshall Method
k = 0. dk(i,j) = l(i,j) if (i,j) A, otherwise ∞ While (k < n) For each i V For each j V dk+1(i,j) = min { dk(i,j), dk(i,vk-1) + dk(vk-1,j)} End End k = k + 1 End
162
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v0,v1) = minimum of d0(v0,v1), d0(v0,v0) + d0(v0,v1)
163
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v0,v2) = minimum of d0(v0,v2), d0(v0,v0) + d0(v0,v2) 3
164
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v0,v3) = minimum of d0(v0,v3), d0(v0,v0) + d0(v0,v3) 3 ∞
165
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v0,v4) = minimum of d0(v0,v4), d0(v0,v0) + d0(v0,v4) 3 ∞
166
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v1,v0) = minimum of d0(v1,v0), d0(v1,v0) + d0(v0,v0) 3 ∞
167
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v1,v2) = minimum of d0(v1,v2), d0(v1,v0) + d0(v0,v2) 3 ∞
168
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v1,v3) = minimum of d0(v1,v3), d0(v1,v0) + d0(v0,v3) 3 ∞ 1
169
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v1,v4) = minimum of d0(v1,v4), d0(v1,v0) + d0(v0,v4) 3 ∞ 1 -2
170
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v2,v0) = minimum of d0(v2,v0), d0(v2,v0) + d0(v0,v0) 3 ∞ 1 -2
171
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v2,v1) = minimum of d0(v2,v1), d0(v2,v0) + d0(v0,v1) 3 ∞ 1 -2
172
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v2,v3) = minimum of d0(v2,v3), d0(v2,v0) + d0(v0,v3) 3 ∞ 1 -2 2
173
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v2,v4) = minimum of d0(v2,v4), d0(v2,v0) + d0(v0,v4) 3 ∞ 1 -2 2
174
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v3,v0) = minimum of d0(v3,v0), d0(v3,v0) + d0(v0,v0) 3 ∞ 1 -2 2
175
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v3,v1) = minimum of d0(v3,v1), d0(v3,v0) + d0(v0,v1) 3 ∞ 1 -2 2
176
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v3,v2) = minimum of d0(v3,v2), d0(v3,v0) + d0(v0,v2) 3 ∞ 1 -2 2 5
177
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v3,v4) = minimum of d0(v3,v4), d0(v3,v0) + d0(v0,v4) 3 ∞ 1 -2 2 5
178
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v4,v0) = minimum of d0(v4,v0), d0(v4,v0) + d0(v0,v0) 3 ∞ 1 -2 2 5
179
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v4,v1) = minimum of d0(v4,v1), d0(v4,v0) + d0(v0,v1) 3 ∞ 1 -2 2 5
180
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v4,v2) = minimum of d0(v4,v2), d0(v4,v0) + d0(v0,v2) 3 ∞ 1 -2 2 5
181
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 d1(v4,v3) = minimum of d0(v4,v3), d0(v4,v0) + d0(v0,v3) 3 ∞ 1 -2 2 5 6
182
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d1 3 ∞ 1 -2 2 5 6
183
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v0,v1) = minimum of d1(v0,v1), d1(v0,v1) + d1(v1,v0)
184
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v0,v2) = minimum of d1(v0,v2), d1(v0,v1) + d1(v1,v2) 3
185
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v0,v3) = minimum of d1(v0,v3), d1(v0,v1) + d1(v1,v3) 3 4
186
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v0,v4) = minimum of d1(v0,v4), d1(v0,v1) + d1(v1,v4) 3 4 1
187
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v1,v0) = minimum of d1(v1,v0), d1(v1,v1) + d1(v1,v0) 3 4 1 ∞
188
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v1,v2) = minimum of d1(v1,v2), d1(v1,v1) + d1(v1,v2) 3 4 1 ∞
189
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v1,v3) = minimum of d1(v1,v3), d1(v1,v1) + d1(v1,v3) 3 4 1 ∞
190
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v1,v4) = minimum of d1(v1,v4), d1(v1,v1) + d1(v1,v4) 3 4 1 ∞ -2
191
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v2,v0) = minimum of d1(v2,v0), d1(v2,v1) + d1(v1,v0) 3 4 1 ∞ -2
192
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v2,v1) = minimum of d1(v2,v1), d1(v2,v1) + d1(v1,v1) 3 4 1 ∞ -2
193
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v2,v3) = minimum of d1(v2,v3), d1(v2,v1) + d1(v1,v3) 3 4 1 ∞ -2 2
194
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v3,v0) = minimum of d1(v3,v0), d1(v3,v1) + d1(v1,v0) 3 4 1 ∞ -2 2
195
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v3,v1) = minimum of d1(v3,v1), d1(v3,v1) + d1(v1,v1) 3 4 1 ∞ -2 2
196
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v3,v2) = minimum of d1(v3,v2), d1(v3,v1) + d1(v1,v2) 3 4 1 ∞ -2 2 5
197
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v3,v4) = minimum of d1(v3,v4), d1(v3,v1) + d1(v1,v4) 3 4 1 ∞ -2 2 5 6
198
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v4,v0) = minimum of d1(v4,v0), d1(v4,v1) + d1(v1,v0) 3 4 1 ∞ -2 2 5 6
199
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v4,v1) = minimum of d1(v4,v1), d1(v4,v1) + d1(v1,v1) 3 4 1 ∞ -2 2 5 6
200
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v4,v2) = minimum of d1(v4,v2), d1(v4,v1) + d1(v1,v2) 3 4 1 ∞ -2 2 5 6
201
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 d2(v4,v3) = minimum of d1(v4,v3), d1(v4,v1) + d1(v1,v3) 3 4 1 ∞ -2 2 5 6
202
Floyd-Warshall Method
v0 3 2 3 ∞ 1 -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d2 3 4 1 ∞ -2 2 5 6
203
Floyd-Warshall Method
v0 3 2 3 4 1 ∞ -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d3
204
Floyd-Warshall Method
v0 3 2 3 4 1 ∞ -2 2 5 6 3 -2 v1 v3 3 1 2 2 6 v2 v4 d3 3 4 1 ∞ -2 2 5 6 8
205
Floyd-Warshall Method
v0 3 2 3 4 1 ∞ -2 2 5 6 8 3 -2 v1 v3 3 1 2 2 6 v2 v4 d4 3 4 1 -2 2 5 6 8
206
Floyd-Warshall Method
v0 3 2 3 4 1 -2 2 5 6 8 3 -2 v1 v3 3 1 2 2 6 v2 v4 d5 3 4 1 -2 2 5 6 8
207
Summary k = 0. dk(i,j) = l(i,j) if (i,j) A, otherwise ∞
While (k < n) For each i V For each j V dk+1(i,j) = min { dk(i,j), dk(i,vk-1) + dk(vk-1,j)} End End k = k + 1 End
208
Time Complexity O( n3) Outer iteration Run ‘n’ times Inner Iteration
O(n2) operations: O(1) for each pair of vertices
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.