4.5. Minimum Spanning Trees

31
1 4.5. Minimum Spanning Trees •Definition of MST •Generic MST algorithm •Kruskal's algorithm •Prim's algorithm

description

4.5. Minimum Spanning Trees. Definition of MST Generic MST algorithm Kruskal's algorithm Prim's algorithm. Definition of MST. Let G=(V,E) be a connected, undirected graph. For each edge (u,v) in E , we have a weight w(u,v) specifying the cost (length of edge) to connect u and v. - PowerPoint PPT Presentation

Transcript of 4.5. Minimum Spanning Trees

Page 1: 4.5. Minimum Spanning Trees

1

4.5. Minimum Spanning Trees

•Definition of MST

•Generic MST algorithm

•Kruskal's algorithm

•Prim's algorithm

Page 2: 4.5. Minimum Spanning Trees

2

Definition of MST

• Let G=(V,E) be a connected, undirected graph.

• For each edge (u,v) in E, we have a weight w(u,v) specifying the cost (length of edge) to connect u and v.

• We wish to find a (acyclic) subset T of E that connects all of the vertices in V and whose total weight is minimized.

• Since the total weight is minimized, the subset T must be acyclic (no circuit).

• Thus, T is a tree. We call it a spanning tree.

• The problem of determining the tree T is called the minimum-spanning-tree problem.

Page 3: 4.5. Minimum Spanning Trees

3

Application of MST: an example

• In the design of electronic circuitry, it is often necessary to make a set of pins electrically equivalent by wiring them together.

• To interconnect n pins, we can use n-1 wires, each connecting two pins.

• We want to minimize the total length of the wires.• Minimum Spanning Trees can be used to model

this problem.

Page 4: 4.5. Minimum Spanning Trees

4

Electronic Circuits:

Page 5: 4.5. Minimum Spanning Trees

5

Electronic Circuits:

Page 6: 4.5. Minimum Spanning Trees

6

Here is an example of a connected graph and its minimum spanning tree:

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Notice that the tree is not unique: replacing (b,c) with (a,h) yields another spanning tree with the same minimum weight.

Page 7: 4.5. Minimum Spanning Trees

7

Growing a MST(Generic Algorithm)

• Set A is always a subset of some minimum spanning tree. This property is called the invariant Property.

• An edge (u,v) is a safe edge for A if adding the edge to A does not destroy the invariant.

• A safe edge is just the CORRECT edge to choose to add to T.

GENERIC_MST(G,w)1 A:={}2 while A does not form a spanning tree do3 find an edge (u,v) that is safe for A4 A:=A∪{(u,v)}5 return A

Page 8: 4.5. Minimum Spanning Trees

8

How to find a safe edge

We need some definitions and a theorem.• A cut (S,V-S) of an undirected graph G=(V,E) is a

partition of V.• An edge crosses the cut (S,V-S) if one of its

endpoints is in S and the other is in V-S.• An edge is a light edge crossing a cut if its weight

is the minimum of any edge crossing the cut.

Page 9: 4.5. Minimum Spanning Trees

9

V-S↓

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

S↑ ↑ S

↓ V-S

• This figure shows a cut (S,V-S) of the graph.

• The edge (d,c) is the unique light edge crossing the cut.

Page 10: 4.5. Minimum Spanning Trees

10

Theorem 1• Let G=(V,E) be a connected, undirected graph with a real-

valued weight function w defined on E.• Let A be a subset of E that is included in some minimum

spanning tree for G.• Let (S,V-S) be any cut of G such that for any edge (u, v) in

A, {u, v} S or {u, v} (V-S). • Let (u,v) be a light edge crossing (S,V-S).• Then, edge (u,v) is safe for A.• Proof: Let Topt be a minimum spanning tree.(Blue)• A --a subset of Topt and (u,v)-- a light edge crossing (S, V-S)• If (u,v) is NOT safe, then (u,v) is not in T. (See the red edge in Figure)• There MUST be another edge (u’, v’) in Topt crossing (S, V-S).(Green)• We can replace (u’,v’) in Topt with (u, v) and get another treeT’opt

• Since (u, v) is light , T’opt is also optimal. 1

2

11 1

1 1

1

Page 11: 4.5. Minimum Spanning Trees

11

Corollary .2• Let G=(V,E) be a connected, undirected graph with a real-

valued weight function w defined on E.• Let A be a subset of E that is included in some minimum

spanning tree for G.• Let C be a connected component (tree) in the forest

GA=(V,A).• Let (u,v) be a light edge (shortest among all edges

connecting C with other components) connecting C to some other component in GA.

• Then, edge (u,v) is safe for A. (For Kruskal’s algorithm)

Page 12: 4.5. Minimum Spanning Trees

12

The algorithms of Kruskal and Prim• The two algorithms are elaborations of the generic

algorithm.• They each use a specific rule to determine a safe

edge in line 3 of GENERIC_MST.• In Kruskal's algorithm,

– The set A is a forest.– The safe edge added to A is always a least-weight edge

in the graph that connects two distinct components.• In Prim's algorithm,

– The set A forms a single tree.– The safe edge added to A is always a least-weight edge

connecting the tree to a vertex not in the tree.

Page 13: 4.5. Minimum Spanning Trees

13

Kruskal's algorithm(basic part)

1 (Sort the edges in an increasing order)2 A:={}3 while E is not empty do {3 take an edge (u, v) that is shortest in E and delete it from E4 if u and v are in different components then add (u, v) to A }Note: each time a shortest edge in E is considered.

Page 14: 4.5. Minimum Spanning Trees

14

Kruskal's algorithmMST_KRUSKAL(G,w)1 A:={}2 for each vertex v in V[G]3 do MAKE_SET(v)4 sort the edges of E by nondecreasing weight w5 for each edge (u,v) in E, in order by nondecreasing

weight6 do if FIND_SET(u) != FIND_SET(v)7 then A:=A {(u,v)}∪8 UNION(u,v)9 return A(Disjoint set is discussed in Chapter 21, Page 498)

Page 15: 4.5. Minimum Spanning Trees

15

Disjoint-Set (Chapter 21, Page 498)• Keep a collection of sets S1, S2, .., Sk,

– Each Si is a set, e,g, S1={v1, v2, v8}.

• Three operations

– Make-Set(x)-creates a new set whose only member is x.

– Union(x, y) –unites the sets that contain x and y, say, Sx and Sy, into a new set that is the union of the two sets.

– Find-Set(x)-returns a pointer to the representative of the set containing x.

– Each operation takes O(log n) time.

Page 16: 4.5. Minimum Spanning Trees

16

• Our implementation uses a disjoint-set data structure to maintain several disjoint sets of elements.

• Each set contains the vertices in a tree of the current forest.

• The operation FIND_SET(u) returns a representative element from the set that contains u.

• Thus, we can determine whether two vertices u and v belong to the same tree by testing whether FIND_SET(u) equals FIND_SET(v).

• The combining of trees is accomplished by the UNION procedure.

• Running time O(|E| lg (|E|)).

Page 17: 4.5. Minimum Spanning Trees

17

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

The execution of Kruskal's algorithm (Moderate part)

•The edges are considered by the algorithm in sorted order by weight.

•The edge under consideration at each step is shown with a red weight number.

Page 18: 4.5. Minimum Spanning Trees

18

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 19: 4.5. Minimum Spanning Trees

19

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 20: 4.5. Minimum Spanning Trees

20

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 21: 4.5. Minimum Spanning Trees

21

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 22: 4.5. Minimum Spanning Trees

22

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 23: 4.5. Minimum Spanning Trees

23

Prim's algorithm(basic part)

MST_PRIM(G,w,r)1. A={}2. S:={r} (r is an arbitrary node in V)

3. Q=V-{r};

4. while Q is not empty do {5 take an edge (u, v) such that (1) u S and v Q (v S ) and

(u, v) is the shortest edge satisfying (1)

6 add (u, v) to A, add v to S and delete v from Q

}

Page 24: 4.5. Minimum Spanning Trees

24

Prim's algorithmMST_PRIM(G,w,r)1 for each u in Q do2 key[u]:=∞3 parent[u]:=NIL4 key[r]:=0; parent[r]=NIL;5 QV[Q]6 while Q!={} do7 u:=EXTRACT_MIN(Q); if parent[u]Nil print (u,

parent[u])8 for each v in Adj[u] do9 if v in Q and w(u,v)<key[v]10 then parent[v]:=u11 key[v]:=w(u,v)

Page 25: 4.5. Minimum Spanning Trees

25

priority queue Q: three important operations– EXTRACT-MIN(Q) –takes log (n) times if

there are n items in Q.– Insert an element (key u) into Q- takes log(n)

time.– Update(u, k): update the key value of element u

into k. It takes Olog (n) time for adaptable priority queue (heap).

Page 26: 4.5. Minimum Spanning Trees

26

• Grow the minimum spanning tree from the root vertex r.

• Q is a priority queue, holding all vertices that are not in the tree now.

• key[v] is the minimum weight of any edge connecting v to a vertex in the tree.

• parent[v] names the parent of v in the tree.• When the algorithm terminates, Q is empty; the

minimum spanning tree A for G is thus A={(v,parent[v]):v∈V-{r}}.

• Running time: O(||E||lg |V|).

Page 27: 4.5. Minimum Spanning Trees

27

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

The execution of Prim's algorithm(basic part)

the root vertex

Page 28: 4.5. Minimum Spanning Trees

28

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 29: 4.5. Minimum Spanning Trees

29

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 30: 4.5. Minimum Spanning Trees

30

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Page 31: 4.5. Minimum Spanning Trees

31

a

b

h

c d

e

fg

i

4

8 79

10

1442

2

6

1

711

8

Bottleneck spanning tree: A spanning tree of G whose largest edge weight is minimum over all spanning trees of G. The value of the bottleneck spanning tree is the weight of the

maximum-weight edge in T.

Theorem: A minimum spanning tree is also a bottleneck spanning tree. (Challenge problem)