Comportamento
Assintótico de
Funções
Algoritmos e Estruturas de Dados I
Natália Batista
https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br
2º semestre/ 2017
2
1. Custo de algoritmos
(1/5) Custo de utilização de um algoritmo:
depende do tamanho n do problema
o parâmetro n fornece uma medida da dificuldade
para se resolver o problema
3
1. Custo de algoritmos
(1/5) Para valores suficientemente pequenos de n,
qualquer algoritmo custa pouco para ser executado, mesmo os ineficientes.
A escolha do algoritmo não é um problema
crítico para problemas de tamanho pequeno.
Logo, a análise de algoritmos é realizada
4
2. Comportamento Assintótico
Qual é o comportamento das funções de
custo para valores grandes de n?
Comportamento assintótico de f(n):
5
2. Comportamento Assintótico
A análise de um algoritmo geralmente conta
com apenas algumas operações elementares.
A medida de custo ou medida de
6
2. Comportamento Assintótico
Definição: Uma função f(n) domina
assintoticamente outra função g(n) se
existem duas constantes positivas c e m tais que, para n m, temos
7
2. Comportamento Assintótico
Dominação assintótica de f(n) sobre g(n).
m
8
3. Exemplos
1. Sejam g(n) = n e f(n)= -n2.
Temos que |n| |-n2| para todo n pertencente ao
conjunto dos números naturais.
Podemos escolher c=1 e m=0.
Logo, f(n) domina assintoticamente g(n).
Observe que g(n) não domina assintoticamente
f(n) porque |-n2| > c|n| para todo n>c e n>1,
9
3. Exemplos
2.
Sejam g(n) = (n+1)
2e f(n)= n
2.
As funções g(n) e f(n) dominam
assintoticamente uma à outra:
10
4. Notação assintótica de funções
Existem três notações principais na análise
assintótica de funções:
Notação O (“O” grande)
11
5. Notação O
Para expressar que f(n) domina
assintoticamente g(n) escrevemos:
g(n) = O( f(n) )
12
5. Notação O
Exemplo: se o tempo de execução de um
programa T(n) é O(n2), significa que existem
constantes c e m tais que, para valores de n maiores ou iguais a m,
13
5. Notação O
Definição: Uma função f(n) é O(g(n)) se
existem duas constantes positivas c e m tais que, para todo n m,
14
5. Notação O
15
5. Notação O
As funções de complexidade de tempo são
definidas sobre os inteiros não negativos.
A notação O define um limite superior para a
função, por um fator constante.
Pode-se dizer que g(n) é um limite
assintótico superior (em inglês, asymptotic
16
5. Notação O
Exercício 1: Seja g(n) = (n+1)2. Prove que
17
5. Notação O
Exercício 1: Seja g(n) = (n+1)2. Prove que
g(n) é O(n2).
Faça m=1 e c=4. Logo
18
5. Notação O
Exercício 2: Prove que g(n) = 3n3 +2n2 + n é
19
5. Notação O
Exercício 2: Prove que g(n) = 3n3 +2n2 + n é
O(n3).
20
5. Notação O
Quando a notação O é usada para expressar
o tempo de execução de um algoritmo no pior caso, está se definindo também o limite (superior) do tempo de execução desse
21
5. Notação O
22
5. Notação O
Exercício 3: Suponha três trechos de
programa cujos tempos são O(n), O(n2) e
23
5. Notação O
Exercício 4: Prove que o produto de
[log n + k + O(1/n)] por [n + O(n)] é
24
6. Notação
Definição: Uma função f(n) é (g(n)) se
existem duas constantes c e m tais que, para todo n m,
25
6. Notação
26
6. Notação
A notação especifica um limite inferior para
f(n).
Pode-se dizer que g(n) é um limite
27
6. Notação
Exemplo: Para mostrar que
g(n) = 3n
3+2n
2é
(n
3), basta fazer c = 1, e então
28
6. Notação
Quando a notação é usada para expressar o
tempo de execução de um algoritmo no melhor caso, está se definindo também o
29
6. Notação
Exercício 5: O que significa dizer que “o
tempo de execução” (i.e., sem especificar se é para o pior caso, melhor caso, ou caso
30
6. Notação
Exercício 5: O que significa dizer que “o
tempo de execução” (i.e., sem especificar se é para o pior caso, melhor caso, ou caso
médio) é (g(n))?
O tempo de execução desse algoritmo é pelo
31
7. Notação
Definição: Uma função f(n) é (g(n)) se
existirem constantes positivas c1, c2 e m tais que, para todo n m,
32
7. Notação
33
7. Notação
A notação limita a função por fatores
constantes.
Em outras palavras, para todo n m, a
função f(n) é igual a g(n) a menos de uma constante.
Neste caso, g(n) é um limite assintótico firme.
34
7. Notação
Exemplo:
Para provar esta afirmação, devemos achar
constantes c1 > 0, c2 > 0, n > 0, tais que:
para todo n m.
35
7. Notação
Se dividirmos a expressão acima por n2 temos:
O lado direito da desigualdade será válido para
qualquer valor de n 1 quando escolhemos c2
1/2.
36
7. Notação
Fazendo 1/2 - 3/n > 0, obtém-se que n > 6. Logo, o
valor n = 7 pode ser escolhido.
Portanto, o lado esquerdo da desigualdade será
válido para qualquer valor de n > 7 e, escolhendo m = 7, c1 = 1/14.
37
7. Notação
Logo, escolhendo
c
1 = 1/14
c
2 = 1/2
m = 7
é possível verificar que n2/2 – 3n = (n2).
Note que existem outras escolhas para as
38
8. Notação
o
O limite assintótico superior definido pela
notação O pode ser assintoticamente firme ou não.
Exemplo:
2n2 = O(n2) é assintoticamente firme.
39
8. Notação
o
A notação o é usada para definir um limite
superior que não é assintoticamente firme.
Definição: Uma função f(n) é o(g(n)) se, para
qualquer constante c >0 e para todo n m,
40
8. Notação
o
Exemplo: 2n = o(n2) mas 2n2 o(n2). Na notação o, a função f(n) tem um
41
8. Notação
o
Intuitivamente, a função f(n) tem um
42
9. Notação
Por analogia, a notação está relacionada
com a notação da mesma forma que a
notação o está relacionada com a notação O. Definição: Uma função f(n) é (g(n)) se, para
qualquer constante c > 0, para todo n m,
43
9. Notação
44
9. Notação
A relação f(n) = (g(n)) implica em
45
10. Referências
Ziviani, N. Projeto de algoritmos: com
implementações em Pascal e C. 3 ed.
Editora Cengage Learning, 2011.
Cormen, T. et al. Introduction to
Algorithms. Prentice-Hall of India, 2001.
Loureiro, A. Projeto e Análise de
Algoritmos: Análise de Complexidade.