You are on page 1of 5

Complexidade do Quicksort

Parmetros: entrada particular + seleo do Piv


1- Se o piv sempre particiona a seqncia em 2 partes iguais ento a relao de
recorrncia :
T(n) = 2T(n/2) + O(n) , T(2) = 1

(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
-

A primeira partio exige (n-1) comparaes e coloca apenas o piv no


local certo.

Se a seqncia j est em ordem crescente e sempre selecionamos o


primeiro elto como piv ento

T(n) = n-1 + n-2 + ... + 1 n + n-1 + n-2 + ... + 1 = n(n+1)/2 = O(n2)


Pior caso do Quicksort: Seqncias ordenadas ou quase ordenadas.
Podemos evitar o pior caso quadrtico:
-mediana(primeiro,meio,ltimo) significa escolher o segundo maior
elemento.
-random(esquerda,direita)
Ateno: O tempo do quicksort ainda ser O(n2) no pior caso.
Por que?
R: Existe a chance de que o piv seja o menor elemento na seqncia.
Porm...
A probabilidade deste fato ocorrer muito pequena!!

Vamos analisar este caso


Assumiremos que cada elemento xi tem a mesma probabilidade de ser
selecionado como o piv.
O tempo de execuo do quicksort se o i-simo elto o piv deve ser escrito
como:
T(n) = (n-1) + T (i-1) + T(n-i)
OBS: Para prosseguir nos clculos, usaremos os conceitos de varivel
randmica, valor esperado ou esperana,
E(x) = x Pr(X=x)
x
Se cada elemento tem a mesma probabilidade de ser selecionado (equiprovvel),
ento o tempo medio :
n
T(n) = (n-1) + 1/n (T(i-1) + T(n-i))
i=1
n
n
= (n-1) + 1/n T(i-1) + 1/nT(n-i)
i=1
i=1
(n-1)
= (n-1) + 2/n T(i)
i=0
Como resolver esta relao de recorrncia?
Manber)
n-1
(*) T(n) = (n-1) + 2/n T(i)
i=1

(seo 3.5.3, p. 52/53, livro do

(para n>= 2) , T(1) = 0

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)

Agora, subtraindo (1) de (2) obtemos:


(n+1)T(n+1) - nT(n) = (n+1)n n(n-1) + 2T(n) =
= 2n + 2T(n) ,

(n>=2)

Isto implica que,


(n+1)T(n+1) = 2n + 2T(n) + nT(n) = 2n + (n+2)T(n)
T(n+1) = 2n/(n+1) + (n+2)/(n+1) T(n) 2 + (n+2)/(n+1) T(n)
Reescrevendo para T(n) temos:
T(n) = 2 + (n+1)/n T(n-1)
Se expandirmos esta frmula, chegamos a seguinte expresso:
T(n) = 2 (n+1) (1/(n+1) + 1/n + 1/(n-1) + ... + 1/3)
= 2 (n+1) (H(n+1) 1.5), onde H(n) = 1 + 1/2 + 1/3 + ... + 1/n a serie harmnica.
No iremos provar aqui mas a seguinte igualdade vlida (livro do Cormen)
H(n) = ln n + + O(1/n) onde = 0,577 a constante de Euler.
Logo,
T(n) <= 2 (n+1) (ln n + 1.5) + O(1) = O (nlogn)
C.Q.D

LIMITE INFERIOR PARA ORDENAO


Comeamos com um algoritmo O(n2) e melhoramos para um algoritmo O(nlogn).
possvel melhorar??
R: No
Definio(limite inferior para um problema) : Um limite inferior para o problema
uma prova de que nenhum algoritmo pode resolv-lo melhor.
Ateno: Necessitamos escolher um modelo que corresponda a um algoritmo
arbitrrio e provar que o tempo de execuo de qualquer algoritmo que siga o
modelo deve ser do que o limite inferior.
Nosso modelo :

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).

(+)

Clculo (esboo para (+)): log2(n!) log(2n)1/2 + log(n/e)n


logn + n (logn) loge) C1 nlogn

You might also like