Vimos em aula v�rios algoritmos de ordena��o. Alguns tinham
complexidade de pior caso
, outros tinham complexidade de
pior caso
. Ser� que existem algoritmos de ordena��o
com complexidade de pior caso melhor que estes?
Vamos mostrar que a resposta a esta pergunta � ``n�o'', pelo menos para algoritmos como os que vimos at� agora, baseados em compara��es.
Dizemos que um algoritmo de ordena��o baseia-se em compara��es
se, para seq��ncias de entrada de tamanho , o fluxo do algoritmo
depende apenas do resultado de compara��es entre elementos da
seq��ncia.
Considere um algoritmo de ordena��o arbitr�rio que se baseie em
compara��es e denote por
os elementos de uma
seq��ncia arbitr�ria de entrada de tamanho
. Suponha, sem perda de
generalidade, que os elementos da seq��ncia s�o todos distintos. Neste
caso, podemos supor, tamb�m sem perda de generalidade, que todas as
compara��es feitas pelo algoritmo s�o do tipo ``
''.
A �rvore de decis�o de um tal algoritmo (definida para cada
valor de ) � uma �rvore bin�ria cujos v�rtices internos est�o
rotulados por pares de elementos da seq��ncia de entrada, denotados
por exemplo por
. Cada v�rtice interno tem dois filhos. As
arestas de um v�rtice interno para os seus filhos est�o rotuladas uma
por
e a outra por
. Para facilitar a exposi��o, digamos que
o r�tulo
leva ao filho esquerdo e que o r�tulo
leva ao
filho direito. Cada folha est� rotulada por uma permuta��o de
.
A �rvore de decis�o est� associada ao algoritmo da seguinte maneira. O
r�tulo da raiz da �rvore corresponde � primeira compara��o efetuada
pelo algoritmo quando a entrada � uma seq��ncia
. A
sub�rvore esquerda da raiz descreve as compara��es subseq�entes, caso
o resultado desta primeira compara��o, digamos,
, seja
verdadeiro. J� a sub�rvore direita descreve as compara��es
subseq�entes caso o resultado da compara��o
seja falso.
Com isso, cada seq��ncia
corresponde a um caminho da
raiz at� uma folha da �rvore de decis�o. A permuta��o que rotula essa
folha � exatamente a permuta��o que deixa
ordenada.
Exemplo: A �rvore de decis�o do algoritmo inser��o para
�
Por exemplo, se ,
e
, o ``caminho'' do
algoritmo na �rvore de decis�o acima � o caminho marcado em negrito.
Note que cada uma das permuta��es aparece nas folhas. Isso � de
se esperar mesmo para um
arbitr�rio. Ou seja, cada uma das
permuta��es deve aparecer como r�tulo de uma das folhas na �rvore de
decis�o. Afinal, para cada permuta��o espec�fica, h� pelo menos uma
seq��ncia de entrada que � ordenada apenas por aquela permuta��o.
Se uma permuta��o n�o aparecesse, ent�o o algoritmo n�o ordenaria a
correspondente seq��ncia de entrada.
Observe tamb�m que o n�mero de compara��es que o algoritmo faz no pior caso � exatamente a altura da �rvore de decis�o. Portanto, se calcularmos uma delimita��o inferior para a altura da �rvore de decis�o do algoritmo, temos uma delimita��o inferior para a complexidade de pior caso do algoritmo. Isso � o que vamos fazer.
Existem permuta��es de
. Cada uma delas deve aparecer em
alguma das folhas da �rvore de decis�o. Portanto, a �rvore de decis�o
deve ter pelo menos
folhas. Por outro lado, uma �rvore bin�ria de
altura
tem no m�ximo
folhas. Assim, se
� a altura da
�rvore de decis�o de um algoritmo de ordena��o baseado em compara��es,
ent�o
. Sabemos, pela f�rmula de Stirling, que
Exerc�cios