Comportamento Assintótico de Funções

45 

Full text

(1)

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)

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)

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)

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)

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)

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)

7

2. Comportamento Assintótico

 Dominação assintótica de f(n) sobre g(n).

m

(8)

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)

9

3. Exemplos

2.

Sejam g(n) = (n+1)

2

e f(n)= n

2

.

 As funções g(n) e f(n) dominam

assintoticamente uma à outra:

(10)

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)

11

5. Notação O

 Para expressar que f(n) domina

assintoticamente g(n) escrevemos:

g(n) = O( f(n) )

(12)

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)

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)

14

5. Notação O

(15)

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)

16

5. Notação O

 Exercício 1: Seja g(n) = (n+1)2. Prove que

(17)

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)

18

5. Notação O

 Exercício 2: Prove que g(n) = 3n3 +2n2 + n é

(19)

19

5. Notação O

 Exercício 2: Prove que g(n) = 3n3 +2n2 + n é

O(n3).

(20)

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)

21

5. Notação O

(22)

22

5. Notação O

 Exercício 3: Suponha três trechos de

programa cujos tempos são O(n), O(n2) e

(23)

23

5. Notação O

 Exercício 4: Prove que o produto de

[log n + k + O(1/n)] por [n + O(n)] é

(24)

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)

25

6. Notação

(26)

26

6. Notação

 A notação  especifica um limite inferior para

f(n).

 Pode-se dizer que g(n) é um limite

(27)

27

6. Notação

Exemplo: Para mostrar que

g(n) = 3n

3

+2n

2

é

(n

3

), basta fazer c = 1, e então

(28)

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)

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)

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)

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)

32

7. Notação

(33)

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)

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)

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)

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)

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)

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)

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)

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)

41

8. Notação

o

 Intuitivamente, a função f(n) tem um

(42)

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)

43

9. Notação

(44)

44

9. Notação

 A relação f(n) = (g(n)) implica em

(45)

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.

Figure

Updating...

References

Updating...

Download now (45 pages)