유니온 파인드

✅ 유니온 파인드의 핵심 이론

➡️ union, find 연산

➡️ 유니온 파인드의 원리 이해하기

  1. 유니온 파인드를 표현하는 일반적인 방법은 1차원 배열을 이용하는 것이다. 처음에는 노드가 연결되어 있지 않으므로 각 노드가 대표노드가 된다. 각 노드가 모두 대표 노드이므로 배열은 자신의 인덱스값으로 초기화 한다.

image.png

  1. 2개의 노드를 선택해 각각의 대표 노드를 찾아 연결하는 union 연산을 수행한다. 배열을 보면 1, 4와 5, 6을 union연산으로 연결한다. 배열[4]는 1로, 배열[6]은 5로 업데이트한다. 1, 4의 연결을 예로 들어 설명하면 1은 대표 노드, 4는 자식 노드로 union연산을 하므로 배열[4]의 대표 노드를 1로 설정한 것이다. 다시 말해 자식 노드로 들어가는 노드값 4를 대표 노드값 1로 변경한 것이다. 그 결과 각각의 집합이었던 1,4는 하나로 합쳐진다.

image.png

image.png

이제 union(4, 6)으로 4와 6을 연결해본다. 그런데 4, 6은 대표 노드가 아니다. 그래서 각 노드의 대표 노드를 찾아 올라간 다음 그 대표 노드를 연결한다. 지금의 경우 4의 대표 노드 1에 6의 대표 노드 5를 연결한 것이다. 배열은 그럼 [1, 2, 3, 1, 1, 5]가 된다. 배열 상태로 보면 그래프의 연결이 잘 안 보일 수도 있겠지만 다음 find연산 설명을 보면 위 배열이 그래프 연결을 잘 나타내고 있다는 것을 쉽게 이해할 수 있다.

  1. find 연산은 자신이 속한 집합의 대표 노드를 찾는 연산이다. find 연산은 단순히 대표 노드를 찾는 역할만 하는 것이 아니라 그래프를 정돈하고 시간 복잡도를 향상시킨다. 이 특징은 매우 중요하다.

📌 find 연산의 작동원리