Professional Documents
Culture Documents
www.icmc.usp.br/~moacir
Instituto de Cincias Matemticas e de Computao USP
2010/2
2010/2
1 / 38
Sumrio
Anlise Assinttica de Algoritmos Crescimento de funes Notao assinttica O Notao assinttica Notao assinttica Notaes o e Regras
2 3
Funes
2010/2
2 / 38
Foi provado que qualquer posio do Cubo Mgico pode ser resolvida com 20 movimentos.
http://www.reddit.com/tb/cz0ll
2010/2
3 / 38
Crescimento de funes
um algoritmo assintoticamente mais eciente a melhor escolha para todas as entradas, exceto as de tamanho pequeno. permite analisar a complexidade de um algoritmo independente do sistema computacional utilizado
2010/2
4 / 38
Sumrio
Anlise Assinttica de Algoritmos Crescimento de funes Notao assinttica O Notao assinttica Notao assinttica Notaes o e Regras
2 3
Funes
2010/2
5 / 38
Notao assinttica:
O (big oh)
O g n
tais que
uma funo f (n ) pertence ao conjunto O (g (n )) se existe uma constante positiva c de forma que ela possa estar limitada por c para um valor de n sucienemente grande podemos dizer que f (n )
f
g (n)
O (g (n)),
(n) = O (g (n))
2010/2
6 / 38
Notao assinttica:
O (big oh)
Para todos os valores de n direita de n0 , o valor de f (n ) reside em
c
g (n )
ou abaixo desse.
Formalmente, a funo g (n ) um
(n )
2
Exemplo: 2n
= O (n3 )
2
2 2n
Fonte da gura: CORMEN et al.(2002)
como sendo 2n
3 O (n )
O (n 3 )
ou
a taxa de crescimento de 2n
menor ou igual
03Anlise de Algoritmos (p3)
3 taxa de n
2010/2
7 / 38
Notao assinttica:
Exemplo 1: 2n
+ 10
n + 10 c n c n 2n 10 (c 2)n 10 n c102
2
c e n0 :
c = 3 e n0 = 10.
Exemplo 2: n
O n
( )
c que seja sempre maior ou igual a n para todo n0 : n2 c n n c impossvel pois c deve ser constante.
preciso encontrar valor de um
2010/2
8 / 38
Notao assinttica:
Exemplo 3: 3n
+ 20n2 + 5
3)
preciso encontrar
Exemplo 4: 3 log n
+5
O (log n )
n n0
Exemplo 5: 2
preciso
n +2
n+2
(2n )
note que 2
c = 4 e qualquer n0
2010/2 9 / 38
um conjunto em uma frmula representa uma funo annima naquele conjunto. Exemplo 6:
f
= n 3 + h (n ).
2 forma que n
O (n2 )
de
+ f (n) = h(n).
2010/2
10 / 38
Sumrio
Anlise Assinttica de Algoritmos Crescimento de funes Notao assinttica O Notao assinttica Notao assinttica Notaes o e Regras
2 3
Funes
2010/2
11 / 38
Notao assinttica:
(omega)
Na maiora dos casos estamos interessados no limite superior, pois queremos saber no pior caso, qual a complexidade de tempo Em alguns casos tambm podemos analisar o limite assinttico inferior para expressar algo que esteja pelo menos em um dado comportamento. Para uma dada funo g (n ),
(g (n))
(g (n))
se existem uma
g (n )
para
2010/2
12 / 38
Notao assinttica:
(omega)
g (n )
2
ou acima
+ n = (n)
2
+ n (n),
+n
maior ou igual
taxa de n
Fonte da gura: CORMEN et al.(2002)
2010/2
13 / 38
= (lg(n))
para c
c lg(n)
>0
podemos ler: raiz de n , pelo menos, omega de lg(n ) para um n sucientemente grande (n
2 Exemplo 2: 3n 3n2 +n n
3n
n
n0 ).
+ n = (n)
cnn
c 3 =1
temos de pegar c
para n0
=3
2010/2
14 / 38
Notao assinttica:
(theta)
(g (n))
o conjunto de
que
(g (n))
se existem constantes
( )
2010/2
15 / 38
Notao assinttica:
(theta)
Para todos os valores de n direita de n0 , o valor de f (n ) reside em c1 g (n ) ou acima dele e em c2 g (n ) ou abaixo desse. para todo n
n0 , f (n) = g (n)
( )
um
(n)
2010/2
16 / 38
Notao assinttica:
(theta)
Foi dito que poderamos descartar os termos de mais baixa ordem e coecientes do termo de mais alta ordem. para mostrar formalmente que, por exemplo,
1 2 2n
3n = (n2 ):
c1 n
1 2 2
n
3n c2 n2 ,
2
para todo n
n0 .
Dividindo por n : 1 2 3
n
c1
c2 , 1
a desigualdade do lado direito pode ser considerada vlida para n escolhendo c2 para n
1/2,
n
escolhendo c1
1/14. = 1/14,
temos:
para c2
= 1/2,
=7
e c1
1 2 2n
3n = (n2 )
2010/2 17 / 38
Notao assinttica:
(theta)
3
= (n2 ):
c2 n2
para n
n0 .
2 e manipular a desigualdade),
c2 /6
no
2010/2
18 / 38
f (n) = 1000n g (n ) = n 2
= 1.000 f (n )
f g
maior do que g para valores pequenos de n cresce mais rapidamente, e nalmente resultar em maiores valores,
= 1.000
n
e c
= 1:
e c
= 100.
2010/2 19 / 38
Analogias
O
Teorema (1)
para duas funes g n f f
( )
e
e f
se e somente se:
Utilidade
utilizamos o teorema para demonstrar
limites assintoticamente
2010/2 20 / 38
Sumrio
Anlise Assinttica de Algoritmos Crescimento de funes Notao assinttica O Notao assinttica Notao assinttica Notaes o e Regras
2 3
Funes
2010/2
21 / 38
Notaes
o e :
notaes estritas
respectivamente. No
entanto, a desigualdade deve valer para qualquer constante c : Para uma funo g (n ), denotamos o (g (n )) o conjunto de funes :
o g n
( ( )) = {f (n) : para qualquer c > 0 e n0 > 0 tais 0 f (n ) < c g (n ) para todo n n0 } (g (n))
o conjunto de funes :
que
(g (n)) = {f (n) : para qualquer c > 0 e n0 > 0 tais 0 c g (n ) < f (n ) para todo n n0 }
f
que
(n) (g (n))
se e somente se g (n )
o (f (n))
f (n) lim n g (n)
(g (n)),
, e
para o (g (n ))
=0
2010/2 22 / 38
Notaes
oe
2
o n
Exemplo 1 : 2n
2n 2n2 n2 2
< c n3
3 < cnn 2
n2 sempre menor que n3 para um n sucientemente grande, preciso apenas determinar n0 em funo de c
( 3)
<c n <c 2
e c
2 n
=2
3 no
o n
( 3)
3 para um
Exemplo 3:
1 2 no 2
1 2 2n
o (n
(n2 ),
n sucientemente grande. n
mas
n3 sempre menor
2 ), e 1 2 no 2
(n2 )
2010/2 23 / 38
Sumrio
Anlise Assinttica de Algoritmos Crescimento de funes Notao assinttica O Notao assinttica Notao assinttica Notaes o e Regras
2 3
Funes
2010/2
24 / 38
Notao assinttica
Algumas regras
Se T1 (n )
logk n
= O (n )
lentamente
2010/2
25 / 38
Notao assinttica
( ) = (x n ).
Relembrando
um polinmio de grau n uma funo na forma:
f
(x ) = an x n + an1 x n1 + + a0 x + a0
a0 = 0)
2010/2
26 / 38
Logartmica:
logb n
tpica de algoritmos que resolvem um problema transformando-o em problemas menores. para dobrar log2 preciso fazer log2 . a base tambm muda pouco os valores: log2
n2
n = 1.000.000.
Linear:
n 20 e log10 n 6 para
em geral, uma certa quantidade de operaes realizada sobre cada um dos elementos de entrada. melhor situao para quando preciso processar entrada e obter
n elementos de sada.
n elementos de
2010/2
27 / 38
n logb n
tpico de algoritmos que resolvem um problema transformando-o em problemas menores, resolvem cada um de forma independente e depois ajunta as solues. para dobrar
Quadrtica:
n2
ocorre frequentemente quando os dados so processados aos pares, com laos de repetio aninhados. sempre que pequeno.
Cbica:
n3
ocorre em multiplicaes de matrizes, com trs estruturas de repetio aninhadas. sempre que
podem ser teis para resolver problemas de tamanho relativamente pequeno (ou quando no se tem outra opo!).
an
geralmente ocorre quando se usa uma soluo de fora bruta. n para o caso 2 , sempre que dobra, o tempo de execuo elevado ao
Fatorial:
n!
muitas vezes dito ter complexidade exponencial, apesar de o fatorial ter comportamento muito pior. geralmente ocorre quando se usa uma soluo de fora bruta.
2010/2
29 / 38
2010/2
30 / 38
Exerccio
Um algoritmo tradicional e muito utilizado possui complexidade n enquanto um algoritmo novo proposto da ordem de n log n : 1,5
1,5 ,
(n0,5 )2 = n
g n
Como n cresce mais rapidamente do que qualquer potncia de log, o algoritmo novo mais eciente.
2010/2
31 / 38
d)
2010/2
32 / 38
Exemplo:
n2
vs.
10
5 2
n + 108 n
vs.
10
2 2
n + 105
2010/2 33 / 38
Fonte da gura: notas de aula do Prof. Ricardo Campello Moacir Ponti Jr. (ICMCUSP) 03Anlise de Algoritmos (p3)
2010/2
34 / 38
Repeties:
O (n )
Repeties aninhadas:
o exemplo abaixo
o tempo total o tempo de execuo dos comandos multiplicado pelo produto do tamanho de todas as repeties.
O (n 2 )
Condies:
seno
O (n )
Chamadas subrotinas:
a subrotina deve ser analisada primeiro e depois ter suas unidades de tempo incorporadas ao programa que a chamou
2010/2
36 / 38
Exerccio
Quantas unidades de tempo so necessrias para rodar o algoritmo abaixo? Qual a ordem de complexidade de tempo?
01 inicio 02 i, j: inteiro 03 A: vetor inteiro de n posicoes 04 i = 1 05 06 enquanto (i < n) faca 07 A[i] = 0 08 i = i + 1 09 10 para i = 1 ate n faca 11 para j = 1 ate n faca 12 A[i] = A[i] + (i*j) 13 fim
Moacir Ponti Jr. (ICMCUSP) 03Anlise de Algoritmos (p3) 2010/2 37 / 38
Bibliograa
CORMEN, T.H. et al. Algoritmos: Teoria e Prtica (Caps. 13). Campus. 2002. ZIVIANI, N. Projeto de algoritmos: com implementaes em Pascal e C (Cap. 1). 2.ed. Thomson, 2004. FEOFILOFF, P. Minicurso de Anlise de Algoritmos, 2010. Disponvel em:
http://www.ime.usp.br/~pf/livrinho-AA/.
DOWNEY, A.B. Analysis of algorithms (Cap. 2), Em: Computational Modeling and Complexity Science. Disponvel em:
http://www.greenteapress.com/compmod/html/book003.html
ROSA, J.L. Notas de Aula de Introduo a Cincia de Computao II. Universidade de So Paulo. Disponvel em:
http://coteia.icmc.usp.br/mostra.php?ident=639
CAMPELLO, R. Notas de Aula de Introduo a Cincia de
Computao II. Universidade de So Paulo. Disponvel em:
http://coteia.icmc.usp.br/mostra.php?ident=611
Moacir Ponti Jr. (ICMCUSP) 03Anlise de Algoritmos (p3) 2010/2 38 / 38