ㅇ분리집합 ADT: 교집합이 없는 집합들
서로소집합이라고도 불리며 Union-Find라고도 한다
소속 관계가 분명해야 하는 데이터를 다룰 때 유용하다
목적: 원소가 어느 집합에 귀속되어 있는지 (find 함수)
직접 응용: 동치관계(e.g. 그래프), 최소신장트리
간접 응용: 알고리즘 구현, 저료구조 구현
<주요 메서드>
- set find(e): 원소 e가 속한 집합을 반환
- union(x, y): 집합 x, y를 통합
<보조 메서드>
- int size(S): 집합 S 원소의 수를 반환
[구현 방법 2가지]
1. 리스트(or 배열)에 기초한 구현
find는 빠르고 union은 느리다
2. 트리에 기초한 구현
find는 느리고 union은 빠르다
1-1 리스트에 기초한 구현: 분리집합 집단을 레코드의 배열로 표현
1-2 배열에 기초한 구현: 소속집합을 원소값으로 하는 크기 n의 배열 S로 분리집합을 표현
2. 트리에 기초한 구현: 연결트리 + 가상트리로 구현
기본적으로 자식이 부모를 가리키는 구조이며, 각 집합은 트리의 루트로 식별한다
- 연결트리: 각 노드는 원소 및 부모를 가리키는 포인터를 저장 (단, 루트 노드는 자신을 부모로 하는 포인터를 저장)
- 가상트리: 자식을 가리키는 포인터가 불필요하므로, 트리 ADT 대신에 배열에 의한 가상트리로 구현하면 충분 - Parent 배열
union 함수 모식도)
find 함수 모식도)
참고 및 출처: 데이터 구조 원리와 응용(국형준교수님), C언어로 쉽게 풀어 쓴 자료구조(천인국)
'Computer Science > 자료구조' 카테고리의 다른 글
[자료구조] 후기 (0) | 2024.06.25 |
---|---|
[자료구조] ep7++) 결정 트리(decision tree) - 양자택일식 문답시스템 (1) | 2024.06.11 |
[자료구조] ep7+) 이진 트리 구현 및 탐색 (0) | 2024.06.11 |
[자료구조] ep7-2) 트리 순회 (0) | 2024.06.10 |
[자료구조] ep7-1) 트리(Tree) (1) | 2024.06.09 |