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

E estrutura <strong>de</strong> divisão e conquista (i) sugere uma prova indutiva da corretu<strong>de</strong><br />

do algoritmo: prove que o algoritmo é correto no caso base e prove que a<br />

combinação <strong>de</strong> soluções corretas dos subproblemas produz uma solução correta<br />

do problema. (ii) <strong>de</strong>fine a <strong>complexida<strong>de</strong></strong> do algoritmo por uma recorrência: a<br />

análise da <strong>complexida<strong>de</strong></strong> consiste na solução <strong>de</strong>sta recorrência.<br />

Recursão natural<br />

• Seja d(n) o tempo para a divisão.<br />

• Seja s(n) o tempo para computar a solução final.<br />

• Po<strong>de</strong>mos somar: f(n) = d(n) + s(n) e obtemos<br />

<br />

Θ(1) para n < n0<br />

T (n) = <br />

1≤i≤k T (ni) + f(n) caso contrário.<br />

Recursão natural: caso balanceado<br />

Mergesort<br />

T (n) =<br />

<br />

Θ(1) para n < n0<br />

kT (⌈n/m⌉) + f(n) caso contrário.<br />

Algoritmo 6.2 (Mergesort)<br />

Entrada Índices p, r e um vetor A com elementos Ap, . . . , Ar<br />

124<br />

Saída O vetor A or<strong>de</strong>nado em or<strong>de</strong>m não-<strong>de</strong>crescente, i.e. para i < j<br />

temos Ai ≤ Aj.<br />

1 i f p < r then<br />

2 q = ⌊(p + r)/2⌋<br />

3 MergeSort (A, p , q ) ;<br />

4 MergeSort (A, q+1, r ) ;<br />

5 Merge (A, p , q , r )<br />

6 end i f

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

Saved successfully!

Ooh no, something went wrong!