Presentation is loading. Please wait.

Presentation is loading. Please wait.

Negative-Weight edges:

Similar presentations


Presentation on theme: "Negative-Weight edges:"— Presentation transcript:

1 Negative-Weight edges:
Edge weight may be negative. negative-weight cycles– the total weight in the cycle (circuit) is negative. If no negative-weight cycles reachable from the source s, then for all v V, the shortest-path weight remains well defined,even if it has a negative value. If there is a negative-weight cycle on some path from s to v, we define = 2019/5/13 chapter25

2 a b -4 h i 3 -1 2 4 3 c d 6 8 5 -8 3 5 11 g s -3 e 3 f 2 7 j -6 Figure1 Negative edge weights in a directed graph.Shown within each vertex is its shortest-path weight from source s.Because vertices e and f form a negative-weight cycle reachable from s,they have shortest-path weights of Because vertex g is reachable from a vertex whose shortest path is ,it,too,has a shortest-path weight of Vertices such as h, i ,and j are not reachable from s,and so their shortest-path weights are , even though they lie on a negative-weight cycle. 2019/5/13 chapter25

3 Relaxation: The process of relaxing an edge (u,v) consists of testing whether we can improve the shortest path to v found so far by going through u and,if so,updating d[v] and [v]. RELAX(u,v,w) if d[v]>d[u]+w(u,v) then d[v]  d[u]+w(u,v) (based on Lemma 25.3) [v]  u 2019/5/13 chapter25

4 u v u v 2 2 5 9 5 6 RELAX(u,v) RELAX(u,v) u v u v 2 2 5 7 5 6 (a) (b)
Figure2 Relaxation of an edge (u,v).The shortest-path estimate of each vertex is shown within the vertex. (a)Because d[v]>d[u]+w(u,v) prior to relaxation, the value of d[v] decreases. (b)Here, d[v] d[u]+w(u,v) before the relaxation step,so d[v] is unchanged by relaxation. 2019/5/13 chapter25

5 Bellman-Ford algorithm:
The Bellman-Ford algorithm solves the single-source shortest-paths problem in the more general case in which edge weights can be negative. It report FALSE if a negative-weight circuit exists. 2019/5/13 chapter25

6 Continue: BELLMAN-FORD(G,w,s): INITIALIZE-SINGLE-SOURCE(G,s)
for i  1 to |V[G]| do for each edge (u,v) E[G] do RELAX(u,v,w) for each edge (u,v) E[G] do if d[v]>d[u]+w(u,v) then return FALSE return TRUE Time complexity: O(|V||E|). 2019/5/13 chapter25

7 6 7 9 2 5 -2 8 -3 -4 z u v x y (a) 2019/5/13 chapter25

8 u 5 v 6 8 -2 6 -3 8 7 z -4 2 7 7 8 9 x y (b) 2019/5/13 chapter25

9 u 5 v 6 4 -2 6 -3 8 7 z -4 2 7 7 2 9 x y (c) 2019/5/13 chapter25

10 u 5 v 2 4 -2 6 -3 8 7 z -4 2 7 7 2 9 x y (d) 2019/5/13 chapter25

11 u 5 v 2 4 -2 6 -3 8 7 z -4 2 7 7 -2 9 x y (e) 2019/5/13 chapter25

12 Proof: We prove it by induction on i.
Theorem: (hard) after the i-th iteration, the cost of a shortest path from s to any node v containing of at most i edges is obtained. Proof: We prove it by induction on i. The theorem is true for i=1. The shortest path from s to v containing at most one edge is the the edge (s, v) (if exists). Assume that the theorem is true for i=k. Then we are going to show that the theorem is true for i=k+1. Let P: s-> v1-> v2 …->vm-> v be the shortest path from s to v containing at most k+1 edges. Then P1: s-> v1-> v2 …->vm must be the shortest path from s to vm containing at most k edges. By assumption, P1 has been obtained after (k)-th iteration. In the (k+1)-th iteration, we tried to RELAX(vm, v, w) on node vm. Thus, path P is obtained after the (k+1)-th iteration. 2019/5/13 chapter25

13 Corollary: If negative-weight circuit exists in the given graph, in the n-th iteration, the cost of a shortest path from s to some node v will be further reduced. Demonstrated by the following example. 2019/5/13 chapter25

14 An example with negative-weight cycle
5 1 6 -2 8 7 7 9 2 2 5 -8 An example with negative-weight cycle 2019/5/13 chapter25

15 7 6 8 5 -2 1 2 9 -8 2019/5/13 chapter25

16 7 6 16 11 9 8 5 -2 1 2 -8 2019/5/13 chapter25

17 7 6 16 12 11 1 9 8 5 -2 2 -8 2019/5/13 chapter25

18 6 16 12 11 1 9 7 8 5 -2 2 -8 2019/5/13 chapter25

19 5 6 11 1 6 -2 8 7 12 7 9 2 6 15 2 5 -8 8 1 2019/5/13 chapter25

20 6 15 12 11 8 7 5 -2 1 2 9 -8 2019/5/13 chapter25

21 5 6 11 1 6 -2 8 7 12 7 9 2 5 15 2 5 -8 8 x 2019/5/13 chapter25

22 All-Pairs Shortest Paths
Problem definition: Given a weighted,directed graph G=(V,E), for every pair of vertices u, v  V, find a shortest (least weight) path from u to v, where the weight of a path is the sum of the weights of its constituent edges. 2019/5/13 chapter25

23 Solve the problem by Single-Source shortest paths algorithm:
If all edge weights are nonnegative, we can use Dijkstra’s algorithm. If negative-weight edges are allowed, then we use Bellman-Ford algorithm instead. Can you analysis the complexity of the two solutions ? Is it possible for us to find a more efficient algorithm? 2019/5/13 chapter25

24 Preliminary knowledge:
We use an adjacency-matrix representation of graphs: wij= if i=j the weight of directed edge (i,j) if i j and (i,j) E if i j and (i,j) E The output of the algorithm presented in this chapter is an nn matrix D=(dij),where entry dij contains the weight of a shortest path from vertex i to vertex j. That is , if we let denotes the shortest-path weight from vertex i to vertex j, then dij= at termination. 2019/5/13 chapter25

25 The structure of a shortest path:
Consider a shortest path p from vertex i to vertex j, and suppose that p contains at most m edges.Assuming that there are no negative-weight cycles,m is at most |V|-1. If i=j,then p has weight 0 and no edges.If vertices i and j are distinct, then we decompose path p into i k j, where path p’ now contains at most m-1 edges. Moreover, p’ is a shortest path from i to k. Thus, we have +wkj. 2019/5/13 chapter25

26 A recursive solution to the all-pairs shortest-paths problem:
dij(m) ---minimum weight of any path from vertex i to vertex j that contains at most m edges. When m=0, dij(m) = 0 i=j and otherwise  . For m>=1, we compute dij(m) as follows: dij(m)=min ( dij(m-1), {dik(m-1)+wkj}) = {dik(m-1)+wkj}. Note that dij(m-1)= dik(m-1)+wkj for k=j. 2019/5/13 chapter25

27 Continue: If the graph contains no negative-weight cycles,then all shortest paths are simple and thus contain at most n-1 edges.A path from vertex i to vertex j with more than n-1 edges cannot be shorter than a shortest path from i to j.The actual shortest-path weights are therefore given by =dij(n-1)=dij(n)=dij(n+1)=... 2019/5/13 chapter25

28 Computing the shortest-path weights bottom up:
We compute the shortest-path weights by extending shortest paths edge by edge.Letting A*B denote the matrix “product” returned by EXTEND-SHORTEST-PATH(A,B) .We compute the sequence of n-1 matrices: D(1)=D(0)*W=W, D(2)=D(1)*W=W2, D(n-1)=D(n-2)*W=Wn-1. As we argued above, the matrix D(n-1)=Wn-1 contains the shortest-path weights.So we get the algorithm. 2019/5/13 chapter25

29 Continue: SLOW-ALL-PAIRS-SHORTEST-PATH(W) n rows[W] D(1) W
for m to n-1 do D(m) EXTEND-SHORTEST-PATHS(D(m-1),W) return D(n-1) Time O(nESP), where ESP is the time for EXTEND-SHORTEST-PATHS(), which is O(n3). Thus, the total time is O(n4). 2019/5/13 chapter25

30 Continue: EXTEND-SHORTEST-PATH(D,W) n rows[D] for i 1 to n
do for j to n for k to n do dij’ min(dij’,dik+wkj) return D’ Time: O(n3). 2019/5/13 chapter25

31 Example: Figure 1 2 4 3 1 3 8 1 -5 -4 2 7 5 4 6 2019/5/13 chapter25

32 D(1)= D(2)= D(3)= D(4)= 2019/5/13 chapter25

33 Improving the running time:
Our goal,however, is not to compute all the D(m) matrices: we are interested in matrix D(n-1).Recall that in the absence of negative-weight cycles, D(m)=D(n-1),for all integers m>=n-1.So, we can compute D(n-1) with only matrix products by computing the sequence: D(1)=W, D(2)=W2=W*W D(4)= W2* W2 2019/5/13 chapter25

34 Continue: FASTER-ALL-PAIRS-SHORTEST-PATHS(W) n rows[W] D(1) W
while n-1>m do D(2m) EXTEND-SHORTEST-PATHS(D(m),D(m)) m m return D(m) Time complexity O(n3 log n). 2019/5/13 chapter25

35 The End: 2019/5/13 chapter25

36 Proof: We prove it by induction on i.
Theorem: (hard) after the i-th iteration, the cost obtained is at most the cost of a shortest path from s to any node v containing at most i edges (New slide 12 of lecture 5) Proof: We prove it by induction on i. The theorem is true for i=1. The shortest path from s to v containing at most one edge is the the edge (s, v) (if exists). Assume that the theorem is true for i=k. Then we are going to show that the theorem is true for i=k+1. Let P: s-> v1-> v2 …->vm-> v be the shortest path from s to v containing at most k+1 edges. Then P1: s-> v1-> v2 …->vm must be the shortest path from s to vm containing at most k edges. By assumption, P1 has been obtained after (k)-th iteration. In the (k+1)-th iteration, we tried to RELAX(vm, v, w) on node vm. Thus, path P is obtained after the (k+1)-th iteration. 2019/5/13 chapter25


Download ppt "Negative-Weight edges:"

Similar presentations


Ads by Google