Professional Documents
Culture Documents
http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html
crescem todas com a mesma velocidade e portanto so todas "equivalentes". Esse tipo de matemtica, interessado somente em valores enormes de n, chamado assinttico. Nessa matemtica, as funes so classificadas em "ordens" (como as ordens religiosas da Idade Mdia); todas as funes de uma mesma ordem so "equivalentes". As cinco funes acima, por exemplo, pertencem mesma ordem. Veja o verbete Big O notation na Wikipedia.
Ordem O
Convm restringir a ateno a funes assintoticamente no-negativas, ou seja, funes f tais que f(n) 0 para todo n suficientemente grande. Mais explicitamente: f assintoticamente no-negativa se existe N tal que f(n) 0 para todo n maior que N. Agora podemos definir a ordem O. [Isto uma letra O maiscula. Segundo Knuth, trata-se do micron grego maisculo.] DEFINIO: Dadas funes assintoticamente no-negativas f e g, dizemos que f est na ordem O de g e escrevemos f = O(g) se f(n) c g(n) para algum c positivo e para todo n suficientemente grande. Em outras palavras, existe um nmero positivo c e um nmero N tais que f(n) cg(n) para todo n maior que N. EXEMPLO: Se f(n) 9999 g(n) para todo n 1000 ento f = O(g). (Cuidado: a recproca no verdadeira!) EXEMPLO: Suponha que f(n) = 2n2 + 3n + 4 e que g(n) = n2. Observe que
2n2 + 3n + 4
desde que n 1. Resumindo, f(n) 9g(n) para todo n 1. Portanto, f(n) = O(g(n)). EXEMPLO: Suponha que f(n) = 3 + 2/n e que g(n) = n0, ou seja, g(n) = 1. Ento
3 + 2/n
3 + 1 = 4 = 4n0
desde que n 2. Resumindo, f(n) 4g(n) para todo n 2. Portanto, f(n) = O(g(n)). EXEMPLO: Suponha que f(n) = n3 e que g(n) = 200n2. No verdade que f(n) = O(g(n)). De fato, se existissem c e N tais que f(n) cg(n), teramos
1 de 4
06/07/2009 16:28
http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html
200c
Exerccios
1. Quais das conjecturas abaixo so verdadeiras? Justifique.
10n
= O(n)
10n2 =
O(n)
10n55 =
O(2n )
2. verdade que n2 + 200n + 300 = O(n2 ) ? Justifique. 3. verdade que n2 200n 300 = O(n) ? Justifique. 4. Quais das conjecturas abaixo so verdadeiras? Justifique.
(3/2)n2 + (7/2)n 4
= O(n)
(3/2)n2 + (7/2)n 4
= O(n2 )
5. verdade que n3999999n21000000 = O(n2 ) ? Justifique. 6. Quais das conjecturas abaixo so verdadeiras? Justifique.
log2n
= O(log3n)
log3n
= O(log2n)
Ordem Omega
A expresso "f = O(g)" tem o mesmo sabor que "f g". Agora precisamos de um conceito que tenha o sabor de "f g". DEFINIO: Dadas funes assintoticamente no-negativas f e g, dizemos que f est na ordem Omega de g e escrevemos f = (g) se f(n) c g(n) para algum c positivo e para todo n suficientemente grande. Em outras palavras, existe um nmero positivo c e um nmero N tais que f(n) c g(n) para todo n maior que N. EXEMPLO: Se f(n) g(n)/100000 para todo n 888 ento f = no verdadeira!) Qual a relao entre O e
(g).
(Cuidado: a recproca
(f).
Ordem Theta
Alm dos conceitos que tm o sabor de "f g" e de "f g", precisamos de um que tenha o sabor de "f = g". DEFINIO: Dizemos que f e g esto na mesma ordem Theta e escrevemos f = (g) se f = O(g) e f = (g). Trocando em midos, f = (g) significa que existe nmeros positivos c e d tais que cg(n) f(n) dg(n) para todo n suficientemente grande. EXEMPLO: As funes abaixo pertencem todas ordem (n2):
2 de 4
06/07/2009 16:28
http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html
n2
Exerccio
Quais das conjecturas abaixo so verdadeiras? Justifique. a. b. c. d. e.
(3/2)n2 + (7/2)n 4 = (n2) 9999 n2 = (n2) n2/1000 999n = (n2) log2n + 1 = (log10n) piso(lg(n)) = (lg(n))
Veja aula em video sobre notao assinttica no AcademicEarth URL of this page: http://www.ime.usp.br/~pf/analise_de_algoritmos/ Last modified: Mon Jul 6 14:23:10 BRT 2009 Paulo Feofiloff DCC-IME-USP
3 de 4
06/07/2009 16:28
http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html
4 de 4
06/07/2009 16:28