32
Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Embed Size (px)

Citation preview

Page 1: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Dijkstra’s AlgorithmLauren McLaughlin - 11/7/06

Page 2: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Quotes

• “Object-oriented programming is an exceptionally bad idea which could only have originated in California.”

• “Don't compete with me: firstly, I have more experience, and secondly, I have chosen the weapons.”

Page 3: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Quotes

• “Program testing can be used to show the presence of bugs, but never to show their absence!”

• “Perfecting oneself is as much unlearning as it is learning.”

Page 4: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Traveling Salesman

• Objective:Find the cheapest way of visiting all of the cities

and returning to your starting point

Page 5: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Dining Philosophers

• Objective:To prevent deadlocks and starvation

Page 6: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Dining Philosophers

Page 7: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Path Algorithm

Page 8: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Edge

• Ordered pair

• u = Vertex @ Beginning of path

• v = Vertex @ End of path

• Has a value assigned• Cost

• (u,v)

Page 9: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Data Structures

• Set of vertices whose shortest path has been determined (F)

• Set of remaining vertices (R)

• Array containing shortest path (length)

• Adjacency Array (W)

• Array holding current vertex (touch)

Page 10: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Basic Steps

• Set F to empty set

• Initialize arrays

• Find shortest path

• Place its vertex in F

• Remove vertex from R

• Relax vertices in R

• Change length of shortest vertex to -1

Page 11: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Edge Relaxation

• After vertex u is placed in F, every edge in R is relaxed

• Get current shortest distance (length[v])

• Determine distance by going through the recently placed vertex in R

• If the path is shorter when going through u, set length[v] to that amount

Page 12: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Pseudocodeindex i, vnear;char touch[n];int length[n];

//Empty setF = 0;

for(i = 0; i < n; i++){ touch[ i ] = source; if(W[source][ i ] == 0)

W[source][ i ] = oo;

length[ i ] = W[source][ i ];}

}

repeat(n - 1 times){ int min = oo; for(i = 0; i < n; i++) { if(i != source) { if(0 <= length[ i ] < min) { min = length[ i ]; vnear = i; } }

Page 13: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Pseudocode

add vnear to F; remove vnear from R; for(i = 0; i < n; i++) { if(length[vnear] + W[vnear][i] < length[i]) { length[i] = length[vnear] + W[vnear][i]; touch[i] = vnear; } } length[vnear] = -1;}

Page 14: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Example Objective

• Find shortest path from source node, A, to all other nodes

Page 15: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

7

46

2

1

1

5

3

A

E B

CD

F = AR = B, C, D, E

Page 16: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A 0 7 4 6 1

B 0

C 2 0 5

D 3 0

E 1 0

Page 17: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 7 4 6 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 18: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 7 4 6 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 19: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

7

46

2

1

1

5

3

A

E B

CD

F = A, ER = B, C, D

Page 20: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 7 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 21: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 7 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 22: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

7

46

2

1

1

5

3

A

E B

CD

F = A, D, ER = B, C

Page 23: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 5 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 24: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 5 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 25: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

7

46

2

1

1

5

3

A

E B

CD

F = A, C, D, ER = B

Page 26: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 5 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 27: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Shortest Paths

A B C D E

A ∞ 5 4 2 1

B ∞C 2 ∞ 5

D 3 ∞E 1 ∞

Page 28: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

7

46

2

1

1

5

3

A

E B

CD

F = A, B, C, D, ER = EMPTY

Page 29: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Running Time

• O(V2)• Linear Search• Vertices stored in array or linked list

• O((E + V)logV)• Binary heap used as priority queue• Vertices stored in adjacency lists

• O(E + V logV)• Fibonacci heap used as priority queue• Vertices stored in adjacency lists

Page 30: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Binary vs. FibonacciBinary

• Binary Tree

• More Structure

Fibonacci

• Collection of trees satisfying the minimum-heap priority

• Maintains pointer to root of tree with smallest priority

• More flexible

Page 31: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

• “The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.”

Page 32: Dijkstra’s Algorithm Lauren McLaughlin - 11/7/06

Movie

• \\10.1.154.4\Classes\Comp349\Dijkstra