Lecture 20: Shortest Paths Shang-Hua Teng
Weighted Directed Graphs Weight on edges for distance
Shortest Paths Given a weighted, directed graph G=(V, E) with weight function w: E R. The weight of path p= is the sum of the weights of its edges: We define the shortest-path weight from u to v by A shortest path from vertex u to vertex v is any path with w(p)= (u, v) If there is a path from u to v, Otherwise.
Variants of Shortest Path Problem Single-source shortest paths problem –Finds all the shortest path of vertices reachable from a single source vertex s Single-destination shortest-path problem –By reversing the direction of each edge in the graph, we can reduce this problem to a single-source problem Single-pair shortest-path problem –No algorithm for this problem are known that run asymptotically faster than the best single-source algorithm in the worst case All-pairs shortest-path problem
Relaxation For each vertex v V, we maintain an attribute d[v], which is an upper bound on the weight of a shortest path from source s to v. We call d[v] a shortest-path estimate. Possible Predecessor of v in the shortest path
Relaxation Relaxing an edge (u, v) consists of testing whether we can improve the shortest path found so far by going through u and, if so, update d[v] and [v] By Triangle Inequality
Dijkstra’s Algorithm
Coping with Negative Weights Deciding whether there is a negative circle If the graph does not have a negative circle reachable from the source s, for the shortest path tree.
Bellman-Ford Algorithm BellmanFord() for each v V d[v] = ; d[s] = 0; for i=1 to |V|-1 for each edge (u,v) E Relax(u,v, w(u,v)); for each edge (u,v) E if (d[v] > d[u] + w(u,v)) return “no solution”; Relax(u,v,w): if (d[v] > d[u]+w) then d[v]=d[u]+w Initialize d[], which will converge to shortest-path value Relaxation: Make |V|-1 passes, relaxing each edge Test for solution Under what condition do we get a solution?
Bellman-Ford Algorithm BellmanFord() for each v V d[v] = ; d[s] = 0; for i=1 to |V|-1 for each edge (u,v) E Relax(u,v, w(u,v)); for each edge (u,v) E if (d[v] > d[u] + w(u,v)) return “no solution”; Relax(u,v,w): if (d[v] > d[u]+w) then d[v]=d[u]+w What will be the running time?
Bellman-Ford Algorithm BellmanFord() for each v V d[v] = ; d[s] = 0; for i=1 to |V|-1 for each edge (u,v) E Relax(u,v, w(u,v)); for each edge (u,v) E if (d[v] > d[u] + w(u,v)) return “no solution”; Relax(u,v,w): if (d[v] > d[u]+w) then d[v]=d[u]+w What will be the running time? A: O(VE)
Bellman-Ford Algorithm BellmanFord() for each v V d[v] = ; d[s] = 0; for i=1 to |V|-1 for each edge (u,v) E Relax(u,v, w(u,v)); for each edge (u,v) E if (d[v] > d[u] + w(u,v)) return “no solution”; Relax(u,v,w): if (d[v] > d[u]+w) then d[v]=d[u]+w B E DC A Ex: work on board s
Bellman-Ford Note that order in which edges are processed affects how quickly it converges Correctness: show d[v] = (s,v) after |V|-1 passes –Lemma: d[v] (s,v) always Initially true Let v be first vertex for which d[v] < (s,v) Let u be the vertex that caused d[v] to change: d[v] = d[u] + w(u,v) Then d[v]< (s,v) (s,v) (s,u) + w(u,v)(Why?) (s,u) + w(u,v) d[u] + w(u,v)(Why?) So d[v] < d[u] + w(u,v). Contradiction.
Bellman-Ford Prove: after |V|-1 passes, all d values correct –Consider shortest path from s to v: s v 1 v 2 v 3 v 4 v Initially, d[s] = 0 is correct, and doesn’t change (Why?) After 1 pass through edges, d[v 1 ] is correct (Why?) and doesn’t change After 2 passes, d[v 2 ] is correct and doesn’t change … Terminates in |V| - 1 passes: (Why?) What if it doesn’t?
Properties of Shortest Paths Triangle inequality –For any edge (u,v) in E, (s,v) <= (s,u) + w(u,v) Upper bound property –d[v] >= (s,v) Monotonic property –d[v] never increase No-path property –If v is not reachable then d[v] = (s,v) = infty
Properties of Shortest Paths Convergence property –If (u,v) is on the shortest path from s to v and if d[u] = (s,u) at any time prior to relaxing (u,v), then d[v] = (s,v) at all time afterward Path-relaxation property –If p= is the shortest path from s to v k and edges of p are relaxed in order in the index, then d[v k ] = (s, v k ). This property holds regardless of any other relaxation steps that occur, even if they are intermixed with relaxations of the edges of p
Properties of Shortest Paths Predecessor-subgraph property –Once d[v] = (s,v), the predecessor subgraph is a shortest-paths tree rooted at s
Matrix Basic Vector: array of numbers; unit vector Inner product, outer product, norm Matrix: rectangular table of numbers, square matrix; Matrix transpose All zero matrix and all one matrix Identity matrix 0-1 matrix, Boolean matrix, matrix of graphs
Matrix Operations Matrix-vector operation –System of linear equations –Eigenvalues and Eigenvectors Matrix matrix operations
1. Matrix Addition:
2. Scalar Multiplication:
3. Matrix Multiplication