Your SlideShare is downloading. ×
35 dijkstras alg
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

35 dijkstras alg

78
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
78
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Distances from a
    if two the same, choose the first one
    All circled nodes are shortest distances from node a to node x
    Settled nodes are the shortest distances
    Can I derive a shortest path?
  • Distances from a
    if two the same, choose the first one
    All circled nodes are shortest distances from node a to node x
    Settled nodes are the shortest distances
    Can I derive a shortest path?
  • Transcript

    • 1. Discussion #35 Dijkstra’s Algorithm Discussion #35 Chapter 7, Section 5.5 1/15
    • 2. Topics • Shortest path • Greedy algorithms • Dijkstra’s algorithm Discussion #35 Chapter 7, Section 5.5 2/15
    • 3. Shortest Path • Minimum length path from one node to another (e.g. from a to e, the shortest path is 2) • Algorithms b a c d e – Breadth-First-Search, O(n2) in the worst case – Floyd’s, O(n3); but finds all – BFS, starting at each node, O(nm), which beats Floyd’s for sparse graphs Discussion #35 Chapter 7, Section 5.5 3/15
    • 4. Shortest Path in Weighted Graphs • Weights on edges: positive numbers • Algorithms – Simple BFS no longer works (e.g. the shortest path from a to b is not the edge that connects them) – Floyd’s, O(n3); finds all b 5 2 2 a 1 c 10 d 1 1 e • Is there an algorithm that beats Floyd’s? – for the single best path? – for all paths? Discussion #35 Chapter 7, Section 5.5 4/15
    • 5. Dijkstra’s Algorithm • Find the shortest weighted path between two given nodes. (Easier to find the minimum from one to all.) • Intuitively, special BFS: choose smallest accumulated path length • Algorithm b 5 2 2 a c 10 1 d 1 1 e 1. Initialize D (distance) table. 2. Until all nodes are settled, 2a. find smallest distance & settle node. 2b. adjust distances in D for unsettled nodes. Discussion #35 Chapter 7, Section 5.5 5/15
    • 6. Important Aside: Greedy Algorithms • A greedy algorithm always takes the best immediate or local solution while finding an answer. • Greedy algorithms find optimal solutions for some optimization problems, but may find (far) lessthan-optimal solutions for other optimization problems. – Dijkstra’s algorithm is greedy. – There is no greedy algorithm for the traveling salesman problem (find the shortest path to visit all nodes). • When greedy algorithms work, they are usually best. Discussion #35 Chapter 7, Section 5.5 6/15
    • 7. b Trace of Dijkstra’s Algorithm 5 1. Initialize D (start=a) 2. Until all nodes are settled: -find smallest distance & settle node. -adjust distances in D for unsettled nodes. iteration adjust w/d adjust w/c adjust w/e 0 1 2 3 4 b 5 5 54 4 4 c 2 2 2 2 a settled d 1 1 e ∞ ∞2 2 2 c 10 1 distance a 0 2 d 1 1 e a a,d a,d,c a,d,c,e a,d,c,e,b all nodes settled Circled numbers: shortest path lengths from a. Discussion #35 Chapter 7, Section 5.5 7/15
    • 8. b Trace with Different Weights 1. Initialize D (start=a) 2. Until all nodes are settled: -find smallest distance & settle node. -adjust distances in D for unsettled nodes. iteration adjust w/d adjust w/e adjust w/c 0 1 2 3 4 b 6 6 6 65 5 c 4 4 43 3 2 4 a settled d 1 1 e ∞ ∞2 2 c 10 1 distance a 0 6 d 1 1 e a a,d a,d,e a,d,e,c a,d,e,c,b all nodes settled Circled numbers: shortest path lengths from a. Discussion #35 Chapter 7, Section 5.5 8/15
    • 9. Proof that Dijkstra’s Algorithm Works • Loop Invariant: For each settled node x, the minimum distance from the start node s to x is D(x). • Additional observations (which help us in the proof) are also loop invariants. – (a) The shortest path from s to any settled node v consists only of settled nodes. – (b) The shortest path from s to any unsettled node y is at least the largest settled difference so far. Discussion #35 Chapter 7, Section 5.5 9/15
    • 10. Proof by Induction (on the number of iterations) • Basis: 0 iterations: x = s, D(s) = 0 (which is the minimum since all weights are positive) – For (a): initially s = v, the only settled node – For (b): initially all nodes except s are unsettled, and the shortest path to each is at least 0, indeed > 0. • Induction: Assume that the main loop invariant and the loop invariants (a) and (b) hold for k iterations and show that they hold for k+1 iterations. Discussion #35 Chapter 7, Section 5.5 10/15
    • 11. Proof of Induction Part (Sketch) k settled Assume Dijkstra’s algorithm selects x to be settled. s...v x k+1 settled s...v x Assume that the main loop invariant does not hold for the k+1st iteration, then there is a shorter path from s to x. By the induction hypotheses, since Dijkstra’s algorithm s .. . . v  x ..w  y Discussion #35 chooses x, the path from s to x is the shortest using settled nodes, and the path from s to y is no shorter than s to x. Since all weights are positive, the path from y to x is at least 1, so that the assumed shorter path cannot exist. Further (a) and (b) continue to hold: (a) After settling x, the path from s to x consists of only settled nodes. (b) The adjustments are only for paths from x to any unsettled nodes. Since the distance from s to any unsettled node y is at least D(x), and D(x) is the largest settled distance so far. Chapter 7, Section 5.5 11/15
    • 12. Big-Oh for Dijkstra’s Algorithm Adjacency List: b 5 d 1 (c,2) b (a,5) (c,2) c (a,2) 1 e (b,5) 2 1 a 5 c 10 1 √ 0 2 2 a D(x) d n +n+ … (a,1) + k1 (c,10) k2 +(e,1)+ n + k(n-1) ∞ e (d,1) (d,1) Unroll the loop: (b,2) (d,10) (e,1) (c,1) 1. Initialize D (start=a) 2. Until all nodes are settled: 2a. find smallest distance & settle node. = (n−1)n = O(n2) 2b. adjust distances in D for unsettled nodes. 1. = 2(m − # of edges in the O(n)  visit at most all edges for a node  can’t=be more than initialization) O(m) { 2 O(n2. ) dominates n O(n)  each node needs to be settled 2a. O(n)  look through D(x) list to find smallest 2b. O(k)  for chosen node, go through list of length k Discussion #35 Over all iterations, the k’s add up to 2(m − # of edges in the initialization). Chapter 7, Section 5.5 12/15
    • 13. Big-Oh for Dijkstra’s Algorithm Adjacency List: b 5 d 1 (c,2) b (a,5) (c,2) c (a,2) (b,2) (d,10) 1 d (a,1) (c,10) (e,1) ∞ e (b,5) 2 1 a 5 c 10 1 √ 0 2 2 a D(x) e (d,1) (c,1) (d,1) (e,1) 1. Initialize D (start=a) 2. Until all nodes are settled: 2a. find smallest distance & settle node. 2b. adjust distances in D for unsettled nodes. Clever using POTs: 1. 2. O(mlogn) O(nlogn)  POT (Partially Ordered Tree) construction dominates O(n)  each node needs to be settled 2a. O(logn)  swap and bubble down 2b. O(klogn)  for chosen node, go through list of length k { dominates Discussion #35 Over all iterations, the k’s add up to 2(m − # of edges in the initialization). Chapter 7, Section 5.5 13/15
    • 14. POT Construction/Manipulation b 5 POT construction (start = a) 2 2 a c 10 1 d (b,5) ⇒ (b,5) (c,2) ⇒ (c,2) (b,5) ⇒ (d,1) (d,1) ⇒ ⇒ (b,5) (d,1) (b,5) (c,2) (b,5) (c,2) 1 1 (c,2) (e,∞) e Find smallest  always on top; then swap and bubble down no swap bubble down adjust bubbling (d,1) (e,∞) (c,2) (c,2) (c,2) ⇒ ⇒ ⇒ ⇒ needed ⇒ ⇒ (b,5) (c,2) (b,5) (e,∞) (b,5) (e,2) (b,5) (c,2) (b,5) (e,2) (e,∞) (d,1) Adjust distances  POT doubly linked to adjacency list nodes  bubble up and down, as needed, when going through list of chosen node to adjust values Discussion #35 Chapter 7, Section 5.5 14/15 …
    • 15. Dijkstra’s Algorithm vs. Floyd’s • Dijkstra’s algorithm is O(mlogn) = O(n2logn) in the worst case. • Floyd’s algorithm is O(n3), but computes all shortest paths. • Dijkstra’s algorithm can compute all shortest paths by starting it n times, once for each node. Thus, to compute all paths, Dijkstra’s algorithm is O(nmlogn) = O(n3logn) in the worst case. • Which is better depends on the application. – Dijkstra’s algorithm is better if only a path from a single node to another or to all others is needed. – For all paths, Dijkstra’s algorithm is better for sparse graphs, and Floyd’s algorithm is better for dense graphs. Discussion #35 Chapter 7, Section 5.5 15/15