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

B. Soluções dos exercícios Prova de B.3: Para g ∈ Ω(f) + Ω(f) temos g = h + h ′ com c > 0 e n0 tal que ∀n > n0 h ≥ cf e c ′ > 0 e n ′ 0 tal que ∀n > n0 h ′ ≥ c ′ f. Logo para n > max(n0, n ′ 0) temos g = h + h ′ ≥ (c + c ′ )f. Prova de B.4: Para g ∈ Ω(Ω(f)) temos g ≥ ch com h ≥ c ′ f a partir de índices n0 e n ′ 0, e logo g ≥ cc ′ h a partir de max(n0, n ′ 0). Prova de B.5: h = f ′ g ′ com f ′ ≥ cf f e g ′ ≥ cgg tal que h = f ′ g ′ ≥ cf cgfg. Prova de B.6: h ≥ cfg. Escrevendo h = fg ′ temos que mostrar g ′ ∈ Ω(g). Mas g ′ = h/f ≥ cfg/f = cg. Solução do exercício 1.7. “⇐”: Seja f + c ∈ O(g), logo existem c ′ e n0 tal que ∀n > n0 f + c ≤ c ′ g. Portanto f ≤ f + c ≤ c ′ g também, e temos f ∈ O(g). “⇒”: Essa direção no caso geral não é válida. Um contra-exemplo simples é 0 ∈ O(0) mas 0+c ∈ O(0). O problema é que a função g pode ser 0 um número infinito de vezes. Assim f tem que ser 0 nesses pontos também, mas f + c não é. Mas com a restrição que g ∈ Ω(1), temos uma prova: Seja f ∈ O(g) logo existem c ′ e n ′ 0 tal que ∀n > n ′ 0 f ≤ c ′ g. Como g ∈ Ω(1) também existem c ′′ e n ′′ 0 tal que ∀n > n ′′ 0 g ≥ c ′′ . Logo para n > max(n ′ 0, n ′′ 0) Solução do exercício 1.8. f + c ≤ c ′ g + c ≤ c ′ g + c c ′′ g = (c′ + c )g. c ′′ 1. Para n ≥ 2 temos log 1 + n ≤ log 2n = log 2 + log n ≤ 2 log n. 2. Seja f ∈ log O(n 2 ), i.e. f = log g com g tal que ∃n0, c ∀n > n0 g ≤ cn 2 . Então f = log g ≤ log cn 2 = log c+2 log n ≤ 3 log n para n > max(c, n0). 3. Temos que mostrar que existem c e n0 tal que ∀n > n0 log log n ≤ c log n. Como log n ≤ n para todos n ≥ 1 a inequação acima está correto com c = 1. Solução do exercício 1.9. Para provar fn = O(n) temos que provar que existe um c tal que fn ≤ cn a partir um ponto n0. É importante que a constante c é a mesma para todo n. Na verificação do professor Veloz a constante c muda implicitamente, e por 310

isso ela não é válida. Ele tem que provar que fn ≤ cn para algum c fixo. Uma tentativa leva a fn = 2fn−1 ≤ 2cn ≤ cn Perdido! que mostra que essa prova não funciona. Solução do exercício 1.10. E simples ver que f ∈ ô(g) implica f ∈ o(g). Para mostrar a outra direção suponha que f ∈ o(g). Temos que mostrar que ∀c > 0 : ∃n0 tal que f < cg. Escolhe um c. Como f ∈ o(g) sabemos que existe um n0 tal que f ≤ c/2g para n > n0. Se g = 0 para n > n ′ 0 então c/2g < g também. Logo f ≤ c/2g < cg para n > max(n0, n ′ 0). Solução do exercício 1.11. Primeira verifique-se que Φ satisfaz Φ + 1 = Φ 2 . Prova que fn ∈ O(Φ n ) com indução que fn ≤ cΦ n . Base: f0 = 0 ≤ c e f1 = 1 ≤ cΦ para c ≥ 1/Φ ≈ 0.62. Passo: fn = fn−1 + fn−2 ≤ cΦ n−1 + cΦ n−2 = (cΦ + c)Φ n−2 ≤ cΦ n caso cΦ + c ≤ cΦ 2 . Prova que fn ∈ Ω(Φ n ) com indução que fn ≥ cΦ n . Base: Vamos escolher n0 = 1. f1 = 1 ≥ cΦ e f2 = 1 ≥ cΦ 2 caso c ≤ Φ −2 ≈ 0.38. Passo: fn = fn−1 + fn−2 ≥ cΦ n−1 + cΦ n−2 = (cΦ + c)Φ n−2 ≤ cΦ n caso cΦ + c ≥ cΦ 2 . Solução do exercício [64, p. 2.3]. 1. 3n + 7 ≤ 5n + 2 ⇐⇒ 5 ≤ 2n ⇐⇒ 2.5 ≤ n (equação linear) 2. 5n + 7 ≤ 3n 2 + 1 ⇐⇒ 0 ≤ 3n 2 − 5n − 6 ⇐⇒ 5/6 + √ 97/6 ≤ n (equação quadrática) 3. 5 log 2 n + 7 ≤ 5n + 1 ⇐⇒ 7 5 + 2 7 − 2 ≤ 2 5n ⇐⇒ 16933 ≤ 2 5n ⇐⇒ 2.809 . . . ≤ n 4. Veja item (b) 5. 52 n + 3 ≥ 3n 2 + 5n ⇐⇒ n ≥ 2 n ≥ (3n 2 + 5n − 3)/5 ⇐ 2 n ≥ n 2 . 311

B. Soluções dos exercícios<br />

Prova <strong>de</strong> B.3: Para g ∈ Ω(f) + Ω(f) temos g = h + h ′ com c > 0 e n0 tal<br />

que ∀n > n0 h ≥ cf e c ′ > 0 e n ′ 0 tal que ∀n > n0 h ′ ≥ c ′ f. Logo para<br />

n > max(n0, n ′ 0) temos g = h + h ′ ≥ (c + c ′ )f.<br />

Prova <strong>de</strong> B.4: Para g ∈ Ω(Ω(f)) temos g ≥ ch com h ≥ c ′ f a partir <strong>de</strong> índices<br />

n0 e n ′ 0, e logo g ≥ cc ′ h a partir <strong>de</strong> max(n0, n ′ 0).<br />

Prova <strong>de</strong> B.5: h = f ′ g ′ com f ′ ≥ cf f e g ′ ≥ cgg tal que h = f ′ g ′ ≥ cf cgfg.<br />

Prova <strong>de</strong> B.6: h ≥ cfg. Escrevendo h = fg ′ temos que mostrar g ′ ∈ Ω(g).<br />

Mas g ′ = h/f ≥ cfg/f = cg. <br />

Solução do exercício 1.7.<br />

“⇐”:<br />

Seja f + c ∈ O(g), logo existem c ′ e n0 tal que ∀n > n0 f + c ≤ c ′ g. Portanto<br />

f ≤ f + c ≤ c ′ g também, e temos f ∈ O(g).<br />

“⇒”:<br />

Essa direção no caso geral não é válida. Um contra-exemplo simples é 0 ∈ O(0)<br />

mas 0+c ∈ O(0). O problema é que a função g po<strong>de</strong> ser 0 um número infinito<br />

<strong>de</strong> vezes. Assim f tem que ser 0 nesses pontos também, mas f + c não é. Mas<br />

com a restrição que g ∈ Ω(1), temos uma prova:<br />

Seja f ∈ O(g) logo existem c ′ e n ′ 0 tal que ∀n > n ′ 0 f ≤ c ′ g. Como g ∈ Ω(1)<br />

também existem c ′′ e n ′′<br />

0 tal que ∀n > n ′′<br />

0 g ≥ c ′′ . Logo para n > max(n ′ 0, n ′′<br />

0)<br />

Solução do exercício 1.8.<br />

f + c ≤ c ′ g + c ≤ c ′ g + c<br />

c ′′ g = (c′ + c<br />

)g.<br />

c ′′<br />

1. Para n ≥ 2 temos log 1 + n ≤ log 2n = log 2 + log n ≤ 2 log n.<br />

2. Seja f ∈ log O(n 2 ), i.e. f = log g com g tal que ∃n0, c ∀n > n0 g ≤ cn 2 .<br />

Então f = log g ≤ log cn 2 = log c+2 log n ≤ 3 log n para n > max(c, n0).<br />

3. Temos que mostrar que existem c e n0 tal que ∀n > n0 log log n ≤ c log n.<br />

Como log n ≤ n para todos n ≥ 1 a inequação acima está correto com<br />

c = 1.<br />

Solução do exercício 1.9.<br />

Para provar fn = O(n) temos que provar que existe um c tal que fn ≤ cn a<br />

partir um ponto n0. É importante que a constante c é a mesma para todo n.<br />

Na verificação do professor Veloz a constante c muda implicitamente, e por<br />

310

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

Saved successfully!

Ooh no, something went wrong!