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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6. Divisão e conquista<br />

• Para resolver ela po<strong>de</strong>mos substituir<br />

T (n) = f(n) + T (n − 1) = f(n) + f(n − 1) + T (n − 1) + f(n − 2)<br />

= · · · = <br />

f(i)<br />

(Os · · · substituem uma prova por indução.)<br />

É simples generalizar isso para<br />

T (n) = T (n/c) + f(n)<br />

= f(n) + f(n/c) + f(n/c 2 ) + · · ·<br />

= <br />

f(n/c i )<br />

0≤i≤logcn<br />

1≤i≤n<br />

Exemplo 6.2<br />

Na <strong>aula</strong> sobre a <strong>complexida<strong>de</strong></strong> média do algoritmo Quicksort (veja página 57),<br />

encontramos uma recorrência da forma<br />

T (n) = n + T (n − 1)<br />

cuja solução é <br />

1≤i≤n i = n(n − 1)/2. ♦<br />

Substituição direta<br />

• Da mesma forma po<strong>de</strong>mos resolver recorrências como<br />

<br />

f(1) caso n = 1<br />

T (n) =<br />

T (n/2) + f(n) caso contrário<br />

• substituindo<br />

T (n) = f(n) + T (n/2) = f(n) + f(n/2) + T (n/4)<br />

= · · · =<br />

<br />

f(n/2 i )<br />

0≤i≤log 2 n<br />

Exemplo 6.3<br />

Ainda na <strong>aula</strong> sobre a <strong>complexida<strong>de</strong></strong> média do algoritmo Quicksort (veja<br />

página 57), encontramos outra recorrência da forma<br />

128<br />

T (n) = n + 2T (n/2).

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

Saved successfully!

Ooh no, something went wrong!