Complexidade

7
Complexidade Onde c, c1, c2 é uma constante. f(x) = O(g(x)) se existe f(x) <= c*g(x) para x >= x0 f(x) = Ω (g(x)) se existe f(x) >= c*g(x) para x >= x0 f(x) = θ (g(x)) se existe f(x) <= c2*g(x) f(x) >= c1*g(x) para x >= x0

description

Complexidade. f(x) = O(g(x)) se existe f(x) = x0. f(x) = Ω (g(x)) se existe f(x) >= c*g(x) para x >= x0. Onde c, c1, c2 é uma constante. f(x) = θ (g(x)) se existe f(x) = c1*g(x) para x >= x0. Prova 2009/2. - PowerPoint PPT Presentation

Transcript of Complexidade

Page 1: Complexidade

Complexidade

Onde c, c1, c2 é uma constante.

f(x) = O(g(x)) se existe f(x) <= c*g(x) para x >= x0

f(x) = Ω (g(x)) se existef(x) >= c*g(x) para x >= x0

f(x) = θ (g(x)) se existef(x) <= c2*g(x)f(x) >= c1*g(x) para x >= x0

Page 2: Complexidade

Prova 2009/2Alguns passos importantes eliminar constantes aditivas e multiplicativas se 2x² >= 1000x*c para x > x0 então eu posso garantir que x² >= x*c1

Basta escolher as constantes c e c1 corretamente.

Retirar termos semelhantes em lados opostos:Se x²*log(x) >= c*x*log(x) x² >= c*x x >= 1*c para x >= x0

Por ultimo encontrar um valor para c que torne essa equação verdadeSe não houver c que satisfaça então a premissa inicial e falsa.

Page 3: Complexidade

Prova 2009.2

a) provar que 10n <= c*n*log(n).n <= c*n*log(n) 1 <= c*log(n)

Se você quer provar que isso e verdade entao escolha um c qualquer que torne isso verdade um n0

Não precisa se preocupar com a base do log suponha base 2 log 2 = 1, caso base, log (n+1) > log(n) para todo n > 2

prova por indução que é verdadeiro

Page 4: Complexidade

Para provar que log(n) = θ(log (n^1000))

log(n) <= c2*(log (n^1000))log(n) >= c1*(log (n^1000))

(log n^1000) = 1000*log(n) viro constante multiplicativa

log(n) <= c2”*log(n) verdade! (c2” = 2000)log(n) >= c1”*log(n) verdade! (c1” = 1/10000)

Provado ! Que e verdadeiro

Se quisesse poderia também eliminar os termos semelhantes

1 <= c2”1 >= c1”se existe qualquer valor de c1” e c2” que torna isso verdade então e verdadeiro!

Page 5: Complexidade

n³ = Ω (64log(n))n³ >= c*64log(n)

n³ >= c”*log(n) eliminei constantes

se eu provar isso n => log(n) será verdade que n³ >= log(n)

n => log(n) log (2^n) >= log(n) 2^n >= nTemos que provar que 2^n >= n é verdade entãoProva por indução caso base 2^0 >= 0 verdade;Indução 2^(n+1) >= n+1.2^(n+1) >= n+1 2*2^n >= n+1 2^n + 2^n >= n+1.Onde 2^n >= n (caso base da indução).E sabemos que 2^n >= 1;(propriedade de exponenciação).

Provamos que 2^n >= n então temos que n>= log(n) por transitividade temos que n^3 >= log(n).

n^3 >= c"*log(n) está provado que e verdade !

Page 6: Complexidade

Prova 2008.1a) f(n) = O (g(n)) => g(n) = O (f(n)) b) f(n) = Θ (f(n/2))

a) Provar por contradição suponha f(n) = x e g(n) = x²

f(n) = O (g(n)) verdade!g(n) = O (f(n)) falso!

Provado! Que é falso.

Page 7: Complexidade

b) f(n) = Θ (f(n/2))

Provar por contradição, Suponha f(n) = 2^n

Preciso provar que2^n <= c2*2^(n/2)2^n >= c1*2^(n/2)

2^n <= c2*2^(n/2) (2^n)/(2^(n/2) <= c2 2^(n/2) <= c2

Então eu tenho que 2^(n/2) <= c2 isso é falso

Então esta provado por contradição que é falso