1 / 18

A Shortest Path Algorithm

A Shortest Path Algorithm. Motivation. Given a connected, positive weighted graph Find the length of a shortest path from vertex a to vertex z. Dijkstra’s Shortest Path Algorithm. Dijkstra(w,a,z,L){ L(a)=0 for all vertices x ≠a L(x)=∞ T=set of all vertices

tevy
Télécharger la présentation

A Shortest Path Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Shortest Path Algorithm

  2. Motivation Given a connected, positive weighted graph Find the length of a shortest path from vertex a to vertex z.

  3. Dijkstra’s Shortest Path Algorithm Dijkstra(w,a,z,L){ L(a)=0 for all vertices x ≠a L(x)=∞ T=set of all vertices while(z є T){ choose v є T with minimum L(v) T=T-{v} for each x є T adjacent to v L(x)=min{L(x),L(v)+w(v,x)} } } Input: A connected, positive weighted graph,vertices a and z Output: L(z), the length of a shortest path from a to z

  4. Example 8.4.2 b 2 c 1 2 4 2 3 a d e z 4 3 7 1 6 f g 5 Find L(z)

  5. Initialization ∞ ∞ b 2 c 1 2 4 2 3 ∞ ∞ a d e z ∞ 0 4 3 7 1 6 f g 5 ∞ ∞ 1.L(a)=0 2.L(x)=∞,x≠a 3.T={a,b,c,d,e,f,g,z}

  6. Iteration 1 2 ∞ ∞ b 2 c 1 2 4 2 3 ∞ ∞ a d e z ∞ 0 4 3 7 1 6 f g 5 ∞ ∞ 1 1.L(a)=min{L(x),xєT} 2.T={b,c,d,e,f,g,z} 3.L(b)=2,L(f)=1

  7. Iteration 2 2 ∞ b 2 c 1 2 4 2 3 ∞ ∞ 4 a d e z ∞ 0 4 3 7 1 6 f g 5 ∞ 6 1 1.L(f)=min{L(x),xєT} 2.T={b,c,d,e,g,z} 3.L(d)=4,L(g)=6

  8. Iteration 3 2 4 ∞ b 2 c 1 2 4 2 3 4 6 ∞ a d e z ∞ 0 4 3 7 1 6 f g 5 6 1 1.L(b)=min{L(x),xєT} 2.T={c,d,e,g,z} 3.L(c)=4,L(e)=6,L(d)=4

  9. Iteration 4 2 4 b 2 c 1 2 4 2 6 4 6 a d e z 5 ∞ 0 4 3 7 1 6 f g 5 6 1 1.L(c)=L(d)=min{L(x),xєT},begin with c first 2.T={d,e,g,z} 3.L(e)=6,L(z)=5 …… We can continue, but L(z) will not change in this example.

  10. Proof of Dijkstra’s Algorithm … x … w a u P Basic Step(i=1): we set L(a)=0, and L(a) is sure the length of a shortest path from a to a. Inductive step: For an arbitrary step i Suppose for step k<i, L(v) is the length of a shortest path from a to v. Next, suppose that at the it step we choose v in T with minimum L(v). We will seek a contradiction that if there is a w whose length is less than L(v) then w is not in T. By way of contradiction, suppose there is a w with L(w)<L(v), wєT. Then, let P be the shortest path from a to w, and let x be the vertex nearest to a on P that is in T and let u be x’s predecessor. The node u must not be in T (because x was the nearest node to a that was in T). By assumption, L(u) was the length of the shortest path from a to u. Then, L(x) ≤ L(u)+w(u,x) ≤ length of P < L(v). This is a contradiction. So w is not in T. According to our assumption, every path from a to v has length at least L(v).

  11. Example 2 b 3 c 2 2 a 1 z 1 2 d e 1 Find L(z)

  12. Initialization ∞ ∞ b 3 c 2 2 1 a z ∞ 0 1 2 d e 1 ∞ ∞ 1.L(a)=0 2.L(x)=∞,x≠a 3.T={a,b,c,d,e,z}

  13. Iteration 1 a,2 ∞ ∞ b 3 c 2 2 1 a z ∞ 0 1 2 d e 1 ∞ ∞ a,1 1.L(a)=min{L(x),xєT} 2.T={b,c,d,e,z} 3.L(b)=2,L(d)=1

  14. Iteration 2 a,2 ∞ b 3 c 2 2 1 a z ∞ 0 1 2 d e 1 ∞ d,2 a,1 1.L(d)=min{L(x),xєT} 2.T={b,c,e,z} 3.L(e)=2

  15. Iteration 3 a,2 b,5 ∞ b 3 c 2 2 1 a z ∞ 0 1 2 d e 1 d,2 a,1 1.L(b)=min{L(x),xєT},(a,2)<(d,2) 2.T={c,e,z} 3.L(c)=5,L(e)=2

  16. Iteration 4 a,2 b,5 b 3 c 2 2 1 a z ∞ 0 e,4 1 2 d e 1 d,2 a,1 1.L(e)=min{L(x),xєT} 2.T={c,z} 3.L(z)=4

  17. Iteration 5 a,2 b,5 b 3 c 2 2 1 a z 0 e,4 1 2 d e 1 d,2 a,1 1.L(z)=min{L(x),xєT} 2.T={c} 3.L(c)=5.Stop.

  18. Theorem 8.4.5 For input consisting of an n-vertex, simple, connected, weighted graph, Dijkstra’s algorithm has worst-case run time Ѳ(n2). Proof: The while loop will take Ѳ(n2) worst-case running time.

More Related