Notação O Aula 02 Notação Assintótica Notação O, Ω, Θe Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intuitivamente... O() funções que não crescem mais rápido que funções menores ou iguais a um múltiplo de n 2 (3/2)n 2 9999n 2 n 2 /1000 etc. crescem todas com a mesma velocidade, são todas O(n 2 ). n 2 + 99n é O(n 2 ) 33n 2 é O(n 2 ) 9n + 2 é O(n 2 ) 0,00001n 3 200n 2 não é O(n 2 ) Aula 02 Notação Assintótica p. 1 Aula 02 Notação Assintótica p. 3 Notação O Sejam T(n) e funções dos inteiros nos reais. Dizemos que T(n) é O() se existem constantes positivas c e n 0 tq T(n) c para todo n n 0. i.e. para n grande, T(n) não cresce mais rápido que T(n) Usodanotação O Notação O: Usada para análise de pior caso de algoritmos, Também chamado limite superior. T(n) é O() deve ser entendido como T(n) O(). T(n) = O() deve ser entendido como T(n) O(). T(n) é g(n) + O() significa que existem constantes positivas c e n 0 tais que T(n) g(n) + c para todo n n 0. n 0 Aula 02 Notação Assintótica p. 2 Aula 02 Notação Assintótica p. 4
Notação Ω Dizemos que T(n) é Ω() se existem constantes positivas c e n 0 t.q. para todo n n 0. T(n) c T(n) n 0 Usada para análise de melhor caso ou estabelecer complexidade de problemas. Propriedades Transitiva f = Θ(g) e g = Θ(h) f = Θ(h) f = O(g) e g = O(h) f = O(h) f = Ω(g) e g = Ω(h) f = Ω(h) Reflexiva f = Θ(f) f = (f) f = Ω(g) Simetria f = Θ(g) g = Θ(f) f = O(g) g = Ω(f) Aula 02 Notação Assintótica p. 5 Aula 02 Notação Assintótica p. 7 Notação Θ Ordem de Crescimento Dizemos que T(n) é Θ() se O(g(n)) e Ω(g(n)) n 0 T(n) lg n n n 2 n 5 2 n 1 2 4 32 4 2 4 16 1024 16 3 8 64 32768 256 4 16 256 1048576 65536 5 32 1024 33554432 4.2E9 6 64 4096 1.0E9 1.8E19 7 128 16384 3.4E10 3.4E38 8 256 65536 1.1E12 1.6E77 9 512 262144 3.5E13 1.3E154 10 1024 1048576 1.1E15 ### Limite assintótico justo! Onde está n lg n? Aula 02 Notação Assintótica p. 6 Aula 02 Notação Assintótica p. 8
Ordem de Crescimento Tempo de tamanho máximo do problema (n) Execução 1 segundo 1 minuto 1 hora 400n 2500 150000 9000000 20n log n 4096 166666 7826087 2n 2 707 5477 42426 n 4 31 88 44 2 n 19 25 31 Notações Assintóticas Duas outras notações assintóticas Notação o - oh pequeno - T(n) = o() Limite superior não justo Para todo c, há n o t.q. T(n) c, para n n 0 2n = o(n 2 ), mas 2n 2 o(n 2 ) Notação ω - T(n) = ω() Limite inferior não justo Para todo c, há n o t.q. T(n) c, para n n 0 n 2 /2 = ω(n), mas n 2 /2 o(n 2 ) Aula 02 Notação Assintótica p. 9 Aula 02 Notação Assintótica p. 11 Classificação de funções Θ define uma relação de equivalência Θ(f) é uma classe de equivalência - Classe de complexidade O(1) conjunto de funções limitadas por uma constante (Independe do tamanho da entrada n) Θ(n) Linear Θ(n 2 ) Quadrática log n O(n α ), para qualquer α > 0 n k O(c n ), para qualquer 0 < c 1 Notação assintótica e limite Podemos usar limites para a taxa de crecimento assintótico lim n g(n) lim n g(n) lim n g(n) = c = Θ(g(n)) = 0 = O(g(n)) = = Ω(g(n)) Aula 02 Notação Assintótica p. 10 Aula 02 Notação Assintótica p. 12
Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Considere a funções = n e g(n) = n 1+sinn é O(g(n))? é Ω(g(n))? Aula 02 Notação Assintótica p. 13 Aula 02 Notação Assintótica p. 13 Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Considere a funções = n e g(n) = n 1+sinn é O(g(n))? Considere a função T(n) é O(n 2 )? T(n) é Ω(n 2 )? T(n) é Θ(n 2 )? T(n) é Θ(n)? T(n) = { n n 2 se n é impar, se n é par Aula 02 Notação Assintótica p. 13 Aula 02 Notação Assintótica p. 14
Logaritmos lg n = log 2 n ln n = log e n log b, b > 1 é estritamente crescente log b 1 = 0 log b b = 1 log b n a = a log b n log b (nm) = log b n + log b m n log m = m log n log c n = log b n log b c Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n Aula 02 Notação Assintótica p. 15 Aula 02 Notação Assintótica p. 16 Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n i) log a n c log b n log a n c log a n log a b log a n c log a n log a b = log c a b log a n Tomando c = log a b temos o resultado desejado. Aula 02 Notação Assintótica p. 16 Aula 02 Notação Assintótica p. 16
Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). Resp. Encontrar c 1, c 2 e n 0 tq c 1 n 2 1 2 n2 3n c 2 n 2, n n o i) log a n c log b n log a n c log a n log a b log a n c log a n log a b = log c a b log a n Tomando c = log a b temos o resultado desejado. ii) Análogo ao anterior. Aula 02 Notação Assintótica p. 16 Aula 02 Notação Assintótica p. 17 a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). Resp. Encontrar c 1, c 2 e n 0 tq c 1 n 2 1 2 n2 3n c 2 n 2, n n o c 1 1 2 3 n c 2 c 1 = 1 14, c 2 = 1 2,n 0 = 7 Aula 02 Notação Assintótica p. 17 Aula 02 Notação Assintótica p. 17
b) Mostrar que 6n 3 Θ(n 2 ). b) Mostrar que 6n 3 Θ(n 2 ). Por contradição, supor que c 1,c 2,n 0 > 0 tq c 1 n 2 6n 3 c 2 n 2 c 1 6n c 2 Absurdo, pois c 2 6n não vale para n arbitrariamente grande! Aula 02 Notação Assintótica p. 18 Aula 02 Notação Assintótica p. 18 b) Mostrar que 6n 3 Θ(n 2 ). Por contradição, supor que c 1,c 2,n 0 > 0 tq c 1 n 2 6n 3 c 2 n 2 no(n) = O(n 2 ) no(n) = O(n 2 ) significa no(n) O(n 2 ). Ou seja, se T(n) é O(n), então nt(n) é O(n 2 ). De fato, se T(n) é O(n) então existem constantes, digamos 10 e 10 100, tais que T(n) 10n para todo n 10 100. Desta forma, nt(n) n 10 n 10 n 2 para todo n 10 100. Logo nt(n) é O(n 2 ). Aula 02 Notação Assintótica p. 18 Aula 02 Notação Assintótica p. 19
no(n) = O(n 2 ) no(n) = O(n 2 ) significa no(n) O(n 2 ). Ou seja, se T(n) é O(n), então nt(n) é O(n 2 ). Propriedade Transitiva Se T(n) = O() e = O(g(n)) então T(n) = O(g(n)). De fato, se T(n) é O(n) então existem constantes positivas c e n 0, tais que T(n) cn para todo n n 0. Desta forma, nt(n) ncn c n 2 para todo n n 0. Logo nt(n) é O(n 2 ). Aula 02 Notação Assintótica p. 20 Aula 02 Notação Assintótica p. 22 Resumo da análise Etapa para analisar um algoritmo (nesta ordem!) Correção Analise o pior caso Enfoque o termo principal do tempo de execução Melhore a ordem de magnitude Reduza os fatotes constantes Propriedade Transitiva Se T(n) = O() e = O(g(n)) então T(n) = O(g(n)). Rascunho da prova: Suponha, por exemplo, que 0 T(n) 11 para todo n 3 0 10g(n) para todo n 5. Defina c := 11 10 = 110 e n 0 := 5. Para todo n n 0, temos T(n) 0 e T(n) 11 11(10g(n)) = 110g(n). Exemplo: Se f = O(3n 2 + 4n) então f = O(n 2 ), pois 3n 2 + 4n = O(n 2 ). Faça caso geral! Aula 02 Notação Assintótica p. 21 Aula 02 Notação Assintótica p. 22
Regra da Soma Se T(n) = O() então T(n) + = O(). Prova: Exercícios Prove que O(1) = O(2) Aula 02 Notação Assintótica p. 23 Aula 02 Notação Assintótica p. 24 Regra da Soma Se T(n) = O() então T(n) + = O(). Prova: Existem c 1 e n 0 tq 0 T(n) c para todo n n 0. Então Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 0 T(n) + c + c + c = 2c para todo n n 0. Exemplo: Se T(n) = O(n) então T(n) + 3n 2 = O(3n 2 ). Aula 02 Notação Assintótica p. 23 Aula 02 Notação Assintótica p. 24
Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Mostre que lg n = O(n) Mostre que 3 lg n + lg lg n = O(lg n) Aula 02 Notação Assintótica p. 24 Aula 02 Notação Assintótica p. 24 Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Mostre que lg n = O(n) Aula 02 Notação Assintótica p. 24