shortest-path problems single-source shortest path all-pair shortest path lecture 8 shortest path
Post on 15-Jan-2016
249 Views
Preview:
TRANSCRIPT
• Shortest-path problems
• Single-source shortest path
• All-pair shortest path
Lecture 8 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
Shanghai
Beijing
Guangzhou
QingdaoLhasa
•Single-source shortest path•All-pair shortest path
Shortest Path
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 relaxing an edge (u,v) consists of testing whether we can improve the shortest path to v found so far by going through u.
Shortest-path propertiesNotation: 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 propertyIf s⇒u→v is a shortest path, and if λ[u] = δ[u],
then after relax(u,v), we have λ[v] = δ[v].
Bellman-Ford algorithm
E = {(t,x),(t,y),(t,z),(x,t),(y,x),(y,z),(z,x),(z,s),(s,t),(s,y)}
Θ(mn)
Negative cycle
CorrectnessCorrectness of Bellman-FordIf 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.
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 vv1 Vj vi
Negative cycle. After i-th iteration of relax, λ[vi] + w(vi,vj) < λ[vj]. The length of negative cycle is at most |V|.
Observation 1
If there is no cycle (DAG), ...
Relax in topological order.
s vv1 vj vi Θ(m)
Weighted DAG application
seam
Observation 2
If there is no negative edge, ...
s v1
vj
vi
If (s, vi) is the lightest edge sourcing from s, then λ[vi] = δ[vi]
Dijkstra algorithm
Edsger Wybe Dijkstra in 2002
Dijkstra algorithm
Correctness
Assume u is chosen in Step 7, and1. λ[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]
Time complexity
Θ(n2)
What is the time complexity? How about use d-heap?
Comparisons
Array Binary heap d-ary heap
Dijkstra O(n2) O(mlogn)O(dnlogdn +
mlogdn)
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
All-pairs shortest path
Floyd-Warshall algorithm
Floyd-Warshall algorithm
Θ(n3)
ConclusionDijkstra’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.
top related