340 likes | 713 Views
Lecture 8 Shortest Path. Shortest-path problems Single-source shortest path All-pair shortest path. Overview. Shortest-path problems Single-source shortest path algorithms Bellman-Ford algorithm Dijkstra algorithm All-Pair shortest path algorithms Floyd- Warshall algorithm.
E N D
Lecture 8 Shortest Path • Shortest-path problems • Single-source shortest path • All-pair shortest path
Overview • Shortest-path problems • Single-source shortest path algorithms • Bellman-Ford algorithm • Dijkstra algorithm • All-Pair shortest path algorithms • Floyd-Warshall algorithm
Weighted graph Beijing Qingdao Lhasa Shanghai • Single-source shortest path • All-pair shortest path Guangzhou
Shortest Path Optimal substructure: Subpaths of shortest paths are shortest paths. Cycles. Can a shortest path contains cycles? Negative weights.
Where are we? • Shortest-path problems • Single-source shortest path algorithms • Bellman-Ford algorithm • Dijkstra algorithm • All-Pair shortest path algorithms • Floyd-Warshall algorithm
Relaxing The process of relaxingan edge (u,v)consists of testing whether we can improve the shortest path to vfound so far by going through u.
Shortest-path properties Notation: We fix the source to be s. λ[v]: the length of path computed by our algorithms from s to v. δ[v]: the length of the shortest path from s to v. Triangle property δ[v] <= δ[u] + w(u,v) for any edge (u,v). Upper-bound property δ[v] <= λ[v] for any vertex v. Convergence property If s⇒u→v is a shortest path, and if λ[u] = δ[u], then after relax(u,v), we have λ[v] = δ[v].
Θ(mn) Bellman-Ford algorithm E = {(t,x),(t,y),(t,z),(x,t),(y,x),(y,z),(z,x),(z,s),(s,t),(s,y)}
Proof. No negative cycle. By the fact that the length of simple paths is bounded by |V| - 1. After i-th iteration of relax, λ[vi] = δ[vi]. s v1 Vj vi v Correctness Correctness of Bellman-Ford If G contains no negative-weight cycles reachable from s, then the algorithm returns TRUE, and for all v, λ[v] = δ[v], otherwise the algorithm returns FALSE. Negative cycle. After i-th iteration of relax, λ[vi] + w(vi,vj) < λ[vj]. The length of negative cycle is at most |V|.
s v1 vj vi v • Θ(m) Observation 1 If there is no cycle (DAG), ... Relax in topological order.
seam Weighted DAG application
Observation 2 If there is no negative edge, ... vj vi v1 s If (s, vi) is the lightest edge sourcing from s, then λ[vi] = δ[vi]
Dijkstra algorithm Edsger Wybe Dijkstra in 2002
Correctness Assume u is chosen in Step 7, and 1. λ[u] > δ[u] 2. s ⇒ x → y ⇒ u is the shortest path δ[u] = δ[x] + w(x,y) + w(p2) = λ[x] + w(x,y) + w(p2) ≥ λ[x] + w(x,y) ≥ λ[y] ≥ λ[u]
Θ(n2) Time complexity
What is the time complexity? • How about use d-heap?
Dense graph • dense: m = n1+ε, ε is not too small. • d-heap, d = m/n • complexity: O(dnlogdn + mlogdn) = O(m)
Where are we? • Shortest-path problems • Single-source shortest path algorithms • Bellman-Ford algorithm • Dijkstra algorithm • All-Pair shortest path algorithms • Floyd-Warshall algorithm
Θ(n3) Floyd-Warshall algorithm
Conclusion Dijkstra’s algorithm. • Nearly linear-time when weights are nonnegative. Acyclic edge-weighted digraphs. • Faster than Dijkstra’s algorithm. • Negative weights are no problem. Negative weights and negative cycles. • If no negative cycles, can find shortest paths via Bellman-Ford. • If negative cycles, can find one via Bellman-Ford. All-pair shortest path. • can be solved via Floyd-Warshall • Floyd-Warshall can also compute the transitive closure of directed graph.
Which of the following statements are true for shortest path? ♠. If you run Dijkstra's algorithm on an edge-weighted DAG with positive weights, the order in which the vertices are relaxed is a topological order. ♥. Let P be a shortest path from some s to t in an edge-weighted digraph G. If the weight of each edge in G is increased by one, then P will still be a shortest path from s to t in the modified digraph G'. ♣. Let G be a digraph with positive edge weights. Suppose that you increase the length of an edge by x. Then, the length of the shortest path from s to t can increase by more than x. ♦. Bellman-Ford finds the shortest simple path from s to every other vertex, even if the edge weights are positive or negative integers, provided there are no negative cycles.