전은 data structure이고 후자는 mathematical structure입니다.Union-Find는 그래프와 어떤 관련이 있습니까?
그러나 구현되면 동일한 기능과 동작을 많이 공유하는 것처럼 보입니다.
분리 세트의 각 요소는 그래프의 정점으로 간주 될 수 있습니다. 그래프에서 모서리가 Union-Find의 집합을 나타냅니다.
- 이 두 요소/정점이을 연결되어 :
http://algs4.cs.princeton.edu/15uf/ 및 http://algs4.cs.princeton.edu/42digraph/
을 검토 한 후 둘 다 같은 질문에 대답 할 수 생각?
- 주기가 있습니까?
내가보기에는 두 가지 차이가 더 큽니까? 언제 다른 하나를 사용하도록 선택해야합니까?
나는 그래프 알고리즘은 연합 찾기 구조 내부 http://algs4.cs.princeton.edu/43mst/KruskalMST.java.html
구현 세부 사항 사용할 수있는 볼 수 있지만, 연합 찾기가 빠르, 왜 사용 깊이 우선 검색 사이클 테스트? http://algs4.cs.princeton.edu/44sp/DirectedCycle.java.html
Union Find 데이터 구조를 사용하여 새 모서리를 추가하면 O (logN)에 사이클이 생성되는지 테스트 할 수 있습니다. U와 V가 연결되어 있고 O (logN)의 Union Find를 사용하여이를 확인할 수 있습니다. 그런 다음 새 가장자리 UV를 추가하면 확실하게주기가 생기며 U와 V가 연결되어 있지 않으면 확실하지 않습니다. 주기를 만듭니다. 따라서 O (MlogN)에서 M 개의 에지를 테스트 할 수 있습니다. DFS를 사용하는 경우 모든 추가 된 가장자리에 대해 새로운 검색을 실행해야하므로 M 가장자리를 테스트하는 복잡성은 O (M * (N + M))가되며 이는 전혀 좋지 않습니다. –