1 / 7

Complexidade

Complexidade. 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. Onde c, c1, c2 é uma constante. f(x) = θ (g(x)) se existe f(x) <= c2*g(x) f(x) >= c1*g(x) para x >= x0. Prova 2009/2.

jaxon
Download Presentation

Complexidade

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Complexidade 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 Onde c, c1, c2 é uma constante. f(x) = θ (g(x)) se existe f(x) <= c2*g(x) f(x) >= c1*g(x) para x >= x0

  2. Prova 2009/2 Alguns 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 verdade Se não houver c que satisfaça então a premissa inicial e falsa.

  3. Prova 2009.2 • 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 > 2prova por indução que é verdadeiro

  4. 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!

  5. 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 >= n Temos que provar que 2^n >= n é verdade então Prova 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 !

  6. Prova 2008.1 • a) f(n) = O (g(n)) => g(n) = O (f(n)) • f(n) = Θ (f(n/2)) • 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.

  7. f(n) = Θ (f(n/2)) • Provar por contradição, Suponha f(n) = 2^n • Preciso provar que • 2^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 é falsoEntão esta provado por contradição que é falso

More Related