Spanning Tree 2

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Spanning Tree 2 as PDF for free.

More details

  • Words: 1,930
  • Pages: 6
Minimum Spanning Tree

5/13/2002 4:52 PM

Outline and Reading Minimum Spanning Trees 2704

337

144

JFK

1258

184

Definitions A crucial fact

The Prim-Jarnik Algorithm (§7.3.2)

187 740 621

802

LAX

„

PVD

ORD 1846

BWI

1391

1464

„ BOS

867 849

SFO

Minimum Spanning Trees (§7.3)

1090 DFW

1235

Kruskal's Algorithm (§7.3.1)

946 1121 MIA

2342

Baruvka's Algorithm (§7.3.3) Minimum Spanning Trees

1

Minimum Spanning Trees

Minimum Spanning Tree Spanning subgraph „

Spanning subgraph that is itself a (free) tree

„

6

9

Spanning tree of a weighted graph with minimum total edge weight

„

PIT

DEN

Minimum spanning tree (MST)

Let T be a minimum spanning tree of a weighted graph G „ Let e be an edge of G that is not in T and C let be the cycle formed by e with T „ For every edge f of C, weight(f) ≤ weight(e) Proof: „ By contradiction „ If weight(f) > weight(e) we can get a spanning tree of smaller weight by replacing e with f

10

7 3

STL

4

DCA

5

8

2

Applications „ „

Communications networks Transportation networks

DFW

ATL

8

f

Cycle Property:

1

Spanning tree „

Cycle Property

ORD

Subgraph of a graph G containing all the vertices of G

2

2

4

C

6

9 3

e

8

7

7 Replacing f with e yields a better spanning tree f 2

6

8 4

C

9 3

8

e

7

7 Minimum Spanning Trees

Partition Property

3

U

f

Partition Property: Consider a partition of the vertices of G into subsets U and V „ Let e be an edge of minimum weight across the partition „ There is a minimum spanning tree of G containing edge e Proof: „ Let T be an MST of G „ If T does not contain e, consider the cycle C formed by e with T and let f be an edge of C across the partition „ By the cycle property, weight(f) ≤ weight(e) „ Thus, weight(f) = weight(e) „ We obtain another MST by replacing f with e „

V

7

4 9

5

2

Minimum Spanning Trees

8 8

3

e 7

Replacing f with e yields another MST U

2

Minimum Spanning Trees

f

V

7

4 9

5

8 8

4

Prim-Jarnik’s Algorithm Similar to Dijkstra’s algorithm (for a connected graph) We pick an arbitrary vertex s and we grow the MST as a cloud of vertices, starting from s We store with each vertex v a label d(v) = the smallest weight of an edge connecting v to a vertex in the cloud At each step: We add to the cloud the vertex u outside the cloud with the smallest distance label „ We update the labels of the vertices adjacent to u „

3

e 7 5

Minimum Spanning Trees

6

1

Minimum Spanning Tree

5/13/2002 4:52 PM

Prim-Jarnik’s Algorithm (cont.) A priority queue stores the vertices outside the cloud „ „

Key: distance Element: vertex

Locator-based methods „

„

insert(k,e) returns a locator replaceKey(l,k) changes the key of an item

We store three labels with each vertex: „ „ „

Example

Algorithm PrimJarnikMST(G) Q ← new heap-based priority queue s ← a vertex of G for all v ∈ G.vertices() if v = s setDistance(v, 0) else setDistance(v, ∞) setParent(v, ∅) l ← Q.insert(getDistance(v), v) setLocator(v,l) while ¬Q.isEmpty() u ← Q.removeMin() for all e ∈ G.incidentEdges(u) z ← G.opposite(u,e) r ← weight(e) if r < getDistance(z) setDistance(z,r) setParent(z,e) Q.replaceKey(getLocator(z),r)

Distance Parent edge in MST Locator in priority queue

2

0

B

A

7

4

„

3

„

3 2

0

„

4

7

4

F

8 E

3

A priority queue stores the edges outside the cloud Key: weight Element: edge

At the end of the algorithm

„

0

F

8

8 A

4

9

5 C

5

7

E

4

3 7 8

We are left with one cloud that encompasses the MST A tree T which is our MST

Method incidentEdges is called once for each vertex

„

„

9

Each vertex is inserted once into and removed once from the priority queue, where each insertion or removal takes O(log n) time The key of a vertex w in the priority queue is modified at most deg(w) times, where each key change takes O(log n) time

Recall that

Σv deg(v) = 2m

Minimum Spanning Trees

10

Data Structure for Kruskal Algortihm The algorithm maintains a forest of trees An edge is accepted it if connects distinct trees We need a data structure that maintains a partition, i.e., a collection of disjoint sets, with the operations: -find(u): return the set storing u -union(u,v): replace the sets storing u and v with their union

Algorithm KruskalMST(G) for each vertex V in G do define a Cloud(v) of Å {v} let Q be a priority queue. Insert all edges into Q using their weights as the key TÅ∅ while T has fewer than n-1 edges do edge e = T.removeMin() Let u, v be the endpoints of e if Cloud(v) ≠ Cloud(u) then Add edge e to T Merge Cloud(v) and Cloud(u) return T

Minimum Spanning Trees

We set/get the distance, parent and locator labels of vertex z O(deg(z)) times Setting/getting a label takes O(1) time

The running time is O(m log n) since the graph is connected

Kruskal’s Algorithm

„

3 7

B

Prim-Jarnik’s algorithm runs in O((n + m) log n) time provided the graph is represented by the adjacency list structure

3

Minimum Spanning Trees

„

2

Priority queue operations

7

9

5 C

5 8

A

D

7

B

2

„

E



7

Analysis „

F E

F

D

7

3 7

Label operations

4 8

8 0

2



Graph operations

9

5 C

5

2

7

8 7

E

7

Minimum Spanning Trees

7

D

0

F

8

8 A

4

9

5 C

5

2

7

D

7

B

3

4

7

Example (contd.) 7

A



7

9

5 C 8

0

Minimum Spanning Trees

2

D

7

B 5

2

F E

7 2

2

4 8

8 A



9

8 C

5

2

D

7

B

11

Minimum Spanning Trees

12

2

Minimum Spanning Tree

5/13/2002 4:52 PM

Representation of a Partition

Partition-Based Implementation A partition-based version of Kruskal’s Algorithm performs cloud merges as unions and tests as finds.

Each set is stored in a sequence Each element has a reference back to the set „

„

„

Algorithm Kruskal(G): Input: A weighted graph G. Output: An MST T for G. Let P be a partition of the vertices of G, where each vertex forms a separate set. Let Q be a priority queue storing the edges of G, sorted by their weights Let T be an initially-empty tree while Q is not empty do (u,v) ← Q.removeMinElement() if P.find(u) != P.find(v) then Running time: Add (u,v) to T O((n+m)log n) P.union(u,v) return T

operation find(u) takes O(1) time, and returns the set of which u is a member. in operation union(u,v), we move the elements of the smaller set to the sequence of the larger set and update their references the time for operation union(u,v) is min(nu,nv), where nu and nv are the sizes of the sets storing u and v

Whenever an element is processed, it goes into a set of size at least double, hence each element is processed at most log n times Minimum Spanning Trees

Kruskal Example

2704

13

849

337 LAX

337

1090 DFW

1235

946

LAX

BWI 1090 946

DFW

1235

1121

1121

MIA

MIA

2342

2342 Minimum Spanning Trees

Example

2704

15

849 740 621

1846

337 LAX

1391

1464 1235

740 621

1846 1258

337 LAX

1391

1464 1235

PVD 187 144

JFK

1258

184

802

SFO

BWI

946

BWI 1090 946

DFW

1121

1121 MIA

MIA

2342 Minimum Spanning Trees

BOS

849 ORD

144

JFK

16

867

PVD

1090 DFW

2704

187

184

802

Minimum Spanning Trees

Example

BOS

867

ORD

SFO

1258

184 1391

1464

144

JFK

802

SFO

BWI

1391

1464

PVD 187

740 621

1846 1258

184

802

BOS

867 849

144

JFK

14

ORD

187

740 621

SFO

2704

PVD

ORD 1846

Example

BOS

867

Minimum Spanning Trees

2342 17

Minimum Spanning Trees

18

3

Minimum Spanning Tree

Example

5/13/2002 4:52 PM

2704

849

337 LAX

1846

337

1090 946

DFW

1235

LAX

BWI 1090 946

DFW

1235

1121

1121 MIA

MIA

2342

2342

Minimum Spanning Trees

Example

2704

19

849

337 LAX

144

337

946

LAX

BWI 1090 946

DFW

1235

1121

1121 MIA

MIA

2342

2342

Minimum Spanning Trees

Example

2704

21

849 740 621

1846

337 LAX

1391

1464 1235

740 621

1846 1258

337 LAX

1391

1464 1235

PVD 187 144

JFK

1258

184

802

SFO

BWI

946

BWI 1090 946

DFW

1121

1121 MIA

MIA

2342 Minimum Spanning Trees

BOS

849 ORD

144

JFK

22

867

PVD

1090 DFW

2704

187

184

802

Minimum Spanning Trees

Example

BOS

867

ORD

SFO

1258

184 1391

1464

144

JFK

802

SFO

1090

1235

PVD 187

740 621

1846 1258

BWI

DFW

BOS

849 ORD

184 1391

20

867

PVD JFK

802 1464

2704

187

740 621

1846

Minimum Spanning Trees

Example

BOS

867

ORD

SFO

1258

184 1391

1464

144

JFK

802

SFO

BWI

1391

PVD 187

740 621

1258

184

802 1464

849

144

JFK

BOS

867

ORD

187

740 621

SFO

2704

PVD

ORD 1846

Example

BOS

867

2342 23

Minimum Spanning Trees

24

4

Minimum Spanning Tree

Example

5/13/2002 4:52 PM

2704

849

LAX

1846

337

1090 946

DFW

1235

LAX

BWI

1391

1090 946

DFW

1235

1121 MIA

MIA

2342

2342

Minimum Spanning Trees

2704

25

ORD 740 621

1846

1391

1464

337 LAX

1235

PVD

BWI

946

DFW

1235

1121

MIA

MIA

2342 Minimum Spanning Trees

BWI 1090

946 LAX

1258

184 1391

1464

144

JFK

802

SFO 337

187

740 621

1846

1258

1121 2342 27

Minimum Spanning Trees

Baruvka Example

Baruvka’s Algorithm

2704

Like Kruskal’s Algorithm, Baruvka’s algorithm grows many “clouds” at once.

28

BOS

867 849

Algorithm BaruvkaMST(G) T Å V {just the vertices of G} while T has fewer than n-1 edges do for each connected component C in T do Let edge e be the smallest-weight edge from C to another component in T. if e is not already in T then Add edge e to T return T

Each iteration of the while-loop halves the number of connected compontents in T. „

BOS

867

ORD

144

JFK

26

849

187

1090 DFW

2704

PVD

184

802

Minimum Spanning Trees

Example

BOS

867 849

SFO

1258

184

1464

1121

Example

144

JFK

802

SFO

BWI

1391

1464

PVD 187

740 621

1258

184

802

337

849

144

JFK

BOS

867

ORD

187

740 621

SFO

2704

PVD

ORD 1846

Example

BOS

867

ORD 740

1846

621 802

SFO 337 LAX

1391

1464 1235

PVD 187 144

JFK

1258

184 BWI 1090 946

DFW

The running time is O(m log n).

1121 MIA 2342

Minimum Spanning Trees

29

Minimum Spanning Trees

30

5

Minimum Spanning Tree

Example

5/13/2002 4:52 PM

2704 849

ORD

740

1846

621 802

SFO 337 LAX

1391

1464 1235

Example

BOS

867 187

849

ORD 144

JFK

740

1846

621

1258

184

802

SFO

BWI

337

946

LAX

1391

1464 1235

187

PVD 144

JFK

1258

184 BWI 1090

DFW

946 1121

1121

MIA

MIA 2342

2342 Minimum Spanning Trees

BOS

867

PVD

1090 DFW

2704

31

Minimum Spanning Trees

32

6

Related Documents

Spanning Tree 2
November 2019 5
Spanning Tree
November 2019 8
Spanning-tree
July 2020 0
Protocol Spanning Tree
December 2019 9