(nmero de comparaes)
Neste caso, j sabemos (mergesort) que T(n) = O (nlogn).
Pergunta: Conseguimos um tempo de execuo O(nlogn) sob hipteses mais fracas?
R: Sim.
Antes de mostrarmos este fato, observe o seguinte:
2- Se o piv muito prximo de um lado da seqncia, ento o tempo de execuo
alto.
Por exemplo, se o piv o menor elemento da seqncia ento
-
1 passo: Desejamos cancelar alguns dos termos T(i). Para isto, vamos analisar
a expresso correspondente para o valor (n + 1)
n
(**) T(n+1) = (n+1) - 1 + 2/(n+1) T(i)
i=1
(n>=2)
Por convenincia, multiplicaremos ambos os lados por n em (*) e por (n+1) em (**).
Temos ento,
n-1
(1) n T(n) = n (n-1) + 2 T(i)
i=1
(n>=2)
n
(2) (n+1) T(n+1) = (n+1) n + 2 T(i)
i=1
(n>=2)
(n>=2)
rvores de deciso
Por que?
R: rvores de deciso modelam computaes que consistem principalmente em
comparaes.
Definio(rvore de deciso) : rvore de deciso so rvores binrias onde cada
vrtice interno associado com uma consulta cuja resposta uma de duas
possibilidades, cada uma delas associada a uma ramificao. Cada folha associada
com uma sada possvel.
Exemplo:
T
rvore de deciso
O pior caso do tempo de execuo est associado com a altura da rvore T, a qual o n
mximo de consultas exigidas por uma entrada.
Teorema: Todo algoritmo baseado em rvore de deciso para ordenao tem altura
(nlogn).
Prova: A entrada para ordenao uma seqncia x1,x2,...,xn. A sada a mesma
seqncia ordenada. Outra maneira de olhar a sada como uma permutao da entrada.
Cada permutao uma sada possvel, visto que a entrada pode estar em qualquer
ordem. Um algoritmo de ordenao est correto, se ele trata todas as entradas possveis.
Logo, cada permutao de (1,2,...,n) devera ser representada como uma sada possvel
na rvore de deciso para ordenao. As sadas so associadas com as folhas, como
temos n! permutaes de n eltos e como a rvore binria conclumos que a altura da
rvore pelo menos log2(n!).
Pela formula de Stirling (livro do Cormen):
____
n! = 2n (n/e)n (1 + O(1/n))
Desta forma,
log2(n!) = (nlogn).
(+)