Presentation is loading. Please wait.

Presentation is loading. Please wait.

Discrete Optimization Lecture 1

Similar presentations


Presentation on theme: "Discrete Optimization Lecture 1"— Presentation transcript:

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 = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v)
4 2 Choose u = argminvU 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 = argminvU d(v) Stop.
4 2 Choose u = argminvU 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 = argminvU 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 = argminvU 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


Download ppt "Discrete Optimization Lecture 1"

Similar presentations


Ads by Google