shortest paths with arbitrary edge weights
play

Shortest Paths with Arbitrary Edge Weights Cormen et. al.24.1 - PowerPoint PPT Presentation

Shortest Paths with Arbitrary Edge Weights Cormen et. al.24.1 Shortest Path Problem Shortest path problem. Given a directed graph G = (V, E), with edge weights c vw , find shortest path from node s to node t. Th This is t tim ime w we a


  1. Shortest Paths with Arbitrary Edge Weights Cormen et. al.24.1

  2. Shortest Path Problem Shortest path problem. Given a directed graph G = (V, E), with edge weights c vw , find shortest path from node s to node t. Th This is t tim ime w we a allo llow z zero ro a and n negative ive e edge w weig ights. 10 2 3 9 s 18 6 - 16 16 6 6 19 4 30 11 5 15 -8 6 16 20 t 7 44 2

  3. Shortest Paths: Failed Attempts Dijkstra can fail with negative edge costs. Shortest path s to t is not s à t u 3 2 s v -5 1 t Re-weighting: what if we add large enough value to each edge weight so all weights>0? 2 2 s t 3 3 -3 3

  4. Shortest Paths: Failed Attempts Dijkstra can fail with negative edge costs. Shortest path s to t is not s à t u 3 2 s v -5 1 t Re-weighting. Adding a constant to every edge weight can fail. Shortest path does not have the minimum number of edges. 6 6 2 2 s t 7 7 3 3 1 -3 4

  5. Negative Cost Cycles Negative cost cycle. -6 -4 7 Observation. If some path from s to t contains a negative cost cycle, there does not exist a shortest s-t path; therefore we consider only graphs with no negative cycles s t W c(W) < 0 If there is no negative cycle the shortest path is simple (no nodes repeated). Wh What t about t 0 sum cyc ycles? 5

  6. Bellman Ford SDSP Observation: as there are no negative cycles, and a zero sum cycle does not add to the path length, we can ignore cycles in our algorithm, searching for simple shortest paths, altogether. Therefore, a shortest path does not repeat any node. Therefore any shortest path has at most n-1 = |V|-1 edges. Objective: shortest path from node s to node t Define: OPT(i, v) = length of shortest v-t path using at most i edges.

  7. A Dynamic Programming Approach OPT(i, v) = length of shortest v-t path using at most i edges. We want to create a recurrence, i.e. express OPT(i,v) in some Opt(j,w) j<i ■ Case 1: path uses at most i-1 edges. – OPT(i, v) = OPT(i-1, v) ■ Case 2: path uses up to i edges. – use edge (v,w), and then best w-t path using i-1 edges $ 0 if v = t , otherwise ∞ if i = 0 * * $ ' OPT ( i , v ) = % min { } min OPT ( i − 1, v ), OPT ( i − 1, w ) + c vw otherwise % ( * & ) * ( v , w ) ∈ E & What is the length of the optimal s-t path? OPT(n-1, s) , n = |V| 7

  8. Bellman Ford -3 i 0 1 2 3 4 5 v a 6 t 0 -4 -1 4 d a ∞ t b b ∞ -2 2 e c ∞ 8 d ∞ c -3 3 e ∞ BF(G,s,t) n = |V| array M[0..n-1,V] foreach edge (v, w) Î E M[i,v] ¬ min(M[i-1,v], M[0,t]=0 M[0,v]= ∞ for all v!=t M[i-1,w]+c vw ) for i = 1 to n-1 compute M[i,v] using the recurrence return M[n-1,s]

  9. Bellman Ford -3 i 0 1 2 3 4 5 v a 6 t 0 0 0 0 0 0 -4 -1 4 d a ∞ -3 -3 -4 -6 -6 t b b ∞ ∞ 0 -2 -2 -2 -2 2 e c ∞ 3 3 3 3 3 8 d ∞ 4 3 3 2 0 c -3 3 e ∞ 2 0 0 0 0 BF(G,s,t) O(mn mn) ) time, O(n (n 2 ) space. n=|V|, m=|E| E| n = |V| array M[0..n-1,V] foreach node v foreach edge (v, w) Î E M[0,t]=0 M[0,v]= ∞ for all v!=t M[i,v] ¬ min(M[i-1,v], for i = 1 to n-1 M[i-1,w]+c vw ) compute M[i,v] using the recurrence return M[n-1,s]

  10. Practical Improvements Practical improvements. ■ Since we only refer to the previous column, we only need to maintain M[v] = length shortest v-t path that we have found so far. ■ Update is now: M[v] ¬ min { M[v], M[w] + c vw } ■ The role of i is only as a counter 10

  11. Bellman-Ford: Efficient Implementation Shortest-Path(G, s, t) { foreach node v Î V { M[v] ¬ ¥ successor[v] ¬ None } M[t] = 0 for i = 1 to n-1 { foreach node w Î V { if (M[w] has been updated in previous iteration) { foreach node v such that (v, w) Î E { if (M[v] > M[w] + c vw ) { M[v] ¬ M[w] + c vw successor[v] ¬ w } } } If no M[w] value changed in iteration i, stop. } } 11

  12. Detecting Negative Cycles Comment. Bellman-Ford can be used to detect negative cycles by running it one more iteration. Lemma. If OPT(n,v) = OPT(n-1,v) for all v, then there is no negative cycle on a path to t. because if there is a negative cycle, we can keep bringing OPT(i,v) down Lemma. If OPT(n,v) < OPT(n-1,v) for some node v, then there is a negative cycle on a path to t. because, as argued before, without negative cycles the path length (in edges) is at most n-1 12

  13. Detecting Negative Cycles Theorem. Can detect negative cost cycle in O(mn) time. ■ Add new node t and connect all nodes to t with 0-cost edge. ■ Check if OPT(n, v) = OPT(n-1, v) for node t. – if so, then no negative cycles – if not, then extract cycle from shortest path from v to t t 0 0 0 0 0 18 2 6 -23 5 -11 v -15 13

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend