Download presentation
Presentation is loading. Please wait.
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 nn 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(nESP), 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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.