Você está na página 1de 4

ALGORITMOS: Analise assintotica: O, Omega e Theta

http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html

Anlise de Algoritmos | Livros | WWW | Dicionrio | ndice

Anlise assinttica: O, Omega e Theta


Ao ver uma expresso como n+10 ou n2+1, a maioria das pessoas pensa automaticamente em valores pequenos de n, valores prximos de zero. A anlise de algoritmos faz exatamente o contrrio: ignora os valores pequenos e concentra-se nos valores enormes de n. Para valores enormes de n, as funes
n2 , (3/2)n2

, 9999n2 , n2/1000 , n2+100n , etc.

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

2n2 + 3n2 + 4n2 = 9n2

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

ALGORITMOS: Analise assintotica: O, Omega e Theta

http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html

200c

para todo n N. Mas isso absurdo!

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)

7. verdade que teto(lg(n)) = O(lg(n)) ? Justifique.

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).

? No difcil verificar que f = O(g) se e somente se g =

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

ALGORITMOS: Analise assintotica: O, Omega e Theta

http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html

n2

, (3/2)n2 , 9999n2 , n2/1000 , n2+100n .

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))

O domnio das funes


A discusso acima supe, implicitamente, que todas as funes esto definidas no conjunto dos inteiros no negativos (0, 1, 2, 3, 4, ). Mas tudo continua funcionando se as funes estiverem definidas em algum outro domnio. Eis alguns exemplos de domnios: inteiros maiores que 99, potncias de 2 (ou seja, 20, 21, 22, etc.), potncias de 3/2, nmeros racionais maiores que 1/2. A mesma notao O usada para todos os domnios. Por exemplo, se f uma funo assintoticamente no-negativa definida nas potncias de 2, dizer que f(n) = O(n2) o mesmo que dizer que existe um nmero positivo c tal que f(n) cn2 para todo n da forma 2k com k suficientemente grande. As mesmas observaes se aplicam notao e notao .

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

ALGORITMOS: Analise assintotica: O, Omega e Theta

http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/Oh.html

4 de 4

06/07/2009 16:28