Escolar Documentos
Profissional Documentos
Cultura Documentos
ICC2 03.AnalisedeAlgoritmos Parte3 PDF
ICC2 03.AnalisedeAlgoritmos Parte3 PDF
www.icmc.usp.br/~moacir
Instituto de Cincias Matemticas e de Computao USP
2010/2
2010/2
1 / 38
Sumrio
Regras
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
caracteriza a
2010/2
4 / 38
Sumrio
Regras
Funes
2010/2
5 / 38
Notao assinttica:
O (big oh)
O g n
tais que
g (n)
(n) = O (g (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 )
Exemplo: 2n
= O (n3 )
2
2n
Fonte da gura: CORMEN et al.(2002)
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
O (n )
n + 10 c n
c n 2n 10
(c 2)n 10
n c102
c e n0 :
Exemplo 2: n
c = 3 e n0 = 10.
( )
O n
valor de um
2010/2
8 / 38
Notao assinttica:
Exemplo 3: 3n
+ 20n2 + 5
preciso encontrar
O (n
3)
n n0
n3 + 20n2 + 5 (3 + 20 + 5) n3 , podemos tomar c = 28 e
qualquer n0 > 1
para
como 3
+5
Exemplo 4: 3 log n
preciso encontrar
todo
n n0
O (log n )
Exemplo 5: 2
preciso
n +2
(2n )
note que 2
n+2
= 22 2n = 4 2n
c = 4 e qualquer n0
2010/2
9 / 38
(n) = n3 + O (n2 )
O (n2 )
de forma que f (n )
= n 3 + h (n ).
Exemplo 7:
n
+ O (n) = O (n2 )
2
forma que n
O (n)
existe h (n )
O (n2 )
de
+ f (n) = h(n).
2010/2
10 / 38
Sumrio
Regras
Funes
2010/2
11 / 38
Notao assinttica:
(omega)
(g (n))
o conjunto de funes :
(g (n))
tais que
se existem uma
g (n )
para
2010/2
12 / 38
Notao assinttica:
(omega)
g (n )
ou acima
desse.
Exemplo: 3n
+ n = (n)
+ n (n),
+n
maior ou igual
taxa de n
Fonte da gura: CORMEN et al.(2002)
2010/2
13 / 38
= (lg(n))
c lg(n)
para c
>0
2
Exemplo 2: 3n
3n2 +n
n
3n
n
n0 ).
+ n = (n)
cnn
c3
para n0
=1
temos de pegar c
=3
2010/2
14 / 38
Notao assinttica:
(theta)
(g (n))
o conjunto de
funes :
(g (n))
que
se existem constantes
( )
c2 g n
2010/2
15 / 38
Notao assinttica:
(theta)
n0 , f (n) = g (n)
limite
assintoticamente restrito para
( )
g n
um
(n)
2010/2
16 / 38
Notao assinttica:
(theta)
1 2
2n
3n = (n2 ):
c1 n
para todo n
n0 .
1 2
2
3n c2 n2 ,
Dividindo por n :
c1
1
2
3
n
c2 ,
para c2
1/2,
escolhendo c1
= 1/2,
=7
e c1
1/14.
= 1/14,
temos:
1 2
2n
3n = (n2 )
2010/2
17 / 38
Notao assinttica:
(theta)
6= (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 )
= 1.000
e c
= 1:
1000
1000,
1000n .
o mesmo aconteceria para n0
= 10
e c
= 100.
2010/2
19 / 38
Analogias
O
Teorema (1)
( )
(n) = O (g (n))
(n) = (g (n)).
e f
se e somente se:
Utilidade
utilizamos o teorema para demonstrar
limites assintoticamente
2010/2
20 / 38
Sumrio
Regras
Funes
2010/2
21 / 38
Notaes
o e :
notaes estritas
respectivamente. No
o g n
(g (n))
o conjunto de funes :
que
(n) (g (n))
se e somente se g (n )
que
o (f (n))
(g (n)),
f (n)
lim
n0 g (n)
, e
para o (g (n ))
f (n)
lim
n g (n)
=0
2010/2
22 / 38
Notaes
oe
Exemplo 1 : 2n
2n
2n2
n2
( 3)
o n
< c n3
3
< cnn2
<c n
2
n
<c
3 no
e c
=2
( 3)
o n
3 para um
Exemplo 3:
1 2
2n
1 2
no
2
o (n
n sucientemente grande.
(n2 ),
mas
2 ), e 1 2 no
2
n3 sempre menor
(n2 )
2010/2
23 / 38
Sumrio
Regras
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 ).
T x
Relembrando
um polinmio de grau n uma funo na forma:
f
(x ) = an x n + an1 x n1 + + a0 x + a0
a0 = 0)
2: polinmio quadrtico
3: polinmio cbico
2010/2
26 / 38
independente do tamanho de
de vezes.
Logartmica:
logb n
n2
n = 1.000.000.
Linear:
n 20 e log10 n 6 para
n elementos de sada.
n elementos de
2010/2
27 / 38
n logb n
Quadrtica:
n2
Cbica:
n3
2010/2
28 / 38
an
quadrado.
no so teis do ponto de vista prtico.
Fatorial:
n!
n = 20, n! 2, 4 1018 ,
47
para o dobro n = 40, n! 8, 2 10 .
para
2010/2
29 / 38
2010/2
30 / 38
Exerccio
Um algoritmo tradicional e muito utilizado possui complexidade n
1,5 ,
f (n) = n
g (n) = n log n
1,5
(n) = n n = n0,5
(n0,5 )2 = n
n
( ) = n log
= log n (log n)2 = log2 n
n
g n
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
f (n) = 10100 n, e
g (n) = 10n log n
No entanto, 10
10
2010/2
34 / 38
Repeties:
O (n )
Repeties aninhadas:
O (n 2 )
2010/2
35 / 38
Condies:
O (n )
se (a < b) entao
a = a + 1
senao
para i de 1 ate n-1 faca
a = a*i
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)
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/.
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)
2010/2
38 / 38