n 별개 요소가있는 가중치 결합 휴리스틱 (NO PATH COMPRESSION!) 만 사용하여 분리 집합의 포리스트 구현을 고려하십시오. n-1 개의 공용체 시퀀스를 실행하는 최악의 경우의 시간 복잡도를 T (n, m)로 정의하고 m은 임의의 순서로 찾습니다. 여기서 m은 n보다 큰 양의 정수입니다.경로 압축을 사용하지 않는 포리스트 구현이있는 비 연속 집합
T (n, m)을 n-1 개의 공용체를 이루는 순서로 정의한 다음 가능한 가장 큰 트리에서 찾기 연산을 수행하는 것이 가장 길기 때문에 m은 AFTERWARDS를 찾습니다. 따라서 각 노동 조합이 O (1)을 취하여 n-1 개의 노동 조합이 n-1 단계가되기 때문에 T (n, m) = m * log (n) + n - 1이고 각 탐색은 n-1 노동 조합 후의 결과 트리의 높이는 log_2 (n)로 제한됩니다.
내 문제는 T (n, m)이 좋아 보이니?
둘째, T (n, m) Big Omega (m * log (n))입니까? 나의 주장은 가능한 최소의 T (n, m)이 m * log (2) + 1이고 m * log (2)보다 분명히 클 경우 c = 1이고 n> = 2라는 것이다. 이 질문을하는 것은 어리석은 것처럼 보입니다.하지만 해결책이 너무 쉬운 것 같아서 정확성에 대한 의문이 생깁니다.
미리 감사드립니다.
우리는 상환 분석만을 다루고 있습니까? 실수로 경로 압축을하지 않으면 최악의 검색 시간은 O (n) 일 수 있습니다. – efficiencyIsBliss
@ efficiencyIsBliss- 만약 당신이 union-by-weight를한다면 당신은 실제로이 O (lg n)을 만들 수 있습니다. 아이디어는 경로의 높이를 하나씩 늘릴 때마다 노드의 수를 두 배로 늘려야한다는 것입니다. – templatetypedef