Download presentation
Presentation is loading. Please wait.
Published byJulius Cunningham Modified over 9 years ago
1
CSCI 3160 Design and Analysis of Algorithms Tutorial 3 Chengyu Lin
2
Outline Union-find data structure Minimum spanning tree (MST) Kruskal’s algorithm
3
Union-find A data structure for disjoint sets n = number of members, forming disjoint groups Two members are in the same group if and only if they have a common leader Operations: o Union : merge two groups o Find : name the leader of the group We do not really care about who the leader is; we only want to tell one group from another
4
Union-find Idea: use a forest (= collection of trees) o a group → a tree o leader → root of the tree Example: o Group 1: Alice, Bob o Group 2: Carol, Dave, Eve Store the height of each tree at the root A BC D E 11
5
Union-find Find : return the root of the group Union : make the leader of one group the boss of the other o Our heuristic: make the root of the shorter tree point to the root of the other tree o If both trees are of the same height h, then the resulting tree has height h +1
6
Union-find in action Initialize o Everyone is his/her own boss A B C D E 0 0 0 0 0
7
Union-find in action Union(A, B) o Find(A) returns A and Find(B) returns B o Make Alice the boss of Bob o Increase the height of the tree A B C D E 1 0 0 0 0
8
Union-find in action Union(C, D) o Find(C) returns C and Find(D) returns D o Make Carol the boss of Dave o Increase the height of the tree A B C D E 1 0 1 0 0
9
Union-find in action Union(B, D) o Find(B) returns A and Find(D) returns C o Make Alice the boss of Carol o Increase the height of the tree A B C D E 2 0 1 0 0
10
Your turn Find(C)? A B C D E 2 0 1 0 0
11
Your turn Find(C)? o Find(C) returns A A B C D E 2 0 1 0 0
12
Your turn Union(B, E)? A B C D E 2 0 1 0 0
13
Your turn Union(B, E)? o Find(B) returns A and Find(E) returns E o Make Alice the boss of Eve o No increase in the tree height (Why?) A B C D E 2 0 1 0 0
14
Final result Does this look more like a tree? A B C D E 2 0 1 0 0
15
Analysis Height of each tree = O(log n ) Cost of Find(): O(log n ) Cost of Union(): O(log n ) o Dominated by the cost of Find()
16
Minimum spanning tree G = (V, E): undirected, connected, (non- negatively) weighted Problem : find a subset of edges with minimum total weight such that all vertices in V are connected using these edges A B CDE 1 2 3456 7 Total weight = 1 + 2 + 3 + 6 = 12
17
Kruskal’s algorithm In words: o Sort the edges in ascending order of weights o Initialize: set T = Ø o While T is not a spanning tree Consider the next edge in the sorted list If adding it to T does not cause a cycle, add it The union-find structure helps us check for cycles o Adding an edge corresponds to putting the two endpoints into the same group o Connecting two vertices in the same group causes a cycle
18
Dry run 1: Sort the edges EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7
19
Dry run 2: Set T = Ø EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
20
Dry run 3: Consider the first edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
21
Dry run 4: Consider the second edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
22
Dry run 5: Consider the third edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
23
Dry run 6: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
24
Dry run 7: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
25
Dry run 8: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
26
Dry run 9: We have find an MST! EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 1 2 3456 7 A B CDE
27
Analysis Correctness o In each step, we keep a set of edges T that is a subset of an MST o Theorem : Let S be any tree in the forest (V, T). We can add the lightest edge from S to V-S to T, and the resulting set of edges is also a subset of an MST Space complexity = O(|V|+|E|) Time complexity = O(|E|log|V|) o Sorting alone takes time O(|E|log|V|) (Note that |E| = O(|V| 2 )) o Cycle checking takes O(log|V|) operations (Find()) o Adding an edge also takes O(log|V|) operations (Union())
28
Dry run revisited 2: Set T = Ø EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE A B C D E 0 0 0 0 0
29
Dry run revisited 3: Consider the first edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE A B C D E 1 0 0 0 0
30
Dry run revisited 4: Consider the second edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE A B C D E 1 0 1 0 0
31
Dry run revisited 5: Consider the third edge EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 0 A B C D E 2 0 1 0
32
Dry run revisited 6: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 0 A B C D E 2 0 1 0
33
Dry run revisited 7: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE 0 A B C D E 2 0 1 0
34
Dry run revisited 8: EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE A B C D E 2 0 1 0 0
35
Dry run revisited 9: We have find an MST! EdgeWeight (A, B)1 (C, D)2 (B, D)3 (A, C)4 (A, D)5 (B, E)6 (D, E)7 A B CDE A B C D E 2 0 1 0 0
36
End Questions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.