2017-12-16 48 views
0

가 나는 다음과 같은 질문에서 2N/3을 얻는 방법을 알아 낸 :Max-Heapify에서 최악의 경우 - 왜 2n/3을 얻을 수 있습니까?

Worst case in Max-Heapify - How do you get 2n/3?

"CLRS, 세 번째 판에서, 155 페이지, 그것은 주어진 MAX-HEAPIFY에서 해당 :

'어린이 하위 트리의 크기는 최대 2n/3입니다. 최악의 경우는 트리의 하단이 정확히 절반 만 가득 찼을 때 발생합니다.' "

그러나 나무의 최저 레벨이 정확히 절반 인 경우 궁금합니다. 전체, 우리는 다음을 얻습니다 :

우리는 미리 상정 한 이후

T (N) < = T (2N/3) + 세타 (1)

그러면 하위 트리의 다음 재귀 호출이 서브 트리의 하부 레벨 (전체 가득 위의 재발을 얻기 위해 다른 쪽이 비어있는 동안이 쪽은 최대한 꽉 차 있음). 따라서, 다음의 호에 반복 될 것이다 :

T (N) < = T (N/2) + 세타 (1)

마다 재귀 호출 이후 동일하다.

실제로 재발생은 변하고 어떻게 우리는 여전히 마스터 정리를 사용할 수 있습니까?

그렇다면 a = 1이고 f (n) = n^0이므로 b가 무엇이든간에 최악의 실행 시간은 항상 O (lgn)가 될 것입니다. 무슨 b?

감사

답변

0

처음 복잡성 O(log_{1.5} n)이지만, 두번째는 O(log_2(n))이다. 따라서 최악의 경우가 최악입니다!