cs 253: algorithms chapter 24 shortest paths credit: dr. george bebis

Download CS 253: Algorithms Chapter 24 Shortest Paths Credit: Dr. George Bebis

Post on 22-Dec-2015

215 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • CS 253: Algorithms Chapter 24 Shortest Paths Credit: Dr. George Bebis
  • Slide 2
  • 2 Shortest Path Problems How can we find the shortest route between two points on a road map? Model the problem as a graph problem: Road map is a weighted graph: vertices = cities edges = road segments between cities edge weights = road distances Goal: find a shortest path between two vertices (cities)
  • Slide 3
  • Shortest Path Problem Input: Directed graph G = (V, E) Weight function w : E R Weight of path p = v 0, v 1,..., v k Shortest-path weight from u to v : (u, v) = min w(p) : u v if there exists a path from u to v otherwise Note: there might be multiple shortest paths from u to v p 0 39 511 3 6 5 7 6 s tx yz 2 2 1 4 3
  • Slide 4
  • 4 Negative-Weight Edges Negative-weight edges may form negative-weight cycles If such cycles are reachable from the source, then (s, v) is not properly defined! Keep going around the cycle, and get w(s, v) = - for all v on the cycle Therefore, negative-weight edges will not be considered here 0 3 -4 2 8 -6 s ab ef -3 y 3 5 6 4 7 c d g
  • Slide 5
  • Cycles Can shortest paths contain cycles? No! Negative-weight cycles Shortest path is not well defined (we will not consider this case) If there is a positive-weight cycle, we can get a shorter path by removing the cycle. Zero-weight cycles? No reason to use them Can remove them and obtain a path with the same weight
  • Slide 6
  • Shortest-Paths Notation For each vertex v V: (s, v): shortest-path weight d[v]: shortest-path weight estimate Initially, d[v]= d[v] (s,v) as algorithm progresses [v] = predecessor of v on a shortest path from s If no predecessor, [v] = NIL induces a treeshortest-path tree 0 39 511 3 6 5 7 6 s tx yz 2 2 1 4 3
  • Slide 7
  • 7 Initialization Alg.: INITIALIZE-SINGLE-SOURCE(V, s) 1. for each v V 2. do d[v] 3. [v] NIL 4. d[s] 0 All the shortest-paths algorithms start with INITIALIZE-SINGLE-SOURCE
  • Slide 8
  • Relaxation Step Relaxing an edge (u, v) = testing whether we can improve the shortest path to v found so far by going through u If d[v] > d[u] + w(u, v) we can improve the shortest path to v d[v]=d[u]+w(u,v) [v] u 59 2 uv 57 2 uv RELAX(u, v, w) 56 2 uv 56 2 uv After relaxation: d[v] d[u] + w(u, v) ss no change
  • Slide 9
  • Dijkstras Algorithm Single-source shortest path problem: No negative-weight edges: w(u, v) > 0, (u, v) E Vertices in (V S) reside in a min-priority queue Keys in Q are estimates of shortest-path weights d[u] Repeatedly select a vertex u (V S), with the minimum shortest-path estimate d[u] Relax all edges leaving u STEPS 1) Extract a vertex u from Q (i.e., u has the highest priority) 2) Insert u to S 3) Relax all edges leaving u 4) Update Q
  • Slide 10
  • 10 Dijkstra (G, w, s) 0 10 1 5 2 s tx yz 2 3 9 7 4 6 0 1 5 2 s tx yz 2 3 9 7 4 6 5 S= Q= S= Q=
  • Slide 11
  • Example (cont.) 0 10 5 1 5 2 s tx yz 2 3 9 7 4 6 814 7 0 8 5 7 10 1 5 2 s tx yz 2 3 9 7 4 6 13 S= Q=
  • Slide 12
  • Example (cont.) 0 8 13 57 10 1 5 2 s tx yz 2 3 9 7 4 6 9 0 8 9 57 1 5 2 s tx yz 2 3 9 7 4 6 S= Q= S= Q=
  • Slide 13
  • Dijkstra (G, w, s) 1. INITIALIZE-SINGLE-SOURCE( V, s ) 2. S s 3. Q V[G] 4. while Q 5. do u EXTRACT-MIN(Q) 6. S S { u } 7. for each vertex v Adj[u] 8. do RELAX( u, v, w ) 9. Update Q (DECREASE_KEY) (V) (V) build min-heap Executed (V) times (lgV) (E) times (max) (lgV) (VlgV) (ElgV) Running time: (VlgV + ElgV) = (ElgV)
  • Slide 14
  • Dijkstras SSSP Algorithm (adjacency matrix) b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 5 1 S new L[i] = Min{ L[i], L[k] + W[k, i] } where k is the newly-selected intermediate node and W[.] is the distance between k and i
  • Slide 15
  • b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 5 1 a b c d e f new L [.] = 1 0 3 1 5 SSSP cont. new L[i] = Min{ L[i], L[k] + W[k, i] } where k is the newly-selected intermediate node and W[.] is the distance between k and i
  • Slide 16
  • b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 3 1 5 a b c d e f new L [.] = 1 0 3 1 5 3 new L[i] = Min{ L[i], L[k] + W[k, i] } where k is the newly-selected intermediate node and W[.] is the distance between k and i
  • Slide 17
  • b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 3 1 5 3 a b c d e f new L [.] = 1 0 3 1 4 3
  • Slide 18
  • b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 3 1 4 3 a b c d e f new L [.] = 1 0 3 1 4 3
  • Slide 19
  • b a d c f e 1 1 1 5 5 3 2 4 2 a b c d e f a 0 1 3 2 b 1 0 5 1 c 3 5 0 2 1 d 1 2 0 4 e 1 4 0 5 f 2 5 0 a b c d e f L [.] = 1 0 3 1 4 3 a b c d e f new L [.] = 1 0 3 1 4 3 Running time: (V 2 ) (array representation) (ElgV) (Min-Heap+Adjacency List) Which one is better?
  • Slide 20
  • All-Pairs Shortest Paths Given: Directed graph G = (V, E) Weight function w : E R Compute: The shortest paths between all pairs of vertices in a graph Result: an n n matrix of shortest-path distances (u, v) We can run Dijkstras algorithm once from each vertex: O(VElgV) with binary heap and adjacency-list representation if the graph is dense O(V 3 lgV) We can achieve O(V 3 ) by using an adjacency-matrix. 1 2 3 54 3 3 7 6 2 4 1 9 8
  • Slide 21
  • 21 Problem 1 We are given a directed graph G=(V, E) on which each edge (u,v) has an associated value r(u,v), which is a real number in the range 0 r(u,v) 1 that represents the reliability of a communication channel from vertex u to vertex v. We interpret r(u,v) as the probability that the channel from u to v will not fail, and we assume that these probabilities are independent. Design an efficient algorithm to find the most reliable path between two given vertices.
  • Slide 22
  • 22 Problem 1 (cont.) r(u,v) = Pr(channel from u to v will not fail) Assuming that the probabilities are independent, the reliability of a path p= is: r(v 1,v 2 ) r(v 2,v 3 ) r(v k-1,v k ) Solution 1: modify Dijkstras algorithm Perform relaxation as follows: if d[v] < d[u] w(u,v) then d[v] = d[u] w(u,v) Use EXTRACT_MAX instead of EXTRACT_MIN
  • Slide 23
  • Problem 1 (cont.) Solution 2: use Dijkstras algorithm without any modifications! We want to find the channel with the highest reliability, i.e., But Dijkstras algorithm computes Take the log
  • Slide 24
  • Problem 1 (cont.) Turn this into a minimization problem by taking the negative: Run Dijkstras algorithm using

Recommended

View more >