+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!
+ 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!
+ 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~
+ '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.
+ 혹시라도 문제가 된다면 바로 조취를 취할테니, 말해주시면 감사하겠습니다!
<Union-Find>
[What?]
+ Union-Find는 Disjoint set(서로소 집합) 또는 Merge Find Set(병합 찾기 집합)이라고도 불리는 서로 연관되어있는 것끼리만 묶여있는 자료구조를 뜻합니다.
+ 무분별한 노드(하나의 개체)들이 있을 때, 각 노드들은 자신의 집합의 root정보를 가지고 있고, 그 정보를 비교해서 원하는 결과를 얻으려고 할 때, 사용하는 자료구조입니다.
+ 모든 노드들은 자신의 root정보로 집합이 엮여있으므로, 트리구조(2진트리X)를 따릅니다.
+ 예를 들자면,
1) A,B,C,D,E 와같이 5개의 노드가 있다고했을 때, 각 노드는 자신을 하나의 집합이라고 생각하고, 그 집합의 루트 정보를 가지고 있습니다. 그 루트 정보를 가지고 같은 집합인지 비교하는 것입니다.
=> A(A), B(B), C(C), D(D), E(E)
2) 여기서, A와 B를 비교해서 root가 다르면 같은 집합으로 묶어주고, C와 D를 비교해서 root가 다르면 같은 집합으로 묶어줍니다.
=> {A(A), B(A)}, {C(C), D(C)}, E(E)-여기서 누가 root가 될 건지는 개발자 마음입니다.
3) 여기서 E와 A의 루트와 비교해서 root가 다르다면 같은 집합으로 묶어 줍니다.
=> {A(A), B(A), E(A)}, {C(C), D(C)}
+ 위와 같은 방법으로 자료구조를 형성하여 사용하는 것이 Union-Find입니다.
[Use]
** 참고사이트 **
- https://twpower.github.io/115-union-find-disjoint-set
- http://weeklyps.com/entry/%EC%9C%A0%EB%8B%88%EC%98%A8-%ED%8C%8C%EC%9D%B8%EB%93%9C-Unionfind
-
-
Copyright © -강정이좋아- 무단 전재 및 재배포는 하지 말아주세요.
'요리 레시피 > Algorithm' 카테고리의 다른 글
[BaekJoon] 이항계수, 페르마의 소정리, 거듭제곱 feat.11401번(이항계수3) (0) | 2018.05.12 |
---|---|
[다익스트라] 다익스트라 - 유명한 최단거리 찾기 알고리즘!!! (0) | 2018.03.27 |
[DFS][BFS] DFS 와 BFS (0) | 2018.03.27 |
[Dp] DP에서 배열 사용 (0) | 2018.03.26 |
[BackJoon] 충격의 N-Queen 문제 feat.9663번(N-Queen) (0) | 2018.03.26 |