# Minimum Spanning Trees Featuring Disjoint Sets - PowerPoint PPT Presentation

PPT – Minimum Spanning Trees Featuring Disjoint Sets PowerPoint presentation | free to download - id: 218b8f-ZDc1Z

The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
Title:

## Minimum Spanning Trees Featuring Disjoint Sets

Description:

### Priority queues (or heaps) 3. Graphs. A graph is a set of vertices and a set of edges ... Using a binary heap, O(lgV) per Finding minimum. O(lgV) per Updating ... – PowerPoint PPT presentation

Number of Views:16
Avg rating:3.0/5.0
Slides: 46
Provided by: stude1552
Category:
Tags:
Transcript and Presenter's Notes

Title: Minimum Spanning Trees Featuring Disjoint Sets

1
Minimum Spanning Trees Featuring Disjoint Sets
• HKOI Training 2006
• Liu Chi Man (cx)
• 25 Mar 2006

2
Prerequisites
• Asymptotic complexity
• Set theory
• Elementary graph theory
• Priority queues (or heaps)

3
Graphs
• A graph is a set of vertices and a set of edges
• G (V, E)
• Number of vertices V
• Number of edges E
• We assume simple graph, so E O(V2)

4
• What is a tree?
• Disjoint sets
• Minimum spanning trees
• Various tree topics

5
What is a Tree?
6
Trees in graph theory
• In graph theory, a tree is an acyclic, connected
graph
• Acyclic means without cycles

7
Properties of trees
• E V - 1
• E ?(V)
• Between any pair of vertices, there is a unique
path
vertices creates exactly one cycle
• Removing an edge from the tree breaks the tree
into two smaller trees

8
Definition?
• The following four conditions are equivalent
• G is connected and acyclic
• G is connected and E V - 1
• G is acyclic and E V - 1
• Between any pair of vertices in G, there exists a
unique path
• G is a tree if at least one of the above
conditions is satisfied

9
Other properties of trees
• Bipartite
• Planar
• A tree with at least two vertices has at least
two leaves (vertices of degree 1)

10
• What is a tree?
• Disjoint sets
• Minimum spanning trees
• Various tree topics

11
The Union-Find problem
• N balls initially, each ball in its own bag
• Label the balls 1, 2, 3, ..., N
• Two kinds of operations
• Pick two bags, put all balls in these bags into a
new bag (Union)
• Given a ball, find the bag containing it (Find)

12
The Union-Find problem
• An example with 4 balls
• Initial 1, 2, 3, 4
• Union 1, 3 ? 1, 3, 2, 4
• Find 3. Answer 1, 3
• Union 4, 1,3 ? 1, 3, 4, 2
• Find 1. Answer 1, 3, 4

13
Disjoint sets
• Disjoint-set data structures can be used to solve
the union-find problem
• Each bag has its own representative ball
• 1, 3, 4 is represented by ball 3 (for example)
• 2 is represented by ball 2

14
Implementation 1 Naive arrays
• Bagx representative of the bag containing x
• ltO(N), O(1)gt
• Union takes O(N) and Find takes O(1)
• Slight modifications give ltO(U), O(1)gt
• U is the size of the union
• Worst case O(MN) for M operations

15
Implementation 1 Naive arrays
• How to union Bagx and Bagy?
• Z Bagx
• For each ball v in Z do
• Bagv Bagy
• Can I update the balls in Bagy instead?
• Rule Update the balls in the smaller bag
• O(MlgN) for M union operations

16
Implementation 2 Forest
• A forest is a collection of trees
• Each bag is represented by a rooted tree, with
the root being the representative ball

Example Two bags --- 1, 3, 5 and 2, 4, 6, 7.
17
Implementation 2 Forest
• Find(x)
• Traverse from x up to the root
• Union(x, y)
• Merge the two trees containing x and y

18
Implementation 2 Forest

Initial
Union 1 3
Union 2 4
Find 4
19
Implementation 2 Forest

Union 1 4
Find 4
20
Implementation 2 Forest
• How to represent the trees?
• Leftmost-Child-Right-Sibling (LCRS)?
• Too complicated
• Parent array
• Parentx parent of x
• If x is a tree root, set Parentx x

21
Implementation 2 Forest
• The worst case is still O(MN ) for M operations
• What is the worst case?
• Improvements
• Union-by-rank
• Path compression

22
Union-by-rank
• We should avoid tall trees
• Root of the taller tree becomes the new root when
union
• So, keep track of tree heights (ranks)

Good
23
Path compression
(HKOI2005 Senior Final)
• Find(x) traverse from x up to root
• Compress the x-to-root path at the same time

24
Path compression
• Find(4)

25
U-by-rank Path compression
• We ignore the effect of path compression on tree
heights to simplify U-by-rank
• U-by-rank alone gives O(MlgN)
• U-by-rank path compression gives O(M?(N))
• ? inverse Ackermann function
• ?(N) ? 5 for practically large N

26
• What is a tree?
• Disjoint sets
• Minimum spanning trees
• Various tree topics

27
Minimum spanning trees
• Given a connected graph G (V, E), a spanning
tree of G is a graph T such that
• T is a subgraph of G
• T is a tree
• T contains every vertex of G
• A connected graph must have at least one spanning
tree

28
Minimum spanning trees
• Given a weighted connected graph G, a minimum
spanning tree T of G is a spanning tree of G
with minimum total edge weight
• Application Minimizing the total length of wires
needed to connect up a collection of computers

29
Minimum spanning trees
• Two algorithms
• Kruskals algorithm
• Prims algorithm

30
Kruskals algorithm
• Choose edges in ascending weight greedily, while
preventing cycles

31
Kruskals algorithm
• Algorithm
• T is an empty set
• Sort the edges in G by their weights
• For (in ascending weight) each edge e do
• If T ? e is acyclic then
• Return T

32
Kruskals algorithm
• How to detect a cycle?
• Depth-first search (DFS)
• O(V) per check
• O(VE) overall
• Disjoint set
• Vertices are balls, connected components are bags

33
Kruskals algorithm
• Algorithm (using disjoint-set)
• T is an empty set
• Create bags 1, 2, , V
• Sort the edges in G by their weights
• For (in ascending weight) each edge e do
• Suppose e connects vertices x and y
• If Find(x) ? Find(y) then
• Add e to T, then Union(Find(x), Find(y))
• Return T

34
Kruskals algorithm
• The improved time complexity is O(ElgV)
• The bottleneck is sorting

35
Prims algorithm
• In Kruskals algorithm, the MST-in-progress
scatters around
• Prims algorithm grows the MST from a seed
• Prims algorithm iteratively chooses the lightest
grow-able edge
• A grow-able edge connects a grown vertex and a
non-grown vertex

36
Prims algorithm
• Algorithm
• Let seed be any vertex, and Grown seed
• Initially T is an empty set
• Repeat V-1 times
• Let e(x,y) be the lightest grow-able edge
• Add x and y to Grown
• Return T

37
Prims algorithm
• How to find the lightest grow-able edge?
• Check all (grown, non-grown) vertex pairs
• Too slow
• Each non-grown vertex x keeps a value nearestx,
which is the weight of the lightest edge
connecting x to some grown vertex
• Nearestx ? if no such edge

38
Prims algorithm
• How to use nearest?
• Grow the vertex (x) with the minimum
nearest-value
• Which edge? Keep track on it!
• Since x has just been grown, we need to update
the nearest-values of all non-grown vertices
• Only need to consider edges incident to x

39
Prims algorithm
• Try to program Prims algorithm
• You may find that its very similar to Dijkstras
algorithm for finding shortest paths!
• Almost only a one-line difference

40
Prims algorithm
• Per round...
• Finding minimum nearest-value O(V)
• Updating nearest-values O(V) (Overall O(E))
• Overall O(V2E) O(V2) time
• Using a binary heap,
• O(lgV) per Finding minimum
• O(lgV) per Updating
• Overall O(ElgV) time

41
MST Extensions
• Second-best MST
• We dont want the best!
• Online MST
• See IOI2003 Path Maintenance
• Minimum bottleneck spanning tree
• The bottleneck of a spanning tree is the weight
of its maximum weight edge
• An algorithm that runs in O(VE) exists

42
MST Extensions (NP-Hard)
• Minimum Steiner Tree
• No need to connect all vertices, but at least a
given subset B ? V
• Degree-bounded MST
• Every vertex of the spanning tree must have
degree not greater than a given value K
• For a discussion of NP-hardness, please attend
Talk Introduction to Complexity Theory on 3 June

43
• What is a tree?
• Disjoint sets
• Minimum spanning trees
• Various tree topics

44
Various tree topics (List)
• Tree isomorphism
• Canonical representation
• Prüfer code
• Lowest common ancestor (LCA)
• Counting spanning trees

45