Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Complexidade Assinttica
ACH2002
1 / 23
Exemplo: nmero de comparaes para achar o maior elemento de um vetor(array) ou para orden-lo aumenta com o tamanho da entrada n.
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.
Complexidade Assinttica
ACH2002
3 / 23
Comportamente Assinttico
Complexidade Assinttica
ACH2002
4 / 23
Comportamente Assinttico
(Tabela 1.4 Pgina 18) Nvio Ziviani. Projeto de Algoritmos com implementaes em C e Pascal. Editora Thomson, 2a. Edio, 2004.
Complexidade Assinttica
ACH2002
5 / 23
Comportamento Assinttico
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)|.
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).
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).
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).
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 )
e n0 = 2
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).
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 )
e n0 = 2
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).
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 )
e n0 = 2
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
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)
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)
Complexidade Assinttica
ACH2002
18 / 23
Complexidade Assinttica
ACH2002
19 / 23
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)).
Complexidade Assinttica
ACH2002
20 / 23
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)))
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
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).
Complexidade Assinttica
ACH2002
23 / 23