SlideShare a Scribd company logo
Minimum Spanning Tree
Minimum Spanning Trees (MST)
2
Minimum Spanning Trees
• Spanning Tree
– A tree (i.e., connected, acyclic graph) which contains
all the vertices of the graph
• Minimum Spanning Tree
– Spanning tree with the minimum sum of weights
• Spanning forest
– If a graph is not connected, then there is a spanning
tree for each connected component of the graph
a
b c d
e
g g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
3
Applications of MST
– Find the least expensive way to connect a set of
cities, terminals, computers, etc.
4
Example
Problem
• A town has a set of houses
and a set of roads
• A road connects 2 and only
2 houses
• A road connecting houses u and v has a repair
cost w(u, v)
Goal: Repair enough (and no more) roads such
that:
1. Everyone stays connected
i.e., can reach every house from all other houses
2. Total repair cost is minimum
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
5
Minimum Spanning Trees
• A connected, undirected graph:
– Vertices = houses, Edges = roads
• A weight w(u, v) on each edge (u, v) in E
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
Find T  E such that:
1. T connects all vertices
2. w(T) = Σ(u,v)T w(u, v) is
minimized
6
Properties of Minimum Spanning Trees
• Minimum spanning tree is not unique
• MST has no cycles – see why:
– We can take out an edge of a cycle, and still have
the vertices connected while reducing the cost
• # of edges in a MST:
– |V| - 1
7
Growing a MST – Generic Approach
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
• Grow a set A of edges (initially
empty)
• Incrementally add edges to A
such that they would belong
to a MST
– An edge (u, v) is safe for A if and
only if A  {(u, v)} is also a subset
of some MST
Idea: add only “safe” edges
8
Generic MST algorithm
1. A ← 
2. while A is not a spanning tree
3. do find an edge (u, v) that is safe for A
4. A ← A  {(u, v)}
5. return A
• How do we find safe edges?
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
9
S
V - S
Finding Safe Edges
• Let’s look at edge (h, g)
– Is it safe for A initially?
• Later on:
– Let S  V be any set of vertices that includes h but not
g (so that g is in V - S)
– In any MST, there has to be one edge (at least) that
connects S with V - S
– Why not choose the edge with minimum weight (h,g)?
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
10
Definitions
• A cut (S, V - S)
is a partition of vertices
into disjoint sets S and V - S
• An edge crosses the cut
(S, V - S) if one endpoint is in S
and the other in V – S
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
S
V- S 
S
 V- S
11
Definitions (cont’d)
• A cut respects a set A
of edges  no edge
in A crosses the cut
• An edge is a light edge
crossing a cut  its weight is minimum over all
edges crossing the cut
– Note that for a given cut, there can be > 1 light
edges crossing it
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
S
V- S 
S
 V- S
12
Theorem
• Let A be a subset of some MST (i.e., T), (S, V - S) be a
cut that respects A, and (u, v) be a light edge crossing
(S, V-S). Then (u, v) is safe for A .
Proof:
• Let T be an MST that includes A
– edges in A are shaded
• Case1: If T includes (u,v), then
it would be safe for A
• Case2: Suppose T does not include
the edge (u, v)
• Idea: construct another MST T’
that includes A  {(u, v)}
u
v
S
V - S
13
u
v
S
V - S
Theorem - Proof
• T contains a unique path p between u and v
• Path p must cross the
cut (S, V - S) at least
once: let (x, y) be that edge
• Let’s remove (x,y)  breaks
T into two components.
• Adding (u, v) reconnects the components
T’ = T - {(x, y)}  {(u, v)}
x
y
p
14
Theorem – Proof (cont.)
T’ = T - {(x, y)}  {(u, v)}
Have to show that T’ is an MST:
• (u, v) is a light edge
 w(u, v) ≤ w(x, y)
• w(T ’) = w(T) - w(x, y) + w(u, v)
≤ w(T)
• Since T is a spanning tree
w(T) ≤ w(T ’)  T’ must be an MST as well
u
v
S
V - S
x
y
p
15
Theorem – Proof (cont.)
Need to show that (u, v) is safe for A:
i.e., (u, v) can be a part of an MST
• A  T and (x, y)  T 
(x, y)  A  A T’
• A  {(u, v)}  T’
• Since T’ is an MST
 (u, v) is safe for A
u
v
S
V - S
x
y
p
16
Prim’s Algorithm
• The edges in set A always form a single tree
• Starts from an arbitrary “root”: VA = {a}
• At each step:
– Find a light edge crossing (VA, V - VA)
– Add this edge to A
– Repeat until the tree spans all vertices
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
17
How to Find Light Edges Quickly?
Use a priority queue Q:
• Contains vertices not yet
included in the tree, i.e., (V – VA)
– VA = {a}, Q = {b, c, d, e, f, g, h, i}
• We associate a key with each vertex v:
key[v] = minimum weight of any edge (u, v)
connecting v to VA
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
w1
w2
Key[a]=min(w1,w2)
a
18
How to Find Light Edges Quickly?
(cont.)
• After adding a new node to VA we update the weights of all
the nodes adjacent to it
e.g., after adding a to the tree, k[b]=4 and k[h]=8
• Key of v is  if v is not adjacent to any vertices in VA
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
19
Example
0        
Q = {a, b, c, d, e, f, g, h, i}
VA = 
Extract-MIN(Q)  a
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [b] = 4  [b] = a
key [h] = 8  [h] = a
4      8 
Q = {b, c, d, e, f, g, h, i} VA = {a}
Extract-MIN(Q)  b
  
 
  
 
 
 

4

8
20
4 

8  
8

Example
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [c] = 8  [c] = b
key [h] = 8  [h] = a - unchanged
8     8 
Q = {c, d, e, f, g, h, i} VA = {a, b}
Extract-MIN(Q)  c
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [d] = 7  [d] = c
key [f] = 4  [f] = c
key [i] = 2  [i] = c
7  4  8 2
Q = {d, e, f, g, h, i} VA = {a, b, c}
Extract-MIN(Q)  i


4 

8  
8
7
4
2
21
Example
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [h] = 7  [h] = i
key [g] = 6  [g] = i
7  4 6 8
Q = {d, e, f, g, h} VA = {a, b, c, i}
Extract-MIN(Q)  f
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [g] = 2  [g] = f
key [d] = 7  [d] = c unchanged
key [e] = 10  [e] = f
7 10 2 8
Q = {d, e, g, h} VA = {a, b, c, i, f}
Extract-MIN(Q)  g
4 7

8  4
8
2
7 6
4 7

7 6 4
8
2
2
10
22
Example
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [h] = 1  [h] = g
7 10 1
Q = {d, e, h} VA = {a, b, c, i, f, g}
Extract-MIN(Q)  h
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
7 10
Q = {d, e} VA = {a, b, c, i, f, g, h}
Extract-MIN(Q)  d
4 7
10
7 2 4
8
2
1
4 7
10
1 2 4
8
2
23
Example
a
b c d
e
h g f
i
4
8 7
8
11
1 2
7
2
4 14
9
10
6
key [e] = 9  [e] = f
9
Q = {e} VA = {a, b, c, i, f, g, h, d}
Extract-MIN(Q)  e
Q =  VA = {a, b, c, i, f, g, h, d, e}
4 7
10
1 2 4
8
2 9
24
PRIM(V, E, w, r)
1. Q ← 
2. for each u  V
3. do key[u] ← ∞
4. π[u] ← NIL
5. INSERT(Q, u)
6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0
7. while Q  
8. do u ← EXTRACT-MIN(Q)
9. for each v  Adj[u]
10. do if v  Q and w(u, v) < key[v]
11. then π[v] ← u
12. DECREASE-KEY(Q, v, w(u, v))
O(V) if Q is implemented
as a min-heap
Executed |V| times
Takes O(lgV)
Min-heap
operations:
O(VlgV)
Executed O(E) times total
Constant
Takes O(lgV)
O(ElgV)
Total time: O(VlgV + ElgV) = O(ElgV)
O(lgV)
25
Using Fibonacci Heaps
• Depending on the heap implementation, running time
could be improved!
26
Prim’s Algorithm
• Prim’s algorithm is a “greedy” algorithm
– Greedy algorithms find solutions based on a sequence
of choices which are “locally” optimal at each step.
• Nevertheless, Prim’s greedy strategy produces a
globally optimum solution!
– See proof for generic approach (i.e., slides 12-15)
27
Problem 4
• (Exercise 23.2-2, page 573) Analyze Prim’s
algorithm assuming:
(a) an adjacency-list representation of G
O(ElgV)
(b) an adjacency-matrix representation of G
O(ElgV+V2)
28
PRIM(V, E, w, r)
1. Q ← 
2. for each u  V
3. do key[u] ← ∞
4. π[u] ← NIL
5. INSERT(Q, u)
6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0
7. while Q  
8. do u ← EXTRACT-MIN(Q)
9. for each v  Adj[u]
10. do if v  Q and w(u, v) < key[v]
11. then π[v] ← u
12. DECREASE-KEY(Q, v, w(u, v))
O(V) if Q is implemented
as a min-heap
Executed |V| times
Takes O(lgV)
Min-heap
operations:
O(VlgV)
Executed O(E) times
Constant
Takes O(lgV)
O(ElgV)
Total time: O(VlgV + ElgV) = O(ElgV)
O(lgV)
29
PRIM(V, E, w, r)
1. Q ← 
2. for each u  V
3. do key[u] ← ∞
4. π[u] ← NIL
5. INSERT(Q, u)
6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0
7. while Q  
8. do u ← EXTRACT-MIN(Q)
9. for (j=0; j<|V|; j++)
10. if (A[u][j]=1)
11. if v  Q and w(u, v) < key[v]
12. then π[v] ← u
13. DECREASE-KEY(Q, v, w(u, v))
O(V) if Q is implemented
as a min-heap
Executed |V| times
Takes O(lgV)
Min-heap
operations:
O(VlgV)
Executed O(V2) times total
Constant
Takes O(lgV) O(ElgV)
Total time: O(VlgV + ElgV+V2) = O(ElgV+V2)
O(lgV)
30
Problem 5
• Find an algorithm for the “maximum” spanning
tree. That is, given an undirected weighted
graph G, find a spanning tree of G of maximum
cost. Prove the correctness of your algorithm.
– Consider choosing the “heaviest” edge (i.e., the edge
associated with the largest weight) in a cut. The
generic proof can be modified easily to show that this
approach will work.
– Alternatively, multiply the weights by -1 and apply
either Prim’s or Kruskal’s algorithms without any
modification at all!
31
Problem 6
• (Exercise 23.1-8, page 567) Let T be a MST of
a graph G, and let L be the sorted list of the
edge weights of T. Show that for any other MST
T’ of G, the list L is also the sorted list of the
edge weights of T’
T, L={1,2} T’, L={1,2}

More Related Content

PDF
Minimum spanning tree
PPTX
Algorithm analysis Greedy method in algorithm.pptx
PPT
algorthm analysis from computer scince.ppt
PPT
minimum spanning trees Algorithm
PPT
Greedy Approach in Design Analysis and Algorithms
PPTX
Greedy Strategy.pptxbfasjbjfn asnfn anjn
PPT
lecture 16
PPTX
lec6.pptx
Minimum spanning tree
Algorithm analysis Greedy method in algorithm.pptx
algorthm analysis from computer scince.ppt
minimum spanning trees Algorithm
Greedy Approach in Design Analysis and Algorithms
Greedy Strategy.pptxbfasjbjfn asnfn anjn
lecture 16
lec6.pptx

Similar to Unit 5 session 2 MinimumSpanningTrees.ppt (20)

PDF
Daa chapter13
PPTX
8_MST_pptx.pptx
PPTX
Prims & kruskal algorithms
PDF
DATA STRUCTURES & ALGORITHMS MINIMUM SPANNING TREE
PPT
Prim Algorithm and kruskal algorithm
PPT
Chapter 24 aoa
PPTX
Greedy technique - Algorithm design techniques using data structures
PPT
19 primkruskal
PPT
Farhana shaikh webinar_spanning tree
PPTX
Minimum spanning tree algorithms by ibrahim_alfayoumi
PPT
Minimum Spanning Tree
PPTX
7. Spanning trees
PPTX
APznzaZLM_MVouyxM4cxHPJR5BC-TAxTWqhQJ2EywQQuXStxJTDoGkHdsKEQGd4Vo7BS3Q1npCOMV...
PDF
Skiena algorithm 2007 lecture13 minimum spanning trees
PPTX
A presentation on prim's and kruskal's algorithm
PDF
Algorithm chapter 9
PDF
19 Minimum Spanning Trees
PDF
prims and Kruskal 1.pdf
Daa chapter13
8_MST_pptx.pptx
Prims & kruskal algorithms
DATA STRUCTURES & ALGORITHMS MINIMUM SPANNING TREE
Prim Algorithm and kruskal algorithm
Chapter 24 aoa
Greedy technique - Algorithm design techniques using data structures
19 primkruskal
Farhana shaikh webinar_spanning tree
Minimum spanning tree algorithms by ibrahim_alfayoumi
Minimum Spanning Tree
7. Spanning trees
APznzaZLM_MVouyxM4cxHPJR5BC-TAxTWqhQJ2EywQQuXStxJTDoGkHdsKEQGd4Vo7BS3Q1npCOMV...
Skiena algorithm 2007 lecture13 minimum spanning trees
A presentation on prim's and kruskal's algorithm
Algorithm chapter 9
19 Minimum Spanning Trees
prims and Kruskal 1.pdf
Ad

Recently uploaded (20)

PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
“Next-Gen AI: Trends Reshaping Our World”
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPT
Drone Technology Electronics components_1
PDF
ETO & MEO Certificate of Competency Questions and Answers
PDF
Queuing formulas to evaluate throughputs and servers
PPTX
CH1 Production IntroductoryConcepts.pptx
DOCX
573137875-Attendance-Management-System-original
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
PPTX
AgentX UiPath Community Webinar series - Delhi
PPT
Chapter 6 Design in software Engineeing.ppt
PPTX
anatomy of limbus and anterior chamber .pptx
PPTX
436813905-LNG-Process-Overview-Short.pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPT
Project quality management in manufacturing
PDF
algorithms-16-00088-v2hghjjnjnhhhnnjhj.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
“Next-Gen AI: Trends Reshaping Our World”
Arduino robotics embedded978-1-4302-3184-4.pdf
Drone Technology Electronics components_1
ETO & MEO Certificate of Competency Questions and Answers
Queuing formulas to evaluate throughputs and servers
CH1 Production IntroductoryConcepts.pptx
573137875-Attendance-Management-System-original
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
AgentX UiPath Community Webinar series - Delhi
Chapter 6 Design in software Engineeing.ppt
anatomy of limbus and anterior chamber .pptx
436813905-LNG-Process-Overview-Short.pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
Project quality management in manufacturing
algorithms-16-00088-v2hghjjnjnhhhnnjhj.pdf
Ad

Unit 5 session 2 MinimumSpanningTrees.ppt

  • 1. Minimum Spanning Tree Minimum Spanning Trees (MST)
  • 2. 2 Minimum Spanning Trees • Spanning Tree – A tree (i.e., connected, acyclic graph) which contains all the vertices of the graph • Minimum Spanning Tree – Spanning tree with the minimum sum of weights • Spanning forest – If a graph is not connected, then there is a spanning tree for each connected component of the graph a b c d e g g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 3. 3 Applications of MST – Find the least expensive way to connect a set of cities, terminals, computers, etc.
  • 4. 4 Example Problem • A town has a set of houses and a set of roads • A road connects 2 and only 2 houses • A road connecting houses u and v has a repair cost w(u, v) Goal: Repair enough (and no more) roads such that: 1. Everyone stays connected i.e., can reach every house from all other houses 2. Total repair cost is minimum a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 5. 5 Minimum Spanning Trees • A connected, undirected graph: – Vertices = houses, Edges = roads • A weight w(u, v) on each edge (u, v) in E a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 Find T  E such that: 1. T connects all vertices 2. w(T) = Σ(u,v)T w(u, v) is minimized
  • 6. 6 Properties of Minimum Spanning Trees • Minimum spanning tree is not unique • MST has no cycles – see why: – We can take out an edge of a cycle, and still have the vertices connected while reducing the cost • # of edges in a MST: – |V| - 1
  • 7. 7 Growing a MST – Generic Approach a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 • Grow a set A of edges (initially empty) • Incrementally add edges to A such that they would belong to a MST – An edge (u, v) is safe for A if and only if A  {(u, v)} is also a subset of some MST Idea: add only “safe” edges
  • 8. 8 Generic MST algorithm 1. A ←  2. while A is not a spanning tree 3. do find an edge (u, v) that is safe for A 4. A ← A  {(u, v)} 5. return A • How do we find safe edges? a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 9. 9 S V - S Finding Safe Edges • Let’s look at edge (h, g) – Is it safe for A initially? • Later on: – Let S  V be any set of vertices that includes h but not g (so that g is in V - S) – In any MST, there has to be one edge (at least) that connects S with V - S – Why not choose the edge with minimum weight (h,g)? a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 10. 10 Definitions • A cut (S, V - S) is a partition of vertices into disjoint sets S and V - S • An edge crosses the cut (S, V - S) if one endpoint is in S and the other in V – S a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 S V- S  S  V- S
  • 11. 11 Definitions (cont’d) • A cut respects a set A of edges  no edge in A crosses the cut • An edge is a light edge crossing a cut  its weight is minimum over all edges crossing the cut – Note that for a given cut, there can be > 1 light edges crossing it a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 S V- S  S  V- S
  • 12. 12 Theorem • Let A be a subset of some MST (i.e., T), (S, V - S) be a cut that respects A, and (u, v) be a light edge crossing (S, V-S). Then (u, v) is safe for A . Proof: • Let T be an MST that includes A – edges in A are shaded • Case1: If T includes (u,v), then it would be safe for A • Case2: Suppose T does not include the edge (u, v) • Idea: construct another MST T’ that includes A  {(u, v)} u v S V - S
  • 13. 13 u v S V - S Theorem - Proof • T contains a unique path p between u and v • Path p must cross the cut (S, V - S) at least once: let (x, y) be that edge • Let’s remove (x,y)  breaks T into two components. • Adding (u, v) reconnects the components T’ = T - {(x, y)}  {(u, v)} x y p
  • 14. 14 Theorem – Proof (cont.) T’ = T - {(x, y)}  {(u, v)} Have to show that T’ is an MST: • (u, v) is a light edge  w(u, v) ≤ w(x, y) • w(T ’) = w(T) - w(x, y) + w(u, v) ≤ w(T) • Since T is a spanning tree w(T) ≤ w(T ’)  T’ must be an MST as well u v S V - S x y p
  • 15. 15 Theorem – Proof (cont.) Need to show that (u, v) is safe for A: i.e., (u, v) can be a part of an MST • A  T and (x, y)  T  (x, y)  A  A T’ • A  {(u, v)}  T’ • Since T’ is an MST  (u, v) is safe for A u v S V - S x y p
  • 16. 16 Prim’s Algorithm • The edges in set A always form a single tree • Starts from an arbitrary “root”: VA = {a} • At each step: – Find a light edge crossing (VA, V - VA) – Add this edge to A – Repeat until the tree spans all vertices a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 17. 17 How to Find Light Edges Quickly? Use a priority queue Q: • Contains vertices not yet included in the tree, i.e., (V – VA) – VA = {a}, Q = {b, c, d, e, f, g, h, i} • We associate a key with each vertex v: key[v] = minimum weight of any edge (u, v) connecting v to VA a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 w1 w2 Key[a]=min(w1,w2) a
  • 18. 18 How to Find Light Edges Quickly? (cont.) • After adding a new node to VA we update the weights of all the nodes adjacent to it e.g., after adding a to the tree, k[b]=4 and k[h]=8 • Key of v is  if v is not adjacent to any vertices in VA a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6
  • 19. 19 Example 0         Q = {a, b, c, d, e, f, g, h, i} VA =  Extract-MIN(Q)  a a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [b] = 4  [b] = a key [h] = 8  [h] = a 4      8  Q = {b, c, d, e, f, g, h, i} VA = {a} Extract-MIN(Q)  b                4  8
  • 20. 20 4   8   8  Example a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [c] = 8  [c] = b key [h] = 8  [h] = a - unchanged 8     8  Q = {c, d, e, f, g, h, i} VA = {a, b} Extract-MIN(Q)  c a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [d] = 7  [d] = c key [f] = 4  [f] = c key [i] = 2  [i] = c 7  4  8 2 Q = {d, e, f, g, h, i} VA = {a, b, c} Extract-MIN(Q)  i   4   8   8 7 4 2
  • 21. 21 Example a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [h] = 7  [h] = i key [g] = 6  [g] = i 7  4 6 8 Q = {d, e, f, g, h} VA = {a, b, c, i} Extract-MIN(Q)  f a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [g] = 2  [g] = f key [d] = 7  [d] = c unchanged key [e] = 10  [e] = f 7 10 2 8 Q = {d, e, g, h} VA = {a, b, c, i, f} Extract-MIN(Q)  g 4 7  8  4 8 2 7 6 4 7  7 6 4 8 2 2 10
  • 22. 22 Example a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [h] = 1  [h] = g 7 10 1 Q = {d, e, h} VA = {a, b, c, i, f, g} Extract-MIN(Q)  h a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 7 10 Q = {d, e} VA = {a, b, c, i, f, g, h} Extract-MIN(Q)  d 4 7 10 7 2 4 8 2 1 4 7 10 1 2 4 8 2
  • 23. 23 Example a b c d e h g f i 4 8 7 8 11 1 2 7 2 4 14 9 10 6 key [e] = 9  [e] = f 9 Q = {e} VA = {a, b, c, i, f, g, h, d} Extract-MIN(Q)  e Q =  VA = {a, b, c, i, f, g, h, d, e} 4 7 10 1 2 4 8 2 9
  • 24. 24 PRIM(V, E, w, r) 1. Q ←  2. for each u  V 3. do key[u] ← ∞ 4. π[u] ← NIL 5. INSERT(Q, u) 6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0 7. while Q   8. do u ← EXTRACT-MIN(Q) 9. for each v  Adj[u] 10. do if v  Q and w(u, v) < key[v] 11. then π[v] ← u 12. DECREASE-KEY(Q, v, w(u, v)) O(V) if Q is implemented as a min-heap Executed |V| times Takes O(lgV) Min-heap operations: O(VlgV) Executed O(E) times total Constant Takes O(lgV) O(ElgV) Total time: O(VlgV + ElgV) = O(ElgV) O(lgV)
  • 25. 25 Using Fibonacci Heaps • Depending on the heap implementation, running time could be improved!
  • 26. 26 Prim’s Algorithm • Prim’s algorithm is a “greedy” algorithm – Greedy algorithms find solutions based on a sequence of choices which are “locally” optimal at each step. • Nevertheless, Prim’s greedy strategy produces a globally optimum solution! – See proof for generic approach (i.e., slides 12-15)
  • 27. 27 Problem 4 • (Exercise 23.2-2, page 573) Analyze Prim’s algorithm assuming: (a) an adjacency-list representation of G O(ElgV) (b) an adjacency-matrix representation of G O(ElgV+V2)
  • 28. 28 PRIM(V, E, w, r) 1. Q ←  2. for each u  V 3. do key[u] ← ∞ 4. π[u] ← NIL 5. INSERT(Q, u) 6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0 7. while Q   8. do u ← EXTRACT-MIN(Q) 9. for each v  Adj[u] 10. do if v  Q and w(u, v) < key[v] 11. then π[v] ← u 12. DECREASE-KEY(Q, v, w(u, v)) O(V) if Q is implemented as a min-heap Executed |V| times Takes O(lgV) Min-heap operations: O(VlgV) Executed O(E) times Constant Takes O(lgV) O(ElgV) Total time: O(VlgV + ElgV) = O(ElgV) O(lgV)
  • 29. 29 PRIM(V, E, w, r) 1. Q ←  2. for each u  V 3. do key[u] ← ∞ 4. π[u] ← NIL 5. INSERT(Q, u) 6. DECREASE-KEY(Q, r, 0) ► key[r] ← 0 7. while Q   8. do u ← EXTRACT-MIN(Q) 9. for (j=0; j<|V|; j++) 10. if (A[u][j]=1) 11. if v  Q and w(u, v) < key[v] 12. then π[v] ← u 13. DECREASE-KEY(Q, v, w(u, v)) O(V) if Q is implemented as a min-heap Executed |V| times Takes O(lgV) Min-heap operations: O(VlgV) Executed O(V2) times total Constant Takes O(lgV) O(ElgV) Total time: O(VlgV + ElgV+V2) = O(ElgV+V2) O(lgV)
  • 30. 30 Problem 5 • Find an algorithm for the “maximum” spanning tree. That is, given an undirected weighted graph G, find a spanning tree of G of maximum cost. Prove the correctness of your algorithm. – Consider choosing the “heaviest” edge (i.e., the edge associated with the largest weight) in a cut. The generic proof can be modified easily to show that this approach will work. – Alternatively, multiply the weights by -1 and apply either Prim’s or Kruskal’s algorithms without any modification at all!
  • 31. 31 Problem 6 • (Exercise 23.1-8, page 567) Let T be a MST of a graph G, and let L be the sorted list of the edge weights of T. Show that for any other MST T’ of G, the list L is also the sorted list of the edge weights of T’ T, L={1,2} T’, L={1,2}