union find 예제
  • 02
  • 08

추가 하위 집합으로 분할된 N 요소 집합이 있으며 특정 하위 집합에서 각 요소의 연결 또는 하위 집합의 연결을 추적해야 한다고 가정해 보겠습니다. 이 작업을 효율적으로 수행하려면 공용 구조 찾기 데이터 구조를 사용할 수 있습니다. 경로 압축만으로도 최악의 경우 실행 시간을 제공합니다 (n + f f (n + f 2 + f / n n) { displaystyle Theta (n +flog _{2 +f/n))}} 작업. 이를 통해 유니온 찾기 데이터 구조가 노드 연결, 연결된 구성 요소 찾기 등과 같은 다양한 작업을 수행하는 그래프에서 유용하다고 추론할 수 있습니다. 하위 집합의 요소 수에 따라 두 개의 하위 집합을 연결하기 때문에 공용 구조체 함수가 수정됩니다. 의 몇 가지 작업을 수행 하자: 1) 유니온 (2, 1) Arr 될 것 이다: 2) 유니온 (4, 3) 3) 유니온 (8, 4) 4) 유니온 (9, 3) Arr 될 것 이다: 그래서 우리가 작업 유니온을 수행 하는 경우 (5, 2) 위의 구성 요소에, 다음 될 것 이다: 분리 된 데이터 구조 모델 세트의 분할 예를 들어, 방향이 없는 그래프의 연결된 구성 요소를 추적합니다. 그런 다음 이 모델을 사용하여 두 정점이 동일한 구성요소에 속하는지 또는 정점 사이에 모서리를 추가하면 주기가 발생하는지 여부를 결정할 수 있습니다. Union-찾기 알고리즘은 통합의 고성능 구현에 사용됩니다. [11] 1994년, 리처드 J. 앤더슨과 헤더 울은 차단할 필요가 없는 유니온-찾기의 병렬 버전을 설명했다. [8] 아이디어 : 경로 압축과의 결합 : A의 루트를 계산하는 동안 각 i를 설정하여 A의 루트를 계산하는 동안 경로 사이에 들어오는 노드인 조부모 (경로 길이를 절반으로 줄이는)를 가리킵니다. 따라서 공용 구조 찾기 데이터 구조를 사용하여 한 친구가 직접 또는 간접적으로 다른 친구와 연결되어 있는지 여부를 확인할 수 있습니다.

우리는 또한 두 개의 다른 연결이 끊어진 하위 집합을 결정할 수 있습니다. 여기서 2개의 다른 하위 집합은 {A, B, C} 및 {D, E}입니다. 이전 게시물에서는 유니온 찾기 알고리즘을 도입하고 이를 사용하여 그래프의 주기를 감지했습니다. 하위 집합에 대해 다음 union() 및 find() 작업을 사용했습니다. union() 및 find()의 구현은 순진하며 최악의 경우 O(n)시간이 소요됩니다. 이러한 메서드는 순위 또는 높이별로 공용 구조체를 사용하여 O(Logn)로 향상시킬 수 있습니다. 우리는 곧 별도의 게시물에 순위에 의해 연합을 논의 할 것입니다. 이 데이터 구조는 부스트 그래프 라이브러리에서 증분 연결된 구성 요소 기능을 구현하는 데 사용됩니다. 또한 그래프의 최소 스패닝 트리를 찾기 위해 Kruskal의 알고리즘을 구현하는 핵심 구성 요소입니다. 디스조인트 집합 데이터 구조는 여러 개의 디스트업션(겹치지 않는) 하위 집합으로 분할된 요소 집합을 추적하는 데이터 구조입니다.

공용 구조 찾기 알고리즘은 이러한 데이터 구조에서 두 가지 유용한 작업을 수행하는 알고리즘입니다. 유니온(A, B) – A를 B에 연결하고 A와 B를 갖는 구성요소를 병합하여 모든 요소를 변경하여 값이 Arr[A], Arr[B]에 해당합니다. 각 단계 후 당신은 또한 배열 Arr의 변화를 관찰 할 수 있습니다. 필수 Union(A, B) 작업을 수행한 후 Find(A, B) 작업을 쉽게 수행하여 A와 B가 연결되어 있는지 여부를 확인할 수 있습니다. A와 B의 루트를 모두 계산하여 확인할 수 있습니다. A와 B의 루트가 같으면 A와 B가 모두 같은 하위 집합에 있고 연결되어 있음을 의미합니다. Union(1, 2)을 수행하는 동안 루트(2)를 root(1)와 연결하여 2의 하위 집합은 1의 하위 집합에 있는 요소 수보다 적은 수의 요소수를 가지므로 합니다. 1) 위에서 설명한 대로 유니온 찾기는 그래프에서 연결된 구성 요소를 결정하는 데 사용됩니다. 2개의 노드가 동일한 연결된 구성 요소에 있는지 그래프에 없는지 확인할 수 있습니다. 또한 2개의 노드 사이에 가장자리를 추가하여 그래프에서 주기로 이어지는지 여부를 결정할 수도 있습니다.

Comments (0)

Leave a reply

Should you ever have a question, please dont hesitate to send a message or reach out on our social media.