Union-Find (Disjoint set or Merge-find set)

1. Introduction

    KRUSKAL(graph):
    1. MST = []                  # Initialize an empty MST
    2. Sort all edges by weight
    3. Initialize a Disjoint-Set for all vertices
    4. For each edge (u, v) in sorted edge list:
        a. If u and v belong to different sets:
            i. Add edge (u, v) to MST
            ii. Union(u, v) in the Disjoint-Set
        b. If u and v are in the same set, skip edge
    5. Return MST
Operation T.C. Note
Construction O(n)O(n) Create new UnionFind DS
Union a(n)a(n) Merge two sets
Find a(n)a(n) Find the given element
Get Component Size a(n)a(n) List of element in a set
Check if connected a(n)a(n) True if two elements have same root node
Count Components O(1)O(1) Number of sets available

Note: a(n)a(n) --> Amortized constatnt time, almost constatnt time although not contant time.


------ End ------