Você está na página 1de 23

Complexidade Assinttica

ACH2002 - Introduo Cincia da Computao II

Delano M. Beder
Escola de Artes, Cincias e Humanidades (EACH) Universidade de So Paulo dbeder@usp.br

08/2008

Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cndida da Silva

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

1 / 23

Crescimento Assinttico de Funes


Custo da soluo aumenta com o tamanho n do problema
O tamanho n fornece uma medida da diculdade para resolver o problema
Tempo necessrio para resolver o problema aumenta quando n cresce

Exemplo: nmero de comparaes para achar o maior elemento de um vetor(array) ou para orden-lo aumenta com o tamanho da entrada n.

Escolha do algoritmo no um problema crtico quando n pequeno.


O problema quando n cresce.

Por isso, usual analisar o comportamento das funes de custo quando n bastante grande.
Delano M. Beder (EACH - USP) Complexidade Assinttica ACH2002 2 / 23

Comportamento Assinttico
Vamos comparar funes assintoticamente, ou seja, para valores grandes, desprezando constantes multiplicativas e termos de menor ordem.

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

3 / 23

Comportamente Assinttico

1 milho (106 ) de operaes por segundo


Funo de custo n n2 n3 n5 2n 3n 10 0,00001s 0,0001s 0,001s 0,1s 0,001s 0,059s 20 0,00002s 0,0004s 0,008s 3,2s 1,04s 58min 30 0,00003s 0,0009s 0,027s 24,3s 17,9min 6,5anos 40 0,00004s 0,0016s 0,064s 1,7min 12,7dias 3855sc. 50 0,00005s 0,0025s 0,125s 5,2min 35,7 anos 108 sc. 60 0,00006s 0,0036s 0,216s 12,96min 366 sc. 1013 sc.

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

4 / 23

Comportamente Assinttico

Inuncia do aumento de velocidade dos computadores no tamanho x do problema


Funo de custo n n2 n3 2n Computador Atual (C) x x x x Computador 100C 100x 10x 4, 6x x + 6, 6 Computador 1000C 1000x 31.6x 10x x + 10

(Tabela 1.4 Pgina 18) Nvio Ziviani. Projeto de Algoritmos com implementaes em C e Pascal. Editora Thomson, 2a. Edio, 2004.

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

5 / 23

Comportamento Assinttico

Se f (n) a funo de complexidade de um algoritmo A


O comportamento assinttico de f (n) representa o limite do comportamento do custo (complexidade) de A quando n cresce.

A anlise de um algoritmo (funo de complexidade)


Geralmente considera apenas algumas operaes elementares ou mesmo uma operao elementar (e.g., o nmero de comparaes).

A complexidade assinttica relata crescimento assinttico das operaes elementares.

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

6 / 23

Relacionamento assinttico
Denio Uma funo g (n) domina assintoticamente outra funo f (n) se existem duas constantes positivas c e m tais que, para n m, tem-se |f (n)| c |g (n)|.

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

7 / 23

Relacionamento assinttico

Exemplo: g (n) = n e f (n) = n2 |n| |n2 | para todo n N. Para c = 1 e m = 0 |g (n)| |f (n)|. Portanto, f (n) domina assintoticamente g (n).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

8 / 23

Notao O

Knuth criou a notao O (O grande) para expressar que g (n) domina assintoticamente f (n), escreve-se f (n) = O (g (n)) e l-se: "f (n) da ordem no mximo g (n)". Para que serve isto para o bacharel em Sistemas de Informao?
Muitas vezes calcular a funo de complexidade g (n) de um algoritmo A complicado. mais fcil determinar que f (n) O (g (n)), isto , que assintoticamente f (n) cresce no mximo como g (n).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

9 / 23

Notao O
Denio O(g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 f (n) cg (n), para todo n n0 }. Informalmente, dizemos que, se f (n) O (g (n)), ento f (n) cresce no mximo to rapidamente quanto g (n).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

10 / 23

Notao O
Denio O(g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 f (n) cg (n), para todo n n0 }. Informalmente, dizemos que, se f (n) O (g (n)), ento f (n) cresce no mximo to rapidamente quanto g (n). Exemplo:
3 2 2n

2n O (n2 )

Valores de c e n0 que satisfazem a denio so c=


3 2

e n0 = 2

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

11 / 23

Notao
Denio (g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 cg (n) f (n), para todo n n0 }. Informalmente, dizemos que, se f (n) (g (n)), ento f (n) cresce no mnimo to lentamente quanto g (n).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

12 / 23

Notao
Denio (g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 cg (n) f (n), para todo n n0 }. Informalmente, dizemos que, se f (n) (g (n)), ento f (n) cresce no mnimo to lentamente quanto g (n). Exemplo:
3 2 2n

2n (n2 )

Valores de c e n0 que satisfazem a denio so c=


1 2

e n0 = 2

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

13 / 23

Notao
Denio (g (n)) = { f (n): existem constantes positivas c1 , c2 e n0 tais que 0 c1 g (n) f (n) c2 g (n), para todo n n0 }. Informalmente, dizemos que, se f (n) (g (n)), ento f (n) cresce to rapidamente quanto g (n).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

14 / 23

Notao
Denio (g (n)) = { f (n): existem constantes positivas c1 , c2 e n0 tais que 0 c1 g (n) f (n) c2 g (n), para todo n n0 }. Informalmente, dizemos que, se f (n) (g (n)), ento f (n) cresce to rapidamente quanto g (n). Exemplo:
3 2 2n

2n (n2 )

Valores de c1 , c2 e n0 que satisfazem a denio so c1 = 1 2 , c2 =


3 2

e n0 = 2

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

15 / 23

Notao o
Denio o(g (n)) = { f (n): para toda constante positiva c, existe uma constante n0 > 0 tal que 0 f (n) < cg (n), para todo n n0 }. Informalmente, dizemos que, se f (n) o(g (n)), ento f (n) cresce mais lentamente que g (n). Exemplo: 1000n2 o(n3 ) Para todo valor de c, um n0 que satisfaz a denio : no =
1000 c

+1

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

16 / 23

Notao
Denio (g (n)) = { f (n): para toda constante positiva c, existe uma constante n0 > 0 tal que 0 cg (n) < f (n), para todo n n0 }. Informalmente, dizemos que, se f (n) (g (n)), ento f (n) cresce mais rapidamente que g (n). Exemplo:
1 2 1000 n

(n)

Para todo valor de c, um n0 que satisfaz a denio : no = 1000c + 1

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

17 / 23

Denies equivalentes

f (n) o(g (n)) se lim f (n) O (g (n)) f (n) (g (n)) f (n) (g (n)) f (n) (g (n))

f (n) =0 n g (n) f (n ) se lim < n g (n) f (n) se 0 < lim < n g (n) f (n) se lim >0 n g (n) f (n) se lim = n g (n)

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

18 / 23

Propriedades das Classes


Reexividade: f (n) O (f (n)). f (n) (f (n)). f (n) (f (n)). Simetria: f (n) (g (n)) se, e somente se, g (n) (f (n)). Simetria Transposta: f (n) O (g (n)) se, e somente se, g (n) (f (n)). f (n) o(g (n)) se, e somente se, g (n) (f (n)).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

19 / 23

Propriedades das Classes

Transitividade: Se f (n) O (g (n)) e g (n) O (h(n)), ento f (n) O (h(n)). Se f (n) (g (n)) e g (n) (h(n)), ento f (n) (h(n)). Se f (n) (g (n)) e g (n) (h(n)), ento f (n) (h(n)). Se f (n) o(g (n)) e g (n) o(h(n)), ento f (n) o(h(n)). Se f (n) (g (n)) e g (n) (h(n)), ento f (n) (h(n)).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

20 / 23

Operaes com a notao O

f (n) c f (n) O (f (n)) + O (f (n)) O (O (f (n))) O (f (n)) + O (g (n)) O (f (n))O (g (n)) f (n)O (g (n))

= = = = = = =

O (f (n)) O (f (n)), c uma constante O (f (n)) O (f (n)) O (max (f (n), g (n))) O (f (n)g (n))) O (f (n)g (n)))

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

21 / 23

Exerccios

Quais as relaes de comparao assinttica (O , , ) das funes: f1 (n) = 2 f2 (n) = 2n f3 (n) = n log n f4 (n) = log n f5 (n) = 100n2 + 150000n f6 (n) = n + log n f7 ( n ) = n 2 f8 ( n ) = n
f1 f2 f3 f4 f5 f6 f7 f8 f1 f2 f3 f4 f5 f6 f7 f8

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

22 / 23

Referncias

[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein. Algoritmos - Traduo da 2a. Edio Americana. Editora Campus, 2002 (Captulo 3).

[2] Michael T. Goodrich & Roberto Tamassia. Estruturas de Dados e Algoritmos em Java. Editora Bookman, 4a. Ed. 2007 (Captulo 4).

[3] Nvio Ziviani. Projeto de Algoritmos com implementaes em C e Pascal. Editora Thomson, 2a. Edio, 2004 (Seo 1.3).

Delano M. Beder (EACH - USP)

Complexidade Assinttica

ACH2002

23 / 23