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

6.2.1. Método da substituição<br />

Método da substituição<br />

• O método da substituição envolve duas etapas:<br />

1. pressupõe-se um limite hipotético.<br />

2. usa-se indução matemática para provar que a suposição está correta.<br />

• Aplica-se este método em casos que é fácil pressupor a forma <strong>de</strong> resposta.<br />

• Po<strong>de</strong> ser usado para estabelecer limites superiores ou inferiores.<br />

Mergesort usando o método da substituição<br />

Supõe-se que a recorrência<br />

T (n) = 2T ⌊n/2⌋ + n<br />

tem limite superior igual a n log n, ou seja, T (n) = O(n log n). Devemos<br />

provar que T (n) ≤ cn log n para uma escolha apropriada da constante c > 0.<br />

T (n) ≤ 2 c ⌊n/2⌋ log(⌊n/2⌋ + n)<br />

≤ cn log n/2 + n = cn log n − cn + n<br />

≤ cn log n<br />

para c ≥ 1.<br />

A expressão −cn + n na equação<br />

cn log n −cn + n<br />

<br />

residuo<br />

é o resíduo. A prova objetiva mostrar que o resíduo é negativo.<br />

Como fazer um bom palpite<br />

126<br />

• Usar o resultado <strong>de</strong> recorrências semelhantes. Por exemplo, consi<strong>de</strong>rando<br />

a recorrência T (n) = 2T (⌊n/2⌋ + 17) + n, tem-se que T (n) ∈<br />

O(n log n).<br />

• Provar limites superiores (ou inferiores) e reduzir o intervalo <strong>de</strong> incerteza.<br />

Por exemplo, para equação do Mergesort po<strong>de</strong>mos provar que T (n) =<br />

Ω(n) e T (n) = O(n 2 ). Po<strong>de</strong>mos gradualmente diminuir o limite superior<br />

e elevar o inferior, até obter T (n) = Θ(n log n).

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

Saved successfully!

Ooh no, something went wrong!