minimum spanning trees featuring disjoint sets hkoi training 2006 liu chi man (cx) 25 mar 2006
TRANSCRIPT
![Page 1: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/1.jpg)
Minimum Spanning TreesFeaturing Disjoint Sets
HKOI Training 2006
Liu Chi Man (cx)
25 Mar 2006
![Page 2: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/2.jpg)
2
Prerequisites
Asymptotic complexity Set theory Elementary graph theory Priority queues (or heaps)
![Page 3: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/3.jpg)
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(|V|2)
![Page 4: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/4.jpg)
4
Roadmap
What is a tree? Disjoint sets Minimum spanning trees Various tree topics
![Page 5: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/5.jpg)
5
What is a Tree?
![Page 6: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/6.jpg)
6
Trees in graph theory
In graph theory, a tree is an acyclic, connected graphAcyclic means “without cycles”
![Page 7: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/7.jpg)
7
Properties of trees
|E| = |V| - 1 |E| = (|V|)
Between any pair of vertices, there is a unique path
Adding an edge between a pair of non-adjacent vertices creates exactly one cycle
Removing an edge from the tree breaks the tree into two smaller trees
![Page 8: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/8.jpg)
8
Definition?
The following four conditions are equivalent:G is connected and acyclicG is connected and |E| = |V| - 1 G is acyclic and |E| = |V| - 1Between 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
![Page 9: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/9.jpg)
9
Other properties of trees
Bipartite Planar A tree with at least two vertices has at
least two leaves (vertices of degree 1)
![Page 10: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/10.jpg)
10
Roadmap
What is a tree? Disjoint sets Minimum spanning trees Various tree topics
![Page 11: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/11.jpg)
11
The Union-Find problem
N balls initially, each ball in its own bagLabel 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)
![Page 12: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/12.jpg)
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 2. Answer: {2} Find 1. Answer {1, 3, 4}
![Page 13: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/13.jpg)
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
![Page 14: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/14.jpg)
14
Implementation 1: Naive arrays
Bag[x] := representative of the bag containing x
<O(N), O(1)>Union takes O(N) and Find takes O(1)
Slight modifications give <O(U), O(1)>U is the size of the union
Worst case: O(MN) for M operations
![Page 15: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/15.jpg)
15
Implementation 1: Naive arrays
How to union Bag[x] and Bag[y]?Z := Bag[x]
For each ball v in Z do
Bag[v] := Bag[y] Can I update the balls in Bag[y] instead? Rule: Update the balls in the smaller bag
O(MlgN) for M union operations
![Page 16: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/16.jpg)
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
1
5 3
6
4
2 7
Example: Two bags --- {1, 3, 5} and {2, 4, 6, 7}.
![Page 17: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/17.jpg)
17
Implementation 2: Forest
Find(x)Traverse from x up to the root
Union(x, y)Merge the two trees containing x and y
![Page 18: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/18.jpg)
18
Implementation 2: Forest
Initial:
Union 1 3:
Union 2 4:
Find 4:
1 3 42
1
3
42
1
3 4
2
1
3 4
2
![Page 19: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/19.jpg)
19
Implementation 2: Forest
Union 1 4:
Find 4:
1
3
4
2
1
3
4
2
![Page 20: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/20.jpg)
20
Implementation 2: Forest
How to represent the trees?Leftmost-Child-Right-Sibling (LCRS)?
Too complicated
Parent array Parent[x] := parent of x If x is a tree root, set Parent[x] := x
![Page 21: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/21.jpg)
21
Implementation 2: Forest
The worst case is still O(MN ) for M operationsWhat is the worst case?
ImprovementsUnion-by-rankPath compression
![Page 22: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/22.jpg)
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 Bad
![Page 23: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/23.jpg)
23
Path compression
See also the solution for Symbolic Links (HKOI2005 Senior Final)
Find(x): traverse from x up to root Compress the x-to-root path at the same
time
![Page 24: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/24.jpg)
24
Path compression
Find(4)
3
5 1
6
4
2 7
3
5 1
6
4
2 7
The root is 3
The root is 3
The root is 3
3
5 164
2 7
![Page 25: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/25.jpg)
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
![Page 26: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/26.jpg)
26
Roadmap
What is a tree? Disjoint sets Minimum spanning trees Various tree topics
![Page 27: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/27.jpg)
27
Minimum spanning trees
Given a connected graph G = (V, E), a spanning tree of G is a graph T such thatT is a subgraph of GT is a treeT contains every vertex of G
A connected graph must have at least one spanning tree
![Page 28: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/28.jpg)
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
![Page 29: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/29.jpg)
29
Minimum spanning trees
Two algorithmsKruskal’s algorithmPrim’s algorithm
![Page 30: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/30.jpg)
30
Kruskal’s algorithm
Choose edges in ascending weight greedily, while preventing cycles
![Page 31: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/31.jpg)
31
Kruskal’s algorithm
AlgorithmT is an empty setSort the edges in G by their weightsFor (in ascending weight) each edge e do
If T {e} is acyclic then Add e to T
Return T
![Page 32: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/32.jpg)
32
Kruskal’s 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
![Page 33: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/33.jpg)
33
Kruskal’s algorithm
Algorithm (using disjoint-set)T is an empty setCreate bags {1}, {2}, …, {V}Sort the edges in G by their weightsFor (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
![Page 34: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/34.jpg)
34
Kruskal’s algorithm
The improved time complexity is O(ElgV) The bottleneck is sorting
![Page 35: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/35.jpg)
35
Prim’s algorithm
In Kruskal’s algorithm, the MST-in-progress scatters around
Prim’s algorithm grows the MST from a “seed”
Prim’s algorithm iteratively chooses the lightest grow-able edgeA grow-able edge connects a grown vertex and
a non-grown vertex
![Page 36: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/36.jpg)
36
Prim’s algorithm
AlgorithmLet seed be any vertex, and Grown := {seed} Initially T is an empty setRepeat |V|-1 times
Let e=(x,y) be the lightest grow-able edge Add e to T Add x and y to Grown
Return T
![Page 37: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/37.jpg)
37
Prim’s 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 nearest[x], which is the weight of the lightest edge connecting x to some grown vertex
Nearest[x] = if no such edge
![Page 38: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/38.jpg)
38
Prim’s 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
![Page 39: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/39.jpg)
39
Prim’s algorithm
Try to program Prim’s algorithm You may find that it’s very similar to
Dijkstra’s algorithm for finding shortest paths!Almost only a one-line difference
![Page 40: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/40.jpg)
40
Prim’s algorithm
Per round...Finding minimum nearest-value: O(V)Updating nearest-values: O(V) (Overall O(E))
Overall: O(V2+E) = O(V2) time Using a binary heap,
O(lgV) per Finding minimumO(lgV) per UpdatingOverall: O(ElgV) time
![Page 41: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/41.jpg)
41
MST Extensions
Second-best MSTWe don’t want the best!
Online MSTSee IOI2003 Path Maintenance
Minimum bottleneck spanning treeThe bottleneck of a spanning tree is the weight of
its maximum weight edgeAn algorithm that runs in O(V+E) exists
![Page 42: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/42.jpg)
42
MST Extensions (NP-Hard)
Minimum Steiner TreeNo 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
![Page 43: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/43.jpg)
43
Roadmap
What is a tree? Disjoint sets Minimum spanning trees Various tree topics
![Page 44: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/44.jpg)
44
Various tree topics (List)
Center, eccentricity, radius, diameter Tree isomorphism
Canonical representation Prüfer code Lowest common ancestor (LCA) Counting spanning trees
![Page 45: Minimum Spanning Trees Featuring Disjoint Sets HKOI Training 2006 Liu Chi Man (cx) 25 Mar 2006](https://reader034.vdocuments.site/reader034/viewer/2022051418/5697bfb81a28abf838c9f726/html5/thumbnails/45.jpg)
45
Supplementary readings
Advanced:Disjoint set forest (Lecture slides)Prim’s algorithmKruskal’s algorithmCenter and diameter
Post-advanced (so-called Beginners):Lowest common ancestorMaximum branching