# shortest-path problems single-source shortest path all-pair shortest path lecture 8 shortest path

28
Shortest-path problems Single-source shortest path All-pair shortest path Lecture 8 Shortest Path

Post on 15-Jan-2016

252 views

Category:

## Documents

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.