VIEWS: 11 PAGES: 69 POSTED ON: 3/22/2012
Algorithms Shortest Path Problems CS 8833 Algorithms G = (V, E) weighted directed graph w: ER weight function Weight of a path p = <v0, v1,. . ., vn> n w( p ) w(vi 1v) i 1 Shortest path weight from u to v p min{w( p) : u v} if a u, v path exits (u, v) otherwise Shortest path from u to v: Any path from u to v with w(p) = (u,v) [v] predecessor of v on a path CS 8833 Algorithms CS 8833 Algorithms Variants Single-source shortest paths: find shortest paths from source vertex to every other vertex Single-destination shortest paths: find shortest paths to a destination from every vertex Single-pair shortest-path find shortest path from u to v All pairs shortest paths CS 8833 Algorithms Lemma 25.1 Subpaths of shortest paths are shortest paths. Given G=(G,E) w: E R Let p = p = <v1, v2,. . ., vk> be a shortest path from v1 to vk For any i,j such that 1 i j k, let pij be a subpath from vi to vj.. Then pij is a shortest path from vi to vj. CS 8833 Algorithms p 1 i j k CS 8833 Algorithms Corollary 25.2 Let G = (V,E) w: E R Suppose shortest path p from a source s to vertex v can be decomposed into p’ s u v for vertex u and path p’. Then weight of the shortest path from s to v is (s,v) = (s,u) + w(u,v) CS 8833 Algorithms Lemma 25.3 Let G = (V,E) w: E R Source vertex s For all edges (u,v) E (s,v) (s,u) + w(u,v) CS 8833 Algorithms u1 u2 s u3 v u4 un CS 8833 Algorithms Relaxation Shortest path estimate d[v] is an attribute of each vertex which is an upper bound on the weight of the shortest path from s to v Relaxation is the process of incrementally reducing d[v] until it is an exact weight of the shortest path from s to v CS 8833 Algorithms INITIALIZE-SINGLE-SOURCE(G, s) 1. for each vertex v V(G) 2. do d[v] 3. [v] nil 4. d[s] 0 CS 8833 Algorithms CS 8833 Algorithms Relaxing an Edge (u,v) Question: Can we improve the shortest path to v found so far by going through u? If yes, update d[v] and [v] CS 8833 Algorithms RELAX(u,v,w) 1. if d[v] > d[u] + w(u,v) 2. then d[v] d[u] + w(u,v) 3. [v] u CS 8833 Algorithms EXAMPLE 1 s s Relax v u v u CS 8833 Algorithms EXAMPLE 2 s s Relax v u v u CS 8833 Algorithms Dijkstra’s Algorithm Problem: – Solve the single source shortest-path problem on a weighted, directed graph G(V,E) for the cases in which edge weights are non-negative CS 8833 Algorithms Dijkstra’s Algorithm Approach – maintain a set S of vertices whose final shortest path weights from the source s have been determined. – repeat » select vertex from V-S with the minimum shortest path estimate » insert u in S » relax all edges leaving u CS 8833 Algorithms DIJKSTRA(G,w,s) 1. INITIALIZE-SINGLE-SOURCE(G,s) 2. S 3. Q V[G] 4. while Q 5. do u EXTRACT-MIN(Q) 6. S S {u} 7. for each vertex v Adj[u] 8. do RELAX(u,v,w) CS 8833 Algorithms CS 8833 Algorithms Analysis of Dijkstra’s Algorithm Suppose priority Q is: – an ordered (by d) linked list » Building the Q O(V lg V) » Each EXTRACT-MIN O(V) » This is done V times O(V2) » Each edge is relaxed one time O(E) » Total time O(V2 + E) = O(V2) CS 8833 Algorithms Analysis of Dijkstra’s Algorithm Suppose priority Q is: – a binary heap » BUILD-HEAP O(V) » Each EXTRACT-MIN O(lg V) » This is done V times O(V lg V) » Each edge is relaxation O(lg V) » Each edge relaxed one time O(E lg V) » Total time O(V lg V + E lg V)) CS 8833 Algorithms Properties of Relaxation Lemma 25.4 G=(V,E) w: E R (u,v) E After relaxing edge (u,v) by executing RELAX(u,v,w) we have d[v] d[u] + w(u,v) CS 8833 Algorithms Lemma 25.5 – Given: G=(V,E) w: E R source s V Graph initialized by INITIALIZE-SINGLE-SOURCE(G,s) – then d[v] (s,v) for all v V and this invariant is maintained over all relaxation steps Once d[v] achieves a lower bound (s,v), it never changes CS 8833 Algorithms Corollary 25.6 – Given: G=(V,E) w: E R source s V No path connects s to given v – then after initialization d[v] (s,v) and this inequality is maintained over all relaxation steps. CS 8833 Algorithms Lemma 25.7 – Given: G=(V,E) w: E R source s V Let s - - u v be the shortest path in G for all vertices u and v. Suppose G initialized by INITIALIZE- SINGLE-SOURCE is followed by a sequence of relaxations including RELAX(u,v,w) – Then d[u] = (s,u) prior to call implies that d[u] = (s,u) after the call CS 8833 Algorithms Bottom Line Therefore, relaxation causes the shortest path estimates to descend monotonically toward the actual shortest-path weights. CS 8833 Algorithms Shortest-Paths Tree of G(V,E) The shortest-paths tree at S of G(V,E) is a directed subgraph G’-(V’,E’), where V’ V, E’E, such that – V’ is the set of vertices reachable from S in G – G’ forms a rooted tree with root s, and – for all v V’, the unique simple path from s to v in G’ is a shortest path from s to v in G CS 8833 Algorithms Goal We want to show that successive relaxations will yield a shortest-path tree CS 8833 Algorithms Lemma 25.8 – Given: G=(V,E) w: E R source s V Assume that G contains no negative- weight cycles reachable from s. – Then after the graph is initialized with INITIALIZE-SINGLE-SOURCE • the predecessor subgraph G forms a rooted tree with root s, and • any sequence of relaxation steps on edges in G maintains this property as an invariant. CS 8833 Algorithms Algorithms Bellman-Ford Algorithm Directed-Acyclic Graphs All Pairs-Shortest Path Algorithm CS 8833 Algorithms Why does Dijkstra’s greedy algorithm work? Because we know that when we add a node u to the set S, the value d is the length of the shortest path from s to u. But, this only works if the edges of the graph are nonnegative. CS 8833 Algorithms a 7 10 b c -4 Would Dikjstra’s Algorithm work with this graph? CS 8833 Algorithms a 7 6 b c -14 What is the length of the shortest path from a to c in this graph? CS 8833 Algorithms Bellman-Ford Algorithm The Bellman-Ford algorithm can be used to solve the general single source shortest path problem Negative weights are allowed The algorithm detects negative cycles and returns false if the graph contains one. CS 8833 Algorithms BELLMAN-FORD(G,w,s) 1 INITIALIZE-SINGLE-SOURCE(G,s) 2 for i 1 to |V[G]| -1 3 do for each edge (u,v) E[G] 4 do RELAX(u,v,w) 5 for each edge (u,v) E[G] 6 do if d[v] > d[u] + w(u,v) 7 then return false 8 return true CS 8833 Algorithms When there are no cycles of negative length, what is maximum number of edges in a shortest path when the graph has |V[G]| vertices and |E[G]| edges? CS 8833 Algorithms Dynamic Programming Formulation The following recurrence shows how the Bellman Ford algorithm computes the d values for paths of length k. dk [u] min{dk 1[u], min{distk 1[i] w(i, u)}} i CS 8833 Algorithms a 7 10 Processing order 1 2 3 b c (a,c) -4 (b,a) 9 -5 (c,b) d (c,d) (d,b) CS 8833 Algorithms Complexity of the Bellman Ford Algorithm Time complexity: Performance can be improved by – adding a test to the loop to see if any d values were updated on the previous iteration, or – maintain a queue of vertices whose d value changed on the previous iteration-only process these on the next iteration CS 8833 Algorithms Single-source shortest paths in directed acyclic graphs Topological sorting is the key to efficient algorithms for many DAG applications. A topological sort of a DAG is a linear ordering of all of its vertices such that if G contains an edge (u,v), then u appears before v in the ordering. CS 8833 Algorithms b e a c g d f a d c b e f g CS 8833 Algorithms DAG-SHORTEST-PATHS(G,w,s) 1 topologically sort the vertices of G 2 INITIALIZE-SINGLE-SOURCE(G,s) 3 for each vertex u taken in topological order 4 do for each vertex v Adj[u] 5 do RELAX(u,v,w) CS 8833 Algorithms Topological Sorting TOPOLOGICAL-SORT(G) 1 call DFS(G) to compute finishing times f[v] for each vertex v 2 as each vertex is finished, insert it onto the front of a linked list 3 return the linked list of vertices CS 8833 Algorithms Depth-first search Goal: search all edges in the graph one time Strategy: Search deeper in the graph whenever possible Edges are explored out of the most recently discovered vertex v that still has unexplored edges leaving it. Backtrack when a dead end is encountered CS 8833 Algorithms Predecessor subgraph The predecessor subgraph of a depth first search – forms a depth-first forest – composed of depth-first trees The edges in E are called tree edges CS 8833 Algorithms Vertex coloring scheme All vertices are initially white A vertex is colored gray when it is discovered A vertex is colored black when it is finished (all vertices adjacent to the vertex have been examined completely) CS 8833 Algorithms Time Stamps Each vertex v has two time-stamps – d[v] records when v is first discovered (and grayed) – f[v] records when the search finishes examining its adjacency list (and is blackened) For every vertex u – d[u] < f[u] CS 8833 Algorithms Color and Time Stamp Summary Vertex u is – white before d[u] – gray between d[u] and f[u] – black after f[u] Time is a global variable in the pseudocode CS 8833 Algorithms DFS(G) 1 for each vertex u V[G] 2 do color[u] white 3 [u] nil 4 time 0 5 do for each vertex u Adj[u] 6 do if color[u] = white 7 then DFS-VISIT(u) CS 8833 Algorithms DFS-VISIT(u) 1 color[u] gray 2 d[u] time time time +1 3 for each vertex v Adj[u] 4 do if color[v] = white 5 then [v] u 6 DFS-VISIT(v) 7 color[u] black 8 f[u] time time time +1 CS 8833 Algorithms b e 1/ c a g d f CS 8833 Algorithms b 2/ e 1/ c a g d f CS 8833 Algorithms b 2/ e 3/ 1/ c a g d f CS 8833 Algorithms b 2/ e 3/ 1/ 4/ c a g d f CS 8833 Algorithms b 2/ e 3/ 1/ 4/5 c a g d f CS 8833 Algorithms b 2/ e 3/6 1/ 4/5 c a g d f CS 8833 Algorithms b 2/7 e 3/6 1/ 4/5 c a g d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/ c 4/5 a g d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/9 c 4/5 a g d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/9 c 4/5 a g 10/ d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/9 c 4/5 a g 10/ 11/ d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/9 c 4/5 a g 10/ 11/12 d f CS 8833 Algorithms b 2/7 e 3/6 1/ 8/9 c 4/5 a g 10/13 11/12 d f CS 8833 Algorithms b 2/7 e 3/6 1/14 8/9 c 4/5 a g 10/13 11/12 d f CS 8833 Algorithms Running time of DFS lines 1-3 of DFS lines 5-7 of DFS lines 2-6 of DFS-VISIT CS 8833 Algorithms Running Time of Topological Sort DFS Insertion in linked list CS 8833 Algorithms 8 b 7 e 6 7 4 7 10 2 14 9 c 5 a 6 1 g 3 13 12 9 d f CS 8833 Algorithms Running Time for DAG- SHORTEST-PATHS Topological sort Initialize-single source 3-5 each edge examined one time CS 8833 Algorithms