Lecture-09 - Shortest Path Algorithms
Lecture-09 - Shortest Path Algorithms
CT065-3.5-3
• Greedy Algorithms
• Applications of Greedy Algorithms:
– Minimum Spanning Trees (MST)
• Prim’s Algorithm
• Kruskal’s Algorithm
– Shortest Path Trees
• Dijkstra’s Algorithm
Module Code and Module Title Title of Slides Slide 2 (of 42)
Learning Outcomes
Module Code and Module Title Title of Slides Slide 3 (of 42)
Key terms
• Greedy algorithm
• Spanning tree
• Minimum spanning tree (MST)
• Prim’s algorithm
• Kruskal’s algorithm
• Dijkstra’s algorithm
Module Code and Module Title Title of Slides Slide 4 (of 42)
Greedy Algorithms
Module Code and Module Title Title of Slides Slide 5 (of 42)
Greedy Algorithms
Module Code and Module Title Title of Slides Slide 6 (of 42)
Applications of Greedy Algorithms
• Graph Algorithms
– Minimum Spanning Trees
– Shortest Path Trees
• Data compression
– Huffman Encoding
• Combinatorial problems
– Traveling salesman problem
– Knapsack problem
Module Code and Module Title Title of Slides Slide 7 (of 42)
Spanning Trees
• Spanning Trees: A subgraph T of an undirected graph
G=(V,E) is a spanning tree of G if it is a tree and contains every
vertex of G.
E.g:
Module Code and Module Title Title of Slides Slide 8 (of 42)
Weighted Graphs
Module Code and Module Title Title of Slides Slide 9 (of 42)
Weighted Graphs
• Example: Spanning trees for a weighted graph
Module Code and Module Title Title of Slides Slide 10 (of 42)
Minimum Spanning Trees (MST)
Module Code and Module Title Title of Slides Slide 11 (of 42)
Minimum Spanning Trees
• Example: Minimum spanning tree for a weighted graph
Module Code and Module Title Title of Slides Slide 12 (of 42)
Minimum Spanning Trees (MST)
Note:
The MST may not be unique. However, if the weights of
all the edges are pair-wise distinct then it is indeed
unique.
Module Code and Module Title Title of Slides Slide 13 (of 42)
Minimum Spanning Tree Problem
Module Code and Module Title Title of Slides Slide 15 (of 42)
Prim’s Algorithm
tree = null
E = sequence of all edges of graph sorted by weight;
for i = 1 to |V| // V = no. of vertices in graph
for j = 1 to |E|
if ej from edges does not form a cycle with
edges in tree and is incident to a
vertex in tree
add ej to tree;
break;
Module Code and Module Title Title of Slides Slide 16 (of 42)
Prim’s Algorithm - Example
5 9
13
16
c d
15
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 17 (of 42)
Prim’s Algorithm - Example
Step 1 f
3
g
Step 2 f
3
g
Module Code and Module Title Title of Slides Slide 18 (of 42)
Prim’s Algorithm - Example
Step 3 d
7
e f
8
3
g
Module Code and Module Title Title of Slides Slide 19 (of 42)
Prim’s Algorithm - Example
Step 4
c d
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 20 (of 42)
Prim’s Algorithm - Example
Step 5 a
c d
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 21 (of 42)
Prim’s Algorithm - Example
Step 6 a
6
b
c d
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 22 (of 42)
Prim’s Algorithm
Module Code and Module Title Title of Slides Slide 23 (of 42)
Kruskal’s Algorithm
Module Code and Module Title Title of Slides Slide 24 (of 42)
Kruskal’s Algorithm
Let T be the set of selected edges // for the MST to be built
Initialize T to the empty set
Let E be the set of graph edges
while ( E ! = the empty set ) && (T ! = V-1) //graph has V vertices
{ Let (u, v) be a least cost edge in E
E = E – {u, v} //delete the edge from E
if (u, v) does not create a cycle in T)
add edge (u, v) to T }
If (T == n – 1)
T is a minimum cost spanning tree
Else
The network is not connected and has no spanning tree
Module Code and Module Title Title of Slides Slide 25 (of 42)
Kruskal’s Algorithm - Example
5 9
13
16
c d
15
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 26 (of 42)
Kruskal’s Algorithm - Example
f
Step 1
3
g
a
Step 2
5
c f
3
g
Module Code and Module Title Title of Slides Slide 27 (of 42)
Kruskal’s Algorithm - Example
Step 3 a
6
b
3
g
Module Code and Module Title Title of Slides Slide 28 (of 42)
Kruskal’s Algorithm - Example
Step 4 a
6
b
c d
7
f
3
g
Module Code and Module Title Title of Slides Slide 29 (of 42)
Kruskal’s Algorithm - Example
Step 5 a
6
b
c d
7
e f
8
3
g
Module Code and Module Title Title of Slides Slide 30 (of 42)
Kruskal’s Algorithm - Example
Step 6 a
6
b
c d
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 31 (of 42)
Kruskal’s Algorithm
Module Code and Module Title Title of Slides Slide 32 (of 42)
Shortest Path Problem
Module Code and Module Title Title of Slides Slide 33 (of 42)
Dijkstra’s Algorithm
Module Code and Module Title Title of Slides Slide 34 (of 42)
Dijkstra’s Algorithm
Module Code and Module Title Title of Slides Slide 35 (of 42)
Dijkstra’s Algorithm - Example
5 9
13
16
c d
15
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 36 (of 42)
Dijkstra’s Algorithm - Example
Trace of algorithm:
Iteration initial 1 2 3 4 5 6 7
Active vertex a c b f e g
d
currDist (a) 0
currDist (b) 6 6
currDist (c) 5
currDist (d) 21 21 21 21
currDist (e) 19 19
currDist (f ) 17 17
currDist (g) 20 20
Module Code and Module Title Title of Slides Slide 37 (of 42)
Dijkstra’s Algorithm - Example
Module Code and Module Title Title of Slides Slide 38 (of 42)
Dijkstra’s Algorithm - Example
5
13
16
c d
15
7
e 12 f
8
3
g
Module Code and Module Title Title of Slides Slide 39 (of 42)
Dijkstra’s Algorithm
Module Code and Module Title Title of Slides Slide 40 (of 42)
Summary
•Greedy Algorithms
•Applications of Greedy Algorithms:
–Minimum Spanning Trees (MST)
•Prim’s Algorithm
•Kruskal’s Algorithm
Module Code and Module Title Title of Slides Slide 41 (of 42)
Next Session
Module Code and Module Title Title of Slides Slide 42 (of 42)