Questão para a prova oral 055 (4a. semana - 17.03.2003)

Enunciado:
A ordem de crescimento da operação BUILD-MAX-HEAP era estimada em O(n lg n), porém fazendo uma analiza melhor pode-se mostrar que esta operação tem ordem de crescimento mais restrita igual a O(n). Por que o mesmo não se aplica a funcao HEAPSORT, sabendo que esta tem um comportamento parecido ao da operação BUID-MAX-HEAP?
A resposta correta para esta interrogação é:

A) A operação MAX-HEAPIFY é chamada apenas 1 vez no procedimento BUILD-MAX-HEAP, enquanto é executada n vezes na função HEAPSORT.
B) A altura da árvore na qual se aplica a operação MAX-HEAPIFY diminui  a cada interação tanto na operação BUILD-MAX-HEAP quanto na função HEAPSORT. Portanto, pode-se mostrar para ambos casos que a ordem de crescimento mais restrita é O(n).
C) A operação MAX-HEAPIFY é chamada, a cada interação, em subarvores com alturas diferentes (de 1 ate altura maxima do heap) no procedimento BUILD-MAX-HEAP; assim MAX-HEAPIFY é executada muitas vezes com alturas pequenas (nas folhas - maioria) e executada pouquissimas vezes com altura lg n (perto da raiz - minoria). Já na função HEAPSORT ocorre o contrário, a operação MAX-HEAPIFY é executada muitas vezes (para as folhas) partindo da raiz (altura lg n), e poucas vezes (nos próximos à raiz) partindo da raiz (altura pequena); assim a altura lg n contribui muito, fazendo a ordem de crescimento manter-se restrita em O(n lg n).
D) Na verdade não é correto afirmar que a operação BUILD-MAX-HEAP tem ordem de crescimento mais restrita igual a O(n), pois a operação MAX-HEAPIFY - que possui ordem de crescimento lg n - é chamada n vezes na construção do heap. Assim a ordem de crescimento mais restrita da operação BUILD-MAX-HEAP é O(n lg n).
E) NDA

Autor(a): Fabio Batista Gomes (RA 022256)