Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 3160 Design and Analysis of Algorithms Tutorial 3 Chengyu Lin.

Similar presentations


Presentation on theme: "CSCI 3160 Design and Analysis of Algorithms Tutorial 3 Chengyu Lin."— Presentation transcript:

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


Download ppt "CSCI 3160 Design and Analysis of Algorithms Tutorial 3 Chengyu Lin."

Similar presentations


Ads by Google