1. union find(disjoin-set)란?
- 서로 중복되지 않는 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조
- 다수의 노드들 중에 연결된 노드를 찾거나, 노드들을 합칠 때 사용하는 알고리즘
1~10까지 있다고 가정할 때, 아래와 같은 연결 구조를 가지고 있다고 가정하자.
[ 진행과정 ]
- 1과 2가 연결되었으면, 원소 2의 정보를 1로 바꾼다.
- 1, 2, 3, 4가 모두 연결되어있어 같은 집단에 속하지만, 처음에는 각자의 부모노드를 작성한다.
- 3과 2는 연결되어있다. -> 3의 연결정보를 2로 바꾼다. -> 2와 1은 연결되어있다. -> 3과 1은 연결되어있으므로 3의 연결정보를 1로 바꾼다.
구현
- 초기화 : N개의 원소가 각각의 집합에 포함되어 있도록 초기화
- Union(합치기) : 두 원소 a, b가 주어질 때, 이들이 속한 두 집합을 하나로 합친다.
- Find(찾기) : 어떤 원소 a가 주어질 때 이 원소가 속한 집합을 반환
'알고리즘' 카테고리의 다른 글
[PROGRAMMERS] 최고의 집합 (0) | 2021.01.04 |
---|---|
[BAEKJOON] 4915. 친구 네트워크 (0) | 2021.01.02 |
[LEETCODE] 51. N-Queens (0) | 2021.01.01 |
[알고리즘] heap 구조 (0) | 2020.12.30 |
[알고리즘] LCS 알고리즘 (0) | 2020.12.28 |