728x90
Union-Find
- Disjoint Set을 표현할 때 사용하는 알고리즘
- 서로 중복되지 않는 부분집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조
- 집합을 구현하는데 비트벡터, 배열, 연결리스트를 이용할 수 있으나 그 중 효율적인 트리구조를 이용하여 구현
연산
- make-set(x)
- 초기화
- x를 유일한 원소로 하는 새로운 집합을 만든다.
- union(x,y)
- 합하기
- x가 속한 집합과 y가 속한 집합을 합친다.
- find(x)
- 찾기
- x가 속한 집합의 대표값(루트노드값)을 반환한다. x가 어떤 집합에 속해있는지 찾는 연산
- 전체 집합이 있을 때 구성 원소들이 겹치지 않도록 분할 하는데 자주 사용
최악의 상황
- 트리 구조가 완전 비대칭인 경우
- 연결리스트 형태
- 트리의 높이가 최대가 된다.
- 원소의 개수가 N일 때, 트리의 높이가 N-1이므로 union과 find(x)의 시간복잡도가 모두 O(N)
- 배열로 구현하는것보다 비효율적이다.
728x90
'Computer > 알고리즘' 카테고리의 다른 글
그리디 알고리즘_GreedyAlgorithm (0) | 2024.01.26 |
---|---|
프림_Prim (0) | 2024.01.21 |
크루스칼_Kruskal (0) | 2024.01.21 |
플로이드 워셜_FloydWarshall (0) | 2024.01.21 |
다익스트라_Dijkstra (0) | 2024.01.21 |