Transcript
Page 1: 19 Minimum Spanning Trees

Analysis of AlgorithmsMinimum Spanning Trees

Andres Mendez-Vazquez

November 8, 2015

1 / 69

Page 2: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

2 / 69

Page 3: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

3 / 69

Page 4: 19 Minimum Spanning Trees

Originally

We had a Graph without weights2

3

5

1

4

6

7

9

8

4 / 69

Page 5: 19 Minimum Spanning Trees

Then

Now, we have have weightsb

c

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

5 / 69

Page 6: 19 Minimum Spanning Trees

Finally, the optimization problem

We want to findmin

T

∑(u,v)∈T

w(u, v)

Where T ⊆ E such that T is acyclic and connects all the vertices.

23

5

1

4

6

7

9

812

4

5

11

8

9

2

1

17

8

2

21

This problem is calledThe minimum spanning tree problem

6 / 69

Page 7: 19 Minimum Spanning Trees

Finally, the optimization problem

We want to findmin

T

∑(u,v)∈T

w(u, v)

Where T ⊆ E such that T is acyclic and connects all the vertices.

23

5

1

4

6

7

9

812

4

5

11

8

9

2

1

17

8

2

21

This problem is calledThe minimum spanning tree problem

6 / 69

Page 8: 19 Minimum Spanning Trees

When do you need minimum spanning trees?

In power distributionWe want to connect points x and y with the minimum amount of cable.

In a wireless networkGiven a collection of mobile beacons we want to maintain the minimumconnection overhead between all of them.

7 / 69

Page 9: 19 Minimum Spanning Trees

When do you need minimum spanning trees?

In power distributionWe want to connect points x and y with the minimum amount of cable.

In a wireless networkGiven a collection of mobile beacons we want to maintain the minimumconnection overhead between all of them.

7 / 69

Page 10: 19 Minimum Spanning Trees

Some Applications

Tracking the Genetic Variance of Age-Gender-AssociatedStaphylococcus Aureus

8 / 69

Page 11: 19 Minimum Spanning Trees

Some ApplicationsWhat?Urban Tapestries is an interactive location-based wireless applicationallowing users to access and publish location-specific multimedia content.

Using MST we can create paths for public multimedia shows that areno too exhausting

9 / 69

Page 12: 19 Minimum Spanning Trees

These models can be seen as

Connected, undirected graphs G = (V , E)E is the set of possible connections between pairs of beacons.Each of the this edges (u, v) has a weight w(u, v) specifying the costof connecting u and v.

10 / 69

Page 13: 19 Minimum Spanning Trees

These models can be seen as

Connected, undirected graphs G = (V , E)E is the set of possible connections between pairs of beacons.Each of the this edges (u, v) has a weight w(u, v) specifying the costof connecting u and v.

10 / 69

Page 14: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

11 / 69

Page 15: 19 Minimum Spanning Trees

Growing a Minimum Spanning Tree

There are two classic algorithms, Prim and KruskalBoth algorithms Kruskal and Prim use a greedy approach.

Basic greedy ideaPrior to each iteration, A is a subset of some minimum spanning tree.At each step, we determine an edge (u, v) that can be added to Asuch that A ∪ {(u, v)} is also a subset of a minimum spanning tree.

12 / 69

Page 16: 19 Minimum Spanning Trees

Growing a Minimum Spanning Tree

There are two classic algorithms, Prim and KruskalBoth algorithms Kruskal and Prim use a greedy approach.

Basic greedy ideaPrior to each iteration, A is a subset of some minimum spanning tree.At each step, we determine an edge (u, v) that can be added to Asuch that A ∪ {(u, v)} is also a subset of a minimum spanning tree.

12 / 69

Page 17: 19 Minimum Spanning Trees

Growing a Minimum Spanning Tree

There are two classic algorithms, Prim and KruskalBoth algorithms Kruskal and Prim use a greedy approach.

Basic greedy ideaPrior to each iteration, A is a subset of some minimum spanning tree.At each step, we determine an edge (u, v) that can be added to Asuch that A ∪ {(u, v)} is also a subset of a minimum spanning tree.

12 / 69

Page 18: 19 Minimum Spanning Trees

Generic minimum spanning tree algorithm

A Generic CodeGeneric-MST(G,w)

1 A = ∅2 while A does not form a spanning tree3 do find an edge (u, v) that is safe for A4 A = A ∪ {(u, v)}5 return A

This has the following loop invarianceInitialization: Line 1 A trivially satisfies.Maintenance: The loop only adds safe edges.Termination: The final A contains all the edges in a minimum spanning

tree.

13 / 69

Page 19: 19 Minimum Spanning Trees

Generic minimum spanning tree algorithm

A Generic CodeGeneric-MST(G,w)

1 A = ∅2 while A does not form a spanning tree3 do find an edge (u, v) that is safe for A4 A = A ∪ {(u, v)}5 return A

This has the following loop invarianceInitialization: Line 1 A trivially satisfies.Maintenance: The loop only adds safe edges.Termination: The final A contains all the edges in a minimum spanning

tree.

13 / 69

Page 20: 19 Minimum Spanning Trees

Generic minimum spanning tree algorithm

A Generic CodeGeneric-MST(G,w)

1 A = ∅2 while A does not form a spanning tree3 do find an edge (u, v) that is safe for A4 A = A ∪ {(u, v)}5 return A

This has the following loop invarianceInitialization: Line 1 A trivially satisfies.Maintenance: The loop only adds safe edges.Termination: The final A contains all the edges in a minimum spanning

tree.

13 / 69

Page 21: 19 Minimum Spanning Trees

Generic minimum spanning tree algorithm

A Generic CodeGeneric-MST(G,w)

1 A = ∅2 while A does not form a spanning tree3 do find an edge (u, v) that is safe for A4 A = A ∪ {(u, v)}5 return A

This has the following loop invarianceInitialization: Line 1 A trivially satisfies.Maintenance: The loop only adds safe edges.Termination: The final A contains all the edges in a minimum spanning

tree.

13 / 69

Page 22: 19 Minimum Spanning Trees

Some basic definitions for the Greedy Choice

A cut (S , V − S) is a partition of VThen (u, v) in E crosses the cut (S ,V − S) if one end point is in Sand the other is in V − S .We say that a cut respects A if no edge in A crosses the cut.A light edge is an edge crossing the cut with minimum weight withrespect to the other edges crossing the cut.

14 / 69

Page 23: 19 Minimum Spanning Trees

Some basic definitions for the Greedy Choice

A cut (S , V − S) is a partition of VThen (u, v) in E crosses the cut (S ,V − S) if one end point is in Sand the other is in V − S .We say that a cut respects A if no edge in A crosses the cut.A light edge is an edge crossing the cut with minimum weight withrespect to the other edges crossing the cut.

14 / 69

Page 24: 19 Minimum Spanning Trees

Some basic definitions for the Greedy Choice

A cut (S , V − S) is a partition of VThen (u, v) in E crosses the cut (S ,V − S) if one end point is in Sand the other is in V − S .We say that a cut respects A if no edge in A crosses the cut.A light edge is an edge crossing the cut with minimum weight withrespect to the other edges crossing the cut.

14 / 69

Page 25: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

15 / 69

Page 26: 19 Minimum Spanning Trees

The Greedy Choice

RemarkThe following algorithms are based in the Greedy Choice.

Which Greedy Choice?The way we add edges to the set of edges belonging to the MinimumSpanning Trees.

They are known asSafe Edges

16 / 69

Page 27: 19 Minimum Spanning Trees

The Greedy Choice

RemarkThe following algorithms are based in the Greedy Choice.

Which Greedy Choice?The way we add edges to the set of edges belonging to the MinimumSpanning Trees.

They are known asSafe Edges

16 / 69

Page 28: 19 Minimum Spanning Trees

The Greedy Choice

RemarkThe following algorithms are based in the Greedy Choice.

Which Greedy Choice?The way we add edges to the set of edges belonging to the MinimumSpanning Trees.

They are known asSafe Edges

16 / 69

Page 29: 19 Minimum Spanning Trees

Recognizing safe edges

Theorem for Recognizing Safe Edges (23.1)Let G = (V ,E) be a connected, undirected graph with weights w definedon E . Let A ⊆ E that is included in a MST for G, let (S ,V − S) be anycut of G that respects A, and let (u, v) be a light edge crossing(S ,V − S). Then, edge (u, v) is safe for A.

b c d

i

h g f

ea

4

8

8

11

7

2

6

1 2

2

4

9

14

10

S

V-S

S

V-S

17 / 69

Page 30: 19 Minimum Spanning Trees

Observations

Notice thatAt any point in the execution of the algorithm the graphGA = (V ,A) is a forest, and each of the connected componentsof GA is a tree.

ThusAny safe edge (u, v) for A connects distinct components of GA, sinceA ∪ {(u, v)} must be acyclic.

18 / 69

Page 31: 19 Minimum Spanning Trees

Observations

Notice thatAt any point in the execution of the algorithm the graphGA = (V ,A) is a forest, and each of the connected componentsof GA is a tree.

ThusAny safe edge (u, v) for A connects distinct components of GA, sinceA ∪ {(u, v)} must be acyclic.

18 / 69

Page 32: 19 Minimum Spanning Trees

The basic corollary

Corollary 23.2Let G = (V ,E) be a connected, undirected graph with real-valued weightfunction w defined on E . Let A be a subset of E that is included in someminimum spanning tree for G, and let C = (Vc,Ec) be a connectedcomponent (tree) in the forest GA = (V ,A). If (u, v) is a light edgeconnecting C to some other component in GA, then (u, v) is safe for A.

ProofThe cut (Vc,V −Vc) respects A, and (u, v) is a light edge for this cut.Therefore, (u, v) is safe for A.

19 / 69

Page 33: 19 Minimum Spanning Trees

The basic corollary

Corollary 23.2Let G = (V ,E) be a connected, undirected graph with real-valued weightfunction w defined on E . Let A be a subset of E that is included in someminimum spanning tree for G, and let C = (Vc,Ec) be a connectedcomponent (tree) in the forest GA = (V ,A). If (u, v) is a light edgeconnecting C to some other component in GA, then (u, v) is safe for A.

ProofThe cut (Vc,V −Vc) respects A, and (u, v) is a light edge for this cut.Therefore, (u, v) is safe for A.

19 / 69

Page 34: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

20 / 69

Page 35: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

21 / 69

Page 36: 19 Minimum Spanning Trees

Kruskal’s Algorithm

AlgorithmMST-KRUSKAL(G,w)

1 A = ∅2 for each vertex v ∈ V [G]3 do Make-Set4 sort the edges of E into non-decreasing order by weight w5 for each edge (u, v) ∈ E taken in non-decreasing order by weight6 do if FIND − SET (u) 6= FIND − SET (v)7 then A = A ∪ {(u, v)}8 Union(u,v)9 return A

22 / 69

Page 37: 19 Minimum Spanning Trees

Kruskal’s Algorithm

AlgorithmMST-KRUSKAL(G,w)

1 A = ∅2 for each vertex v ∈ V [G]3 do Make-Set4 sort the edges of E into non-decreasing order by weight w5 for each edge (u, v) ∈ E taken in non-decreasing order by weight6 do if FIND − SET (u) 6= FIND − SET (v)7 then A = A ∪ {(u, v)}8 Union(u,v)9 return A

22 / 69

Page 38: 19 Minimum Spanning Trees

Kruskal’s Algorithm

AlgorithmMST-KRUSKAL(G,w)

1 A = ∅2 for each vertex v ∈ V [G]3 do Make-Set4 sort the edges of E into non-decreasing order by weight w5 for each edge (u, v) ∈ E taken in non-decreasing order by weight6 do if FIND − SET (u) 6= FIND − SET (v)7 then A = A ∪ {(u, v)}8 Union(u,v)9 return A

22 / 69

Page 39: 19 Minimum Spanning Trees

Kruskal’s Algorithm

AlgorithmMST-KRUSKAL(G,w)

1 A = ∅2 for each vertex v ∈ V [G]3 do Make-Set4 sort the edges of E into non-decreasing order by weight w5 for each edge (u, v) ∈ E taken in non-decreasing order by weight6 do if FIND − SET (u) 6= FIND − SET (v)7 then A = A ∪ {(u, v)}8 Union(u,v)9 return A

22 / 69

Page 40: 19 Minimum Spanning Trees

Let us run the Algorithm

We have as an input the following graph

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

23 / 69

Page 41: 19 Minimum Spanning Trees

Let us run the Algorithm

1st step everybody is a set!!!

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

24 / 69

Page 42: 19 Minimum Spanning Trees

Let us run the Algorithm

Given (f , g) with weight 1Question: FIND − SET (f ) 6= FIND − SET (g)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

25 / 69

Page 43: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(f , g)}, next FIND − SET (f ) 6= FIND − SET (i)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

26 / 69

Page 44: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(f , i)}, next FIND − SET (c) 6= FIND − SET (f )?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

27 / 69

Page 45: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(c, f )}, next FIND − SET (a) 6= FIND − SET (d)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

28 / 69

Page 46: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(a, d)}, next FIND − SET (b) 6= FIND − SET (e)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

29 / 69

Page 47: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(b, e)}, next FIND − SET (e) 6= FIND − SET (i)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

30 / 69

Page 48: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(e, i)}, next FIND − SET (b) 6= FIND − SET (f )?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

31 / 69

Page 49: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A, next FIND − SET (b) 6= FIND − SET (c)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

32 / 69

Page 50: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A, next FIND − SET (d) 6= FIND − SET (e)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

33 / 69

Page 51: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(d, e)}, next FIND − SET (a) 6= FIND − SET (b)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

34 / 69

Page 52: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A, next FIND − SET (e) 6= FIND − SET (g)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

35 / 69

Page 53: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A, next FIND − SET (g) 6= FIND − SET (h)?

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

36 / 69

Page 54: 19 Minimum Spanning Trees

Let us run the Algorithm

Then A = A ∪ {(g, h)}

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

37 / 69

Page 55: 19 Minimum Spanning Trees

Kruskal’s Algorithm

AlgorithmMST-KRUSKAL(G,w)

1 A = ∅2 for each vertex v ∈ V [G]3 do Make-Set4 sort the edges of E into non-decreasing order by weight w5 for each edge (u, v) ∈ E taken in non-decreasing order by weight6 do if FIND − SET (u) 6= FIND − SET (v)7 then A = A ∪ {(u, v)}8 Union(u,v)9 return A

38 / 69

Page 56: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 57: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 58: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 59: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 60: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 61: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 62: 19 Minimum Spanning Trees

ComplexityExplanation

Line 1. Initializing the set A takes O(1) time.Line 2. Sorting the edges in line 4 takes O(E log E).Lines 5 to 8. The for loop performs:

I O(E) FIND-SET and UNION operations.I Along with the |V | MAKE-SET operations that take O((V + E)α(V )),

where α is the pseudoinverse of the Ackermann’s function.

ThusGiven that G is connected, we have |E | ≥ |V | − 1, and so thedisjoint-set operations take O(Eα(V )) time andα(|V |) = O(log V ) = O(log E).The total running time of Kruskal’s algorithm is O(E log E), butobserving that |E | < |V |2 7−→ log |E | < 2 log |V |, we have thatlog |E | = O (log V ), and so we can restate the running time of thealgorithm as O(E log V ).

39 / 69

Page 63: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

40 / 69

Page 64: 19 Minimum Spanning Trees

Prim’s Algorithm

Prim’s algorithm operates much like Dijkstra’s algorithmThe tree starts from an arbitrary root vertex r .At each step, a light edge is added to the tree A that connects A toan isolated vertex of GA = (V ,A).When the algorithm terminates, the edges in A form a minimumspanning tree.

41 / 69

Page 65: 19 Minimum Spanning Trees

Prim’s Algorithm

Prim’s algorithm operates much like Dijkstra’s algorithmThe tree starts from an arbitrary root vertex r .At each step, a light edge is added to the tree A that connects A toan isolated vertex of GA = (V ,A).When the algorithm terminates, the edges in A form a minimumspanning tree.

41 / 69

Page 66: 19 Minimum Spanning Trees

Prim’s Algorithm

Prim’s algorithm operates much like Dijkstra’s algorithmThe tree starts from an arbitrary root vertex r .At each step, a light edge is added to the tree A that connects A toan isolated vertex of GA = (V ,A).When the algorithm terminates, the edges in A form a minimumspanning tree.

41 / 69

Page 67: 19 Minimum Spanning Trees

Problem

ImportantIn order to implement Prim’s algorithm efficiently, we need a fast way toselect a new edge to add to the tree formed by the edges in A.

For this, we use a min-priority queue QDuring execution of the algorithm, all vertices that are not in the treereside in a min-priority queue Q based on a key attribute.

There is a field key for every vertex vIt is the minimum weight of any edge connecting v to a vertex in theminimum spanning tree (THE LIGHT EDGE!!!).By convention, v.key =∞ if there is no such edge.

42 / 69

Page 68: 19 Minimum Spanning Trees

Problem

ImportantIn order to implement Prim’s algorithm efficiently, we need a fast way toselect a new edge to add to the tree formed by the edges in A.

For this, we use a min-priority queue QDuring execution of the algorithm, all vertices that are not in the treereside in a min-priority queue Q based on a key attribute.

There is a field key for every vertex vIt is the minimum weight of any edge connecting v to a vertex in theminimum spanning tree (THE LIGHT EDGE!!!).By convention, v.key =∞ if there is no such edge.

42 / 69

Page 69: 19 Minimum Spanning Trees

Problem

ImportantIn order to implement Prim’s algorithm efficiently, we need a fast way toselect a new edge to add to the tree formed by the edges in A.

For this, we use a min-priority queue QDuring execution of the algorithm, all vertices that are not in the treereside in a min-priority queue Q based on a key attribute.

There is a field key for every vertex vIt is the minimum weight of any edge connecting v to a vertex in theminimum spanning tree (THE LIGHT EDGE!!!).By convention, v.key =∞ if there is no such edge.

42 / 69

Page 70: 19 Minimum Spanning Trees

The algorithmPseudo-codeMST-PRIM(G,w, r)

1 for each u ∈ V [G]2 u.key =∞3 u.π = NIL4 r .key = 05 Q = V [G]6 while Q 6= ∅7 u =Extract-Min(Q)8 for each v ∈ Adj [u]9 if v ∈ Q and w (u, v) < v.key10 π [v] = u11 v.key = w (u, v).an implicit decrease key

in Q43 / 69

Page 71: 19 Minimum Spanning Trees

The algorithmPseudo-codeMST-PRIM(G,w, r)

1 for each u ∈ V [G]2 u.key =∞3 u.π = NIL4 r .key = 05 Q = V [G]6 while Q 6= ∅7 u =Extract-Min(Q)8 for each v ∈ Adj [u]9 if v ∈ Q and w (u, v) < v.key10 π [v] = u11 v.key = w (u, v).an implicit decrease key

in Q43 / 69

Page 72: 19 Minimum Spanning Trees

The algorithmPseudo-codeMST-PRIM(G,w, r)

1 for each u ∈ V [G]2 u.key =∞3 u.π = NIL4 r .key = 05 Q = V [G]6 while Q 6= ∅7 u =Extract-Min(Q)8 for each v ∈ Adj [u]9 if v ∈ Q and w (u, v) < v.key10 π [v] = u11 v.key = w (u, v).an implicit decrease key

in Q43 / 69

Page 73: 19 Minimum Spanning Trees

The algorithmPseudo-codeMST-PRIM(G,w, r)

1 for each u ∈ V [G]2 u.key =∞3 u.π = NIL4 r .key = 05 Q = V [G]6 while Q 6= ∅7 u =Extract-Min(Q)8 for each v ∈ Adj [u]9 if v ∈ Q and w (u, v) < v.key10 π [v] = u11 v.key = w (u, v).an implicit decrease key

in Q43 / 69

Page 74: 19 Minimum Spanning Trees

Explanation

Observations1 A = {(v, π[v]) : v ∈ V − {r} −Q}.2 The vertices already placed into the minimum spanning tree are those

in V −Q.3 For all vertices v ∈ Q, if π[v] 6= NIL, then key[v] <∞ and key[v] is

the weight of a light edge (v, π[v]) connecting v to some vertexalready placed into the minimum spanning tree.

44 / 69

Page 75: 19 Minimum Spanning Trees

Explanation

Observations1 A = {(v, π[v]) : v ∈ V − {r} −Q}.2 The vertices already placed into the minimum spanning tree are those

in V −Q.3 For all vertices v ∈ Q, if π[v] 6= NIL, then key[v] <∞ and key[v] is

the weight of a light edge (v, π[v]) connecting v to some vertexalready placed into the minimum spanning tree.

44 / 69

Page 76: 19 Minimum Spanning Trees

Explanation

Observations1 A = {(v, π[v]) : v ∈ V − {r} −Q}.2 The vertices already placed into the minimum spanning tree are those

in V −Q.3 For all vertices v ∈ Q, if π[v] 6= NIL, then key[v] <∞ and key[v] is

the weight of a light edge (v, π[v]) connecting v to some vertexalready placed into the minimum spanning tree.

44 / 69

Page 77: 19 Minimum Spanning Trees

Let us run the Algorithm

We have as an input the following graph

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

45 / 69

Page 78: 19 Minimum Spanning Trees

Let us run the Algorithm

Select r =b

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

46 / 69

Page 79: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract b from the priority queue Q

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

47 / 69

Page 80: 19 Minimum Spanning Trees

Let us run the Algorithm

Update the predecessor of a and its key to 12 from ∞

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

Note: The RED color represent the field π [v]

48 / 69

Page 81: 19 Minimum Spanning Trees

Let us run the Algorithm

Update the predecessor of c and its key to 9 from ∞

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

49 / 69

Page 82: 19 Minimum Spanning Trees

Let us run the Algorithm

Update the predecessor of e and its key to 5 from ∞

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

50 / 69

Page 83: 19 Minimum Spanning Trees

Let us run the Algorithm

Update the predecessor of f and its key to 8 from ∞

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

51 / 69

Page 84: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract e, then update adjacent vertices

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

52 / 69

Page 85: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract i from the priority queue Q

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

53 / 69

Page 86: 19 Minimum Spanning Trees

Let us run the Algorithm

Update adjacent vertices

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

54 / 69

Page 87: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract f and update adjacent vertices

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

55 / 69

Page 88: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract g and update

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

56 / 69

Page 89: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract c and no update

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

57 / 69

Page 90: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract d and update key at 1

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

58 / 69

Page 91: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract a and no update

bc

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

59 / 69

Page 92: 19 Minimum Spanning Trees

Let us run the Algorithm

Extract hb

c

f

a

d

e

i

g

h12

4

5

11

8

9

2

1

17

8

2

21

60 / 69

Page 93: 19 Minimum Spanning Trees

Complexity I

Complexity analysisThe performance of Prim’s algorithm depends on how we implementthe min-priority queue Q.If Q is a binary min-heap, BUILD-MIN-HEAP procedure to performthe initialization in lines 1 to 5 will run in O(|V |) time.The body of the while loop is executed |V | times, andEXTRACT-MIN operation takes O(log V ) time, the total time for allcalls to EXTRACT-MIN is O(V log V ).The for loop in lines 8 to 11 is executed O(E) times altogether, sincethe sum of the lengths of all adjacency lists is 2|E |.

61 / 69

Page 94: 19 Minimum Spanning Trees

Complexity I

Complexity analysisThe performance of Prim’s algorithm depends on how we implementthe min-priority queue Q.If Q is a binary min-heap, BUILD-MIN-HEAP procedure to performthe initialization in lines 1 to 5 will run in O(|V |) time.The body of the while loop is executed |V | times, andEXTRACT-MIN operation takes O(log V ) time, the total time for allcalls to EXTRACT-MIN is O(V log V ).The for loop in lines 8 to 11 is executed O(E) times altogether, sincethe sum of the lengths of all adjacency lists is 2|E |.

61 / 69

Page 95: 19 Minimum Spanning Trees

Complexity I

Complexity analysisThe performance of Prim’s algorithm depends on how we implementthe min-priority queue Q.If Q is a binary min-heap, BUILD-MIN-HEAP procedure to performthe initialization in lines 1 to 5 will run in O(|V |) time.The body of the while loop is executed |V | times, andEXTRACT-MIN operation takes O(log V ) time, the total time for allcalls to EXTRACT-MIN is O(V log V ).The for loop in lines 8 to 11 is executed O(E) times altogether, sincethe sum of the lengths of all adjacency lists is 2|E |.

61 / 69

Page 96: 19 Minimum Spanning Trees

Complexity I

Complexity analysisThe performance of Prim’s algorithm depends on how we implementthe min-priority queue Q.If Q is a binary min-heap, BUILD-MIN-HEAP procedure to performthe initialization in lines 1 to 5 will run in O(|V |) time.The body of the while loop is executed |V | times, andEXTRACT-MIN operation takes O(log V ) time, the total time for allcalls to EXTRACT-MIN is O(V log V ).The for loop in lines 8 to 11 is executed O(E) times altogether, sincethe sum of the lengths of all adjacency lists is 2|E |.

61 / 69

Page 97: 19 Minimum Spanning Trees

Complexity II

Complexity analysis (continuation)Within the for loop, the test for membership in Q in line 9 can beimplemented in constant time.The assignment in line 11 involves an implicit DECREASE-KEYoperation on the min-heap, which can be implemented in a binarymin-heap in O(log V ) time. Thus, the total time for Prim’s algorithmis:

O(V log V + E log V ) = O(E log V )

62 / 69

Page 98: 19 Minimum Spanning Trees

Complexity II

Complexity analysis (continuation)Within the for loop, the test for membership in Q in line 9 can beimplemented in constant time.The assignment in line 11 involves an implicit DECREASE-KEYoperation on the min-heap, which can be implemented in a binarymin-heap in O(log V ) time. Thus, the total time for Prim’s algorithmis:

O(V log V + E log V ) = O(E log V )

62 / 69

Page 99: 19 Minimum Spanning Trees

If you use Fibonacci Heaps

Complexity analysisEXTRACT-MIN operation in O(log V ) amortized time.DECREASE-KEY operation (to implement line 11) in O(1) amortizedtime.If we use a Fibonacci Heap to implement the min-priority queue Q weget a running time of O(E + V log V ).

63 / 69

Page 100: 19 Minimum Spanning Trees

If you use Fibonacci Heaps

Complexity analysisEXTRACT-MIN operation in O(log V ) amortized time.DECREASE-KEY operation (to implement line 11) in O(1) amortizedtime.If we use a Fibonacci Heap to implement the min-priority queue Q weget a running time of O(E + V log V ).

63 / 69

Page 101: 19 Minimum Spanning Trees

If you use Fibonacci Heaps

Complexity analysisEXTRACT-MIN operation in O(log V ) amortized time.DECREASE-KEY operation (to implement line 11) in O(1) amortizedtime.If we use a Fibonacci Heap to implement the min-priority queue Q weget a running time of O(E + V log V ).

63 / 69

Page 102: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

64 / 69

Page 103: 19 Minimum Spanning Trees

Faster Algorithms

Linear Time AlgorithmsKarger, Klein & Tarjan (1995) proposed a linear time randomizedalgorithm.The Fastest (O (Eα (E ,V ))) by Bernard Chazelle (2000) is based onthe soft heap, an approximate priority queue.

I Chazelle has also written essays about music and politics

Linear-time algorithms in special casesIf the graph is dense

(i.e. log log log V ≤ E

V

), then a deterministic

algorithm by Fredman and Tarjan finds the MST in time O (E).

65 / 69

Page 104: 19 Minimum Spanning Trees

Faster Algorithms

Linear Time AlgorithmsKarger, Klein & Tarjan (1995) proposed a linear time randomizedalgorithm.The Fastest (O (Eα (E ,V ))) by Bernard Chazelle (2000) is based onthe soft heap, an approximate priority queue.

I Chazelle has also written essays about music and politics

Linear-time algorithms in special casesIf the graph is dense

(i.e. log log log V ≤ E

V

), then a deterministic

algorithm by Fredman and Tarjan finds the MST in time O (E).

65 / 69

Page 105: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

66 / 69

Page 106: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 107: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 108: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 109: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 110: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 111: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 112: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 113: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 114: 19 Minimum Spanning Trees

ApplicationsMinimum spanning trees have direct applications in the design ofnetworks

Telecommunications networksTransportation networksWater supply networksElectrical grids

As a subroutine inMachine Learning/Big Data Cluster AnalysisNetwork Communications are using Spanning Tree Protocol (STP)Image registration and segmentationCircuit design: implementing efficient multiple constantmultiplications, as used in finite impulse response filters.Etc

67 / 69

Page 115: 19 Minimum Spanning Trees

Outline

1 Spanning treesBasic conceptsGrowing a Minimum Spanning TreeThe Greedy Choice and Safe EdgesKruskal’s algorithm

2 Kruskal’s AlgorithmDirectly from the previous Corollary

3 Prim’s AlgorithmImplementation

4 More About the MST ProblemFaster AlgorithmsApplicationsExercises

68 / 69

Page 116: 19 Minimum Spanning Trees

Exercises

From Cormen’s book solve23.1-323.1-523.1-723.1-923.2-223.2-323.2-523.2-7

69 / 69


Top Related