Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar

arquivoescolar.org
from arquivoescolar.org More from this publisher
13.04.2013 Views

2. Análise de complexidade função potencial ϕ(n) = 2Cp − Dn. A função ϕ é satisfaz os critérios de um potencial, porque p ≥ n/2, e inicialmente temos ϕ(0) = 0. Com isso o custo amortizado caso tem espaço na tabela é ai = ci − ϕ(i − 1) + ϕ(i) = D − (2C(p − 1) − Dn) + (2Cp − Dn) = C + 2C = O(1). Caso temos que alocar uma nova tabela o custo é ai = ci − ϕ(i − 1) + ϕ(i) = D + Cn − (2C(p − 1) − Dn) + (2Cp − 2Dn) = C + Dn + 2C − Dn = O(1). 2.5. Notas O algoritmo 2.9 para multiplicação de matrizes não é o melhor possível: Temos o algoritmo de Strassen que precisa somente n log 2 7 ≈ n 2.807 multiplicações (o algoritmo está detalhado no capítulo 6.3) e o algoritmo de Coppersmith- Winograd com n 2.376 multiplicações [14]. Ambas são pouco usadas na prática porque o desempenho real é melhor somente para n grande (no caso de Strassen n ≈ 700; no caso de Coppersmith-Winograd o algoritmo não é praticável). A conjetura atual é que existe um algoritmo (ótimo) de O(n 2 ). 2.6. Exercícios (Soluções a partir da página 312.) Exercício 2.1 Qual a complexidade pessimista dos seguintes algoritmos? 66 Algoritmo 2.14 (Alg1) Entrada Um problema de tamanho n. 1 for i := 1 . . . n do 2 for j := 1 . . . 2 i 3 operações c o n s t a n t e s 4 j := j + 1 // i t e r a ç õ e s com v a l o r e s ímpares de j 5 end for 6 end for ♦

Algoritmo 2.15 (Alg2) Entrada Um problema de tamanho n. 1 for i := 1 . . . n do 2 for j := 1 . . . 2 i 3 operações com complexidade O(j 2 ) 4 j := j + 1 5 end for 6 end for Algoritmo 2.16 (Alg3) Entrada Um problema de tamanho n. 1 for i := 1 . . . n do 2 for j := i . . . n 3 operações com complexidade O(2 i ) 4 end for 5 end for Algoritmo 2.17 (Alg4) Entrada Um problema de tamanho n. 1 for i := 1 . . . n do 2 j := 1 3 while j ≤ i do 4 operações com complexidade O(2 j ) 5 j := j+1 6 end for 7 end for 2.6. Exercícios 67

Algoritmo 2.15 (Alg2)<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 com <strong>complexida<strong>de</strong></strong> O(j 2 )<br />

4 j := j + 1<br />

5 end for<br />

6 end for<br />

Algoritmo 2.16 (Alg3)<br />

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

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

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

3 operações com <strong>complexida<strong>de</strong></strong> O(2 i )<br />

4 end for<br />

5 end for<br />

Algoritmo 2.17 (Alg4)<br />

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

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

2 j := 1<br />

3 while j ≤ i do<br />

4 operações com <strong>complexida<strong>de</strong></strong> O(2 j )<br />

5 j := j+1<br />

6 end for<br />

7 end for<br />

2.6. Exercícios<br />

67

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

Saved successfully!

Ooh no, something went wrong!