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.

2. Análise <strong>de</strong> <strong>complexida<strong>de</strong></strong><br />

função potencial ϕ(n) = 2Cp − Dn. A função ϕ é satisfaz os critérios <strong>de</strong> um<br />

potencial, porque p ≥ n/2, e inicialmente temos ϕ(0) = 0. Com isso o custo<br />

amortizado caso tem espaço na tabela é<br />

ai = ci − ϕ(i − 1) + ϕ(i)<br />

= D − (2C(p − 1) − Dn) + (2Cp − Dn) = C + 2C = O(1).<br />

Caso temos que alocar uma nova tabela o custo é<br />

ai = ci − ϕ(i − 1) + ϕ(i) = D + Cn − (2C(p − 1) − Dn) + (2Cp − 2Dn)<br />

= C + Dn + 2C − Dn = O(1).<br />

2.5. <strong>Notas</strong><br />

O algoritmo 2.9 para multiplicação <strong>de</strong> matrizes não é o melhor possível: Temos<br />

o algoritmo <strong>de</strong> Strassen que precisa somente n log 2 7 ≈ n 2.807 multiplicações<br />

(o algoritmo está <strong>de</strong>talhado no capítulo 6.3) e o algoritmo <strong>de</strong> Coppersmith-<br />

Winograd com n 2.376 multiplicações [14]. Ambas são pouco usadas na prática<br />

porque o <strong>de</strong>sempenho real é melhor somente para n gran<strong>de</strong> (no caso <strong>de</strong> Strassen<br />

n ≈ 700; no caso <strong>de</strong> Coppersmith-Winograd o algoritmo não é praticável).<br />

A conjetura atual é que existe um algoritmo (ótimo) <strong>de</strong> O(n 2 ).<br />

2.6. Exercícios<br />

(Soluções a partir da página 312.)<br />

Exercício 2.1<br />

Qual a <strong>complexida<strong>de</strong></strong> pessimista dos seguintes algoritmos?<br />

66<br />

Algoritmo 2.14 (Alg1)<br />

Entrada Um problema <strong>de</strong> tamanho n.<br />

1 for i := 1 . . . n do<br />

2 for j := 1 . . . 2 i<br />

3 operações c o n s t a n t e s<br />

4 j := j + 1 // i t e r a ç õ e s com v a l o r e s ímpares <strong>de</strong> j<br />

5 end for<br />

6 end for<br />

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

Saved successfully!

Ooh no, something went wrong!