13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.3. Complexida<strong>de</strong> média<br />

e o último passo é justificado, porque a partição <strong>de</strong> uma permutação aleatória<br />

gera duas partições aleatórias in<strong>de</strong>pen<strong>de</strong>ntes, e existe uma entrada d em que<br />

as duas sub-partições assumem o máximo. Para <strong>de</strong>terminar o máximo da<br />

última expressão, po<strong>de</strong>mos observar que ele <strong>de</strong>ve ocorrer no índice i = 1 ou<br />

i = ⌊n/2⌋ (porque a função f(i) = cp[QS](i − 1) + cp[QS](n − i) é simétrico<br />

com eixo <strong>de</strong> simetria i = n/2).<br />

Complexida<strong>de</strong> pessimista<br />

• O máximo ocorre para i = 1 ou i = n/2<br />

• Caso i = 1<br />

cp[QS](n) = n + cp[QS](0) + cp[QS](n − 1) = n + cp[QS](n − 1)<br />

= · · · = <br />

(i − 1) = Θ(n 2 )<br />

• Caso i = n/2<br />

1≤i≤n<br />

cp[QS](n) = n + 2cp[QS](n/2) = n − 1 + 2((n − 1)/2 + cp(n/4))<br />

= · · · = Θ(n log 2 n)<br />

• Logo, no pior caso, Quicksort precisa Θ(n 2 ) comparações.<br />

• No caso bem balanceado: Θ(n log 2 n) comparações.<br />

Complexida<strong>de</strong> média<br />

• Seja X a variável aleatória que <strong>de</strong>nota a posição (inglês: rank) do pivô<br />

am na sequência.<br />

• Vamos supor que todos elementos ai são diferentes (e, sem perda da<br />

generalida<strong>de</strong>, uma permutação <strong>de</strong> [1, n]).<br />

cm[QS](n) = <br />

d∈Dn<br />

= <br />

d∈Dn<br />

= n + <br />

Pr[d] <strong>de</strong>semp[QS](d)<br />

Pr[d](<strong>de</strong>semp[P ](d) + <strong>de</strong>semp[QS](dl) + <strong>de</strong>semp[QS](dr))<br />

d∈Dn<br />

= n + <br />

1≤i≤n<br />

Pr[d](<strong>de</strong>semp[QS](dl) + <strong>de</strong>semp[QS](dr))<br />

Pr[X = i](cm[QS](i − 1) + cm[QS](n − i))<br />

57

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!