서로소 집합 이란 공통 원소가 없는 두 집합을 의미합니다. 예를 들어 집합 {1, 2}와 {3, 4}는 서로소 관계입니다.
서로소 집합 자료 구조란 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 라고 할 수 있는데,
이러한 서로소 집합 자료구조는 union과 find 2개의 연산으로 조작할 수 있습니다.
union
연산은 합집합 연산으로 2개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산이고, find
연산은 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산입니다.
union-find 알고리즘은 기본적으로 다음과 같은 순서로 동작합니다.
실제 구현할 때에는 A'와 B' 중 더 번호가 작은 원소가 부모 노드가 되도록 구현하는 경우가 많기 때문에, 이러한 방법으로 구현해보겠습니다. 예를 들어 A'가 1이고, B'가 3이면 B'가 A'를 가리키도록 설정할 것입니다. 즉, B'의 부모 노드를 A'로 설정하겠다는 뜻입니다.
다음과 같이 4개의 union 연산이 주어졌습니다.