Your SlideShare is downloading.
×

×

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

Like this presentation? Why not share!

- Spread spectrum communications and ... by Hossam Zein 1216 views
- Brief Introduction to Spread spectr... by Anil Nigam 91 views
- Digital communication (DSSS) by SSGMCE SHEGAON 309 views
- Wireless Communications Spread Spec... by Dominque23 3234 views
- Cdma and 3 g by Partha Bhunia 358 views
- Networks dijkstra's algorithm- pgsr by Linawati Adiman 1698 views
- Spread spectrum modulation by Allanki Rao 1321 views
- Cdma ppt for ECE by ajitece 5337 views
- Dijkstra's algorithm by gsp1294 1478 views
- Dijkstra’S Algorithm by ami_01 7994 views
- Cpsc125 ch6sec3 by guest862df4e 437 views
- CPSC125 ch6 sec3 by David Wood 614 views

Like this? Share it with your network
Share

78

views

views

Published on

No Downloads

Total Views

78

On Slideshare

0

From Embeds

0

Number of Embeds

0

Shares

0

Downloads

8

Comments

0

Likes

1

No embeds

No notes for slide

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?

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?

- 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

Be the first to comment