1. Aula 07 – An´alise Assint´otica de
Algoritmos: Nota¸c˜ao O e o
Norton Trevisan Roman
norton@usp.br
11 de setembro de 2018
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 1 / 28
2. Crescimento Assint´otico de Fun¸c˜oes
O custo da solu¸c˜ao aumenta com o tamanho n do
problema
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 2 / 28
3. Crescimento Assint´otico de Fun¸c˜oes
O custo da solu¸c˜ao aumenta com o tamanho n do
problema
O tamanho n fornece uma medida da dificuldade
para resolver o problema
Tempo necess´ario para resolver o problema aumenta quando
n cresce
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 2 / 28
4. Crescimento Assint´otico de Fun¸c˜oes
O custo da solu¸c˜ao aumenta com o tamanho n do
problema
O tamanho n fornece uma medida da dificuldade
para resolver o problema
Tempo necess´ario para resolver o problema aumenta quando
n cresce
Exemplo:
N´umero de compara¸c˜oes para achar o maior elemento de um
arranjo (array) ou para orden´a-lo aumenta com o tamanho
da entrada n.
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 2 / 28
5. Crescimento Assint´otico de Fun¸c˜oes
A escolha do algoritmo n˜ao ´e um problema cr´ıtico
quando n ´e pequeno
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 3 / 28
6. Crescimento Assint´otico de Fun¸c˜oes
A escolha do algoritmo n˜ao ´e um problema cr´ıtico
quando n ´e pequeno
O problema ´e quando n cresce
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 3 / 28
7. Crescimento Assint´otico de Fun¸c˜oes
A escolha do algoritmo n˜ao ´e um problema cr´ıtico
quando n ´e pequeno
O problema ´e quando n cresce
Por isso, ´e usual analisar o comportamento das
fun¸c˜oes de custo quando n ´e bastante grande
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 3 / 28
8. Crescimento Assint´otico de Fun¸c˜oes
A escolha do algoritmo n˜ao ´e um problema cr´ıtico
quando n ´e pequeno
O problema ´e quando n cresce
Por isso, ´e usual analisar o comportamento das
fun¸c˜oes de custo quando n ´e bastante grande
Analisa-se o comportamento assint´otico das fun¸c˜oes de custo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 3 / 28
9. Crescimento Assint´otico de Fun¸c˜oes
A escolha do algoritmo n˜ao ´e um problema cr´ıtico
quando n ´e pequeno
O problema ´e quando n cresce
Por isso, ´e usual analisar o comportamento das
fun¸c˜oes de custo quando n ´e bastante grande
Analisa-se o comportamento assint´otico das fun¸c˜oes de custo
Representa o limite do comportamento do custo quando n
cresce
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 3 / 28
10. Crescimento Assint´otico de Fun¸c˜oes
O que significa “Comportamento Assint´otico”?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 4 / 28
11. Crescimento Assint´otico de Fun¸c˜oes
O que significa “Comportamento Assint´otico”?
O comportamento assint´otico descreve uma fun¸c˜ao
ou express˜ao com um limite ou ass´ıntota definidos
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 4 / 28
12. Crescimento Assint´otico de Fun¸c˜oes
O que significa “Comportamento Assint´otico”?
O comportamento assint´otico descreve uma fun¸c˜ao
ou express˜ao com um limite ou ass´ıntota definidos
A fun¸c˜ao pode se aproximar desse limite, na medida em que
a entrada muda, mas nunca o alcan¸car´a
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 4 / 28
13. Crescimento Assint´otico de Fun¸c˜oes
O que significa “Comportamento Assint´otico”?
O comportamento assint´otico descreve uma fun¸c˜ao
ou express˜ao com um limite ou ass´ıntota definidos
A fun¸c˜ao pode se aproximar desse limite, na medida em que
a entrada muda, mas nunca o alcan¸car´a
Ass´ıntota?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 4 / 28
14. Crescimento Assint´otico de Fun¸c˜oes
O que significa “Comportamento Assint´otico”?
O comportamento assint´otico descreve uma fun¸c˜ao
ou express˜ao com um limite ou ass´ıntota definidos
A fun¸c˜ao pode se aproximar desse limite, na medida em que
a entrada muda, mas nunca o alcan¸car´a
Ass´ıntota?
A linha da qual uma curva se aproxima enquanto caminha
ao infinito
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 4 / 28
20. Comportamento Assint´otico
Ass´ıntotas
Horizontais Verticais Obl´ıquas
Ex: x2−3x
2x−2
Possui uma ass´ıntota vertical em x = 1
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 5 / 28
21. Comportamento Assint´otico
Ass´ıntotas
Horizontais Verticais Obl´ıquas
Ex: x2−3x
2x−2
Possui uma ass´ıntota vertical em x = 1
E uma obl´ıqua em y =
x
2
− 1
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 5 / 28
22. Comportamento Assint´otico
E o que isso tem a ver com complexidade?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 6 / 28
23. Comportamento Assint´otico
E o que isso tem a ver com complexidade?
Seja f (n) a fun¸c˜ao de complexidade de um
algoritmo A
O comportamento assint´otico de f (n) representa o limite do
comportamento do custo (complexidade) de A quando n
cresce sem restri¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 6 / 28
24. Comportamento Assint´otico
E o que isso tem a ver com complexidade?
Seja f (n) a fun¸c˜ao de complexidade de um
algoritmo A
O comportamento assint´otico de f (n) representa o limite do
comportamento do custo (complexidade) de A quando n
cresce sem restri¸c˜oes
Lembrando que a fun¸c˜ao de complexidade geralmente
considera apenas algumas opera¸c˜oes elementares, ou mesmo
uma ´unica opera¸c˜ao elementar (ex: o n´umero de
compara¸c˜oes)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 6 / 28
25. Comportamento Assint´otico
E o que isso tem a ver com complexidade?
Seja f (n) a fun¸c˜ao de complexidade de um
algoritmo A
O comportamento assint´otico de f (n) representa o limite do
comportamento do custo (complexidade) de A quando n
cresce sem restri¸c˜oes
Lembrando que a fun¸c˜ao de complexidade geralmente
considera apenas algumas opera¸c˜oes elementares, ou mesmo
uma ´unica opera¸c˜ao elementar (ex: o n´umero de
compara¸c˜oes)
A complexidade assint´otica relata o crescimento
assint´otico das opera¸c˜oes consideradas
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 6 / 28
26. Comportamento Assint´otico
E para que isso serve?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 7 / 28
27. Comportamento Assint´otico
E para que isso serve?
Definir limites para o comportamento do algoritmo,
identificando assim quando o barco vai afundar...
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 7 / 28
28. Comportamento Assint´otico
E para que isso serve?
Definir limites para o comportamento do algoritmo,
identificando assim quando o barco vai afundar...
Ex: 1 milh˜ao (106
) de opera¸c˜oes por segundo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 7 / 28
29. Comportamento Assint´otico
E para que isso serve?
A defini¸c˜ao de um limite nos d´a uma caracteriza¸c˜ao
simples da eficiˆencia do algoritmo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 8 / 28
30. Comportamento Assint´otico
E para que isso serve?
A defini¸c˜ao de um limite nos d´a uma caracteriza¸c˜ao
simples da eficiˆencia do algoritmo
Mesmo podendo determinar sua complexidade exata, o
c´alculo dessa precis˜ao extra pode n˜ao valer o esfor¸co
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 8 / 28
31. Comportamento Assint´otico
E para que isso serve?
A defini¸c˜ao de um limite nos d´a uma caracteriza¸c˜ao
simples da eficiˆencia do algoritmo
Mesmo podendo determinar sua complexidade exata, o
c´alculo dessa precis˜ao extra pode n˜ao valer o esfor¸co
Para entradas grandes, as constantes multiplicativas e
termos de menor ordem s˜ao dominados pelos efeitos do
tamanho da entrada
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 8 / 28
32. Comportamento Assint´otico
E para que isso serve?
A defini¸c˜ao de um limite nos d´a uma caracteriza¸c˜ao
simples da eficiˆencia do algoritmo
Mesmo podendo determinar sua complexidade exata, o
c´alculo dessa precis˜ao extra pode n˜ao valer o esfor¸co
Para entradas grandes, as constantes multiplicativas e
termos de menor ordem s˜ao dominados pelos efeitos do
tamanho da entrada
Nos permite tamb´em comparar o desempenho
relativo de algoritmos alternativos
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 8 / 28
33. Comportamento Assint´otico
E para que isso serve?
A defini¸c˜ao de um limite nos d´a uma caracteriza¸c˜ao
simples da eficiˆencia do algoritmo
Mesmo podendo determinar sua complexidade exata, o
c´alculo dessa precis˜ao extra pode n˜ao valer o esfor¸co
Para entradas grandes, as constantes multiplicativas e
termos de menor ordem s˜ao dominados pelos efeitos do
tamanho da entrada
Nos permite tamb´em comparar o desempenho
relativo de algoritmos alternativos
Nos diz qual ser´a melhor quando a entrada cresce
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 8 / 28
34. Relacionamento Assint´otico
Defini¸c˜ao:
Uma fun¸c˜ao f (n) domina assintoticamente outra
fun¸c˜ao g(n) se existirem duas constantes positivas c
e m tais que, para n ≥ m, tem-se
|g(n)| ≤ c × |f (n)|.
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 9 / 28
35. Relacionamento Assint´otico
Defini¸c˜ao:
Uma fun¸c˜ao f (n) domina assintoticamente outra
fun¸c˜ao g(n) se existirem duas constantes positivas c
e m tais que, para n ≥ m, tem-se
|g(n)| ≤ c × |f (n)|.
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 9 / 28
36. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
37. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
|n| ≤ |n2
| para todo n ∈ N
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
38. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
|n| ≤ |n2
| para todo n ∈ N
Para c = 1 e m = 0, temos que |g(n)| ≤ |f (n)|. Portanto,
f (n) domina assintoticamente g(n).
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
39. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
|n| ≤ |n2
| para todo n ∈ N
Para c = 1 e m = 0, temos que |g(n)| ≤ |f (n)|. Portanto,
f (n) domina assintoticamente g(n).
g(n) = n e f (n) = −n2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
40. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
|n| ≤ |n2
| para todo n ∈ N
Para c = 1 e m = 0, temos que |g(n)| ≤ |f (n)|. Portanto,
f (n) domina assintoticamente g(n).
g(n) = n e f (n) = −n2
|n| ≤ |−n2
| para todo n ∈ N (por ser m´odulo, o sinal n˜ao
importa)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
41. Relacionamento Assint´otico
Quem domina quem?
g(n) = n e f (n) = n2
|n| ≤ |n2
| para todo n ∈ N
Para c = 1 e m = 0, temos que |g(n)| ≤ |f (n)|. Portanto,
f (n) domina assintoticamente g(n).
g(n) = n e f (n) = −n2
|n| ≤ |−n2
| para todo n ∈ N (por ser m´odulo, o sinal n˜ao
importa)
Para c = 1 e m = 0, temos que |g(n)| ≤ |f (n)|. Portanto,
f (n) domina assintoticamente g(n).
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 10 / 28
42. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
43. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Melhor por em um gr´afico
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
44. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Melhor por em um gr´afico
|n2
| ≤ |(n + 1)2
| para n ≥ 0
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
45. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Melhor por em um gr´afico
|n2
| ≤ |(n + 1)2
| para n ≥ 0
g(n) domina f (n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
46. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Melhor por em um gr´afico
|n2
| ≤ |(n + 1)2
| para n ≥ 0
g(n) domina f (n)
Ser´a somente isso?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
47. Relacionamento Assint´otico
Quem domina quem?
g(n) = (n + 1)2
e f (n) = n2
Melhor por em um gr´afico
|n2
| ≤ |(n + 1)2
| para n ≥ 0
g(n) domina f (n)
Ser´a somente isso?
N˜ao h´a como f (n) dominar
g(n)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 11 / 28
48. Relacionamento Assint´otico
Quem domina quem?
Lembre que a defini¸c˜ao envolve
tamb´em uma constante
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 12 / 28
49. Relacionamento Assint´otico
Quem domina quem?
Lembre que a defini¸c˜ao envolve
tamb´em uma constante
Suponha que queremos
g(n) ≤ cf (n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 12 / 28
50. Relacionamento Assint´otico
Quem domina quem?
Lembre que a defini¸c˜ao envolve
tamb´em uma constante
Suponha que queremos
g(n) ≤ cf (n)
Ent˜ao |(n + 1)2
| ≤ |cn2
|
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 12 / 28
51. Relacionamento Assint´otico
Quem domina quem?
Lembre que a defini¸c˜ao envolve
tamb´em uma constante
Suponha que queremos
g(n) ≤ cf (n)
Ent˜ao |(n + 1)2
| ≤ |cn2
|
Mas, para isso, basta que
|(n + 1)2
| ≤ |(
√
cn)2
| ou
|n + 1| ≤ |
√
cn|
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 12 / 28
52. Relacionamento Assint´otico
Quem domina quem?
Lembre que a defini¸c˜ao envolve
tamb´em uma constante
Suponha que queremos
g(n) ≤ cf (n)
Ent˜ao |(n + 1)2
| ≤ |cn2
|
Mas, para isso, basta que
|(n + 1)2
| ≤ |(
√
cn)2
| ou
|n + 1| ≤ |
√
cn|
Se
√
c = 2, ou seja, c = 4, isso ´e verdade, para n ≥ 1
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 12 / 28
53. Relacionamento Assint´otico
Quem domina quem?
Ent˜ao temos que g(n) domina
f (n), pois |n2
| ≤ |(n + 1)2
|,
n ≥ 0
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 13 / 28
54. Relacionamento Assint´otico
Quem domina quem?
Ent˜ao temos que g(n) domina
f (n), pois |n2
| ≤ |(n + 1)2
|,
n ≥ 0
e f (n) domina g(n), pois
|(n + 1)2
| ≤ |4n2
|, n ≥ 1
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 13 / 28
55. Relacionamento Assint´otico
Quem domina quem?
Ent˜ao temos que g(n) domina
f (n), pois |n2
| ≤ |(n + 1)2
|,
n ≥ 0
e f (n) domina g(n), pois
|(n + 1)2
| ≤ |4n2
|, n ≥ 1
Nesse caso, dizemos que f (n) e
g(n) dominam assintoticamente
uma a outra
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 13 / 28
56. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
57. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Escreve-se g(n) = O(f (n)) e lˆe-se: “g(n) ´e da ordem no
m´aximo f (n)”
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
58. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Escreve-se g(n) = O(f (n)) e lˆe-se: “g(n) ´e da ordem no
m´aximo f (n)”
E para que serve isso?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
59. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Escreve-se g(n) = O(f (n)) e lˆe-se: “g(n) ´e da ordem no
m´aximo f (n)”
E para que serve isso?
Muitas vezes calcular a fun¸c˜ao de complexidade g(n) de um
algoritmo ´e complicado
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
60. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Escreve-se g(n) = O(f (n)) e lˆe-se: “g(n) ´e da ordem no
m´aximo f (n)”
E para que serve isso?
Muitas vezes calcular a fun¸c˜ao de complexidade g(n) de um
algoritmo ´e complicado
´E mais f´acil determinar que g(n) ´e O(f (n)), isto ´e, que
assintoticamente g(n) cresce no m´aximo como f (n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
61. Nota¸c˜ao O
Knuth (1968) criou a nota¸c˜ao O (O grande) para
expressar que f (n) domina assintoticamente g(n)
Escreve-se g(n) = O(f (n)) e lˆe-se: “g(n) ´e da ordem no
m´aximo f (n)”
E para que serve isso?
Muitas vezes calcular a fun¸c˜ao de complexidade g(n) de um
algoritmo ´e complicado
´E mais f´acil determinar que g(n) ´e O(f (n)), isto ´e, que
assintoticamente g(n) cresce no m´aximo como f (n)
Ex: Se dizemos que T(n) = O(n2
), significa que existem
constantes c e m tais que, para n ≥ m, T(n) ≤ cn2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 14 / 28
62. Nota¸c˜ao O
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e O(f (n)) se existirem constantes
positivas c e m tais que 0 ≤ g(n) ≤ cf (n), para todo
n ≥ m
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 15 / 28
63. Nota¸c˜ao O
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e O(f (n)) se existirem constantes
positivas c e m tais que 0 ≤ g(n) ≤ cf (n), para todo
n ≥ m
Informalmente, dizemos
que, se g(n) ∈ O(f (n)),
ent˜ao g(n) cresce no
m´aximo t˜ao rapidamente
quanto f (n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 15 / 28
64. Nota¸c˜ao O
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e O(f (n)) se existirem constantes
positivas c e m tais que 0 ≤ g(n) ≤ cf (n), para todo
n ≥ m
Informalmente, dizemos
que, se g(n) ∈ O(f (n)),
ent˜ao g(n) cresce no
m´aximo t˜ao rapidamente
quanto f (n)
Trata-se ent˜ao de um limite assint´otico superior
para g(n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 15 / 28
65. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
66. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Fazendo c = 3
2
temos 3
2
n2
− 2n ≤ 3
2
n2
, para m ≥ 2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
67. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Fazendo c = 3
2
temos 3
2
n2
− 2n ≤ 3
2
n2
, para m ≥ 2
Outras constantes podem existir, mas o que importa ´e que
exista alguma escolha para as constantes
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
68. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Fazendo c = 3
2
temos 3
2
n2
− 2n ≤ 3
2
n2
, para m ≥ 2
Outras constantes podem existir, mas o que importa ´e que
exista alguma escolha para as constantes
(n + 1)2
∈ O(n2
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
69. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Fazendo c = 3
2
temos 3
2
n2
− 2n ≤ 3
2
n2
, para m ≥ 2
Outras constantes podem existir, mas o que importa ´e que
exista alguma escolha para as constantes
(n + 1)2
∈ O(n2
)?
Fazendo c = 4, m = 1, temos (n + 1)2
≤ 4n2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
70. Nota¸c˜ao O
Exemplo
3
2
n2
− 2n ∈ O(n2
)?
Fazendo c = 3
2
temos 3
2
n2
− 2n ≤ 3
2
n2
, para m ≥ 2
Outras constantes podem existir, mas o que importa ´e que
exista alguma escolha para as constantes
(n + 1)2
∈ O(n2
)?
Fazendo c = 4, m = 1, temos (n + 1)2
≤ 4n2
(n + 1)2
∈ O(n2
) para n ≥ 1
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 16 / 28
71. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
72. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Basta mostrar que 3n3
+ 2n2
+ n ≤ 6n3
, para n ≥ 0 (ou
seja, c = 6 e m = 0)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
73. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Basta mostrar que 3n3
+ 2n2
+ n ≤ 6n3
, para n ≥ 0 (ou
seja, c = 6 e m = 0)
3n3
+ 2n2
+ n ∈ O(n4
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
74. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Basta mostrar que 3n3
+ 2n2
+ n ≤ 6n3
, para n ≥ 0 (ou
seja, c = 6 e m = 0)
3n3
+ 2n2
+ n ∈ O(n4
)?
Sim, mas essa afirma¸c˜ao ´e mais fraca que dizer que
3n3
+ 2n2
+ n ´e O(n3
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
75. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Basta mostrar que 3n3
+ 2n2
+ n ≤ 6n3
, para n ≥ 0 (ou
seja, c = 6 e m = 0)
3n3
+ 2n2
+ n ∈ O(n4
)?
Sim, mas essa afirma¸c˜ao ´e mais fraca que dizer que
3n3
+ 2n2
+ n ´e O(n3
)
Escolhemos ent˜ao o limite “mais baixo”, pois nos interessa o
assintoticamente mais pr´oximo de 3n3
+ 2n2
+ n
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
76. Nota¸c˜ao O
Exemplo
3n3
+ 2n2
+ n ∈ O(n3
)?
Basta mostrar que 3n3
+ 2n2
+ n ≤ 6n3
, para n ≥ 0 (ou
seja, c = 6 e m = 0)
3n3
+ 2n2
+ n ∈ O(n4
)?
Sim, mas essa afirma¸c˜ao ´e mais fraca que dizer que
3n3
+ 2n2
+ n ´e O(n3
)
Escolhemos ent˜ao o limite “mais baixo”, pois nos interessa o
assintoticamente mais pr´oximo de 3n3
+ 2n2
+ n
Isso, contudo, n˜ao implica estar errado que ´e O(n4
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 17 / 28
77. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
78. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
79. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
80. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
81. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
O(O(f (n))) = O(f (n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
82. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
O(O(f (n))) = O(f (n))
O(f (n) + g(n)) = O(f (n)) + O(g(n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
83. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
O(O(f (n))) = O(f (n))
O(f (n) + g(n)) = O(f (n)) + O(g(n))
O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
84. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
O(O(f (n))) = O(f (n))
O(f (n) + g(n)) = O(f (n)) + O(g(n))
O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
O(f (n))O(g(n)) = O(f (n)g(n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
85. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
f (n) = O(f (n))
c × O(f (n)) = O(f (n)) (c: constante)
O(f (n)) + O(f (n)) = O(f (n))
O(O(f (n))) = O(f (n))
O(f (n) + g(n)) = O(f (n)) + O(g(n))
O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
O(f (n))O(g(n)) = O(f (n)g(n))
f (n)O(g(n)) = O(f (n)g(n))
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 18 / 28
86. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
A regra O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
pode ser usada para calcular o tempo de execu¸c˜ao
de uma sequˆencia de trechos de um programa
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 19 / 28
87. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
A regra O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
pode ser usada para calcular o tempo de execu¸c˜ao
de uma sequˆencia de trechos de um programa
Ex: Suponha 3 trechos: O(n), O(n2
) e O(nlog(n)).
Qual o tempo de execu¸c˜ao do algoritmo como um
todo?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 19 / 28
88. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
A regra O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
pode ser usada para calcular o tempo de execu¸c˜ao
de uma sequˆencia de trechos de um programa
Ex: Suponha 3 trechos: O(n), O(n2
) e O(nlog(n)).
Qual o tempo de execu¸c˜ao do algoritmo como um
todo?
Lembre-se que o tempo de execu¸c˜ao ´e a soma dos tempos
de cada trecho
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 19 / 28
89. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
A regra O(f (n)) + O(g(n)) = O(max(f (n), g(n)))
pode ser usada para calcular o tempo de execu¸c˜ao
de uma sequˆencia de trechos de um programa
Ex: Suponha 3 trechos: O(n), O(n2
) e O(nlog(n)).
Qual o tempo de execu¸c˜ao do algoritmo como um
todo?
Lembre-se que o tempo de execu¸c˜ao ´e a soma dos tempos
de cada trecho
O(n)+O(n2
)+O(nlog(n)) = max(O(n), O(n2
), O(nlog(n)))
= O(n2
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 19 / 28
90. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Isso facilita muito o c´alculo do limite superior para a
complexidade de um algoritmo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 20 / 28
91. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Isso facilita muito o c´alculo do limite superior para a
complexidade de um algoritmo
Ex: 3n3
+ 2n2
+ n ∈ O(n3
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 20 / 28
92. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Isso facilita muito o c´alculo do limite superior para a
complexidade de um algoritmo
Ex: 3n3
+ 2n2
+ n ∈ O(n3
)?
Sim, porque o termo de maior ordem (3n3
) ´e claramente
O(n3
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 20 / 28
93. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Isso facilita muito o c´alculo do limite superior para a
complexidade de um algoritmo
Ex: 3n3
+ 2n2
+ n ∈ O(n3
)?
Sim, porque o termo de maior ordem (3n3
) ´e claramente
O(n3
)
Ent˜ao, pela regra, este ser´a o limite da express˜ao como um
todo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 20 / 28
94. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Isso facilita muito o c´alculo do limite superior para a
complexidade de um algoritmo
Ex: 3n3
+ 2n2
+ n ∈ O(n3
)?
Sim, porque o termo de maior ordem (3n3
) ´e claramente
O(n3
)
Ent˜ao, pela regra, este ser´a o limite da express˜ao como um
todo
N˜ao h´a necessidade de provar usando os termos de menor
ordem
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 20 / 28
95. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Por vezes basta observar a estrutura do algoritmo
para saber sua complexidade
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 21 / 28
96. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Por vezes basta observar a estrutura do algoritmo
para saber sua complexidade
Como quando h´a um la¸co encadeado em outro, ambos
proporcionais `a entrada
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 21 / 28
97. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Por vezes basta observar a estrutura do algoritmo
para saber sua complexidade
Como quando h´a um la¸co encadeado em outro, ambos
proporcionais `a entrada
Nesse caso, essa parte ´e O(n2
) e, se nenhuma outra for mais
alta, ent˜ao esse ´e o limite do algoritmo
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 21 / 28
98. Nota¸c˜ao O
Opera¸c˜oes com a nota¸c˜ao O
Por vezes basta observar a estrutura do algoritmo
para saber sua complexidade
Como quando h´a um la¸co encadeado em outro, ambos
proporcionais `a entrada
Nesse caso, essa parte ´e O(n2
) e, se nenhuma outra for mais
alta, ent˜ao esse ´e o limite do algoritmo
Mais do que isso, sendo O um limite superior, se o
calcularmos no pior caso teremos um limite superior
para toda e qualquer entrada
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 21 / 28
99. Nota¸c˜ao O
Problemas
Como comparar algoritmos cujas complexidades s˜ao
equivalentes?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 22 / 28
100. Nota¸c˜ao O
Problemas
Como comparar algoritmos cujas complexidades s˜ao
equivalentes?
Ou seja, quando f (n) e g(n) dominam assintoticamente
uma `a outra
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 22 / 28
101. Nota¸c˜ao O
Problemas
Como comparar algoritmos cujas complexidades s˜ao
equivalentes?
Ou seja, quando f (n) e g(n) dominam assintoticamente
uma `a outra
Nesses casos, o comportamento assint´otico n˜ao
serve para a compara¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 22 / 28
102. Nota¸c˜ao O
Problemas
Como comparar algoritmos cujas complexidades s˜ao
equivalentes?
Ou seja, quando f (n) e g(n) dominam assintoticamente
uma `a outra
Nesses casos, o comportamento assint´otico n˜ao
serve para a compara¸c˜ao
Teremos que ver sua complexidade com mais detalhes,
observando as constantes
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 22 / 28
103. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
104. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Nesse caso, pode ocorrer que um algoritmo assintoticamente
mais lento seja mais r´apido para entradas pequenas
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
105. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Nesse caso, pode ocorrer que um algoritmo assintoticamente
mais lento seja mais r´apido para entradas pequenas
Ex: um programa tem f (n) = 100n, e outro
g(n) = 2n2
. Qual dos dois ´e melhor?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
106. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Nesse caso, pode ocorrer que um algoritmo assintoticamente
mais lento seja mais r´apido para entradas pequenas
Ex: um programa tem f (n) = 100n, e outro
g(n) = 2n2
. Qual dos dois ´e melhor?
Depende do tamanho do problema
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
107. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Nesse caso, pode ocorrer que um algoritmo assintoticamente
mais lento seja mais r´apido para entradas pequenas
Ex: um programa tem f (n) = 100n, e outro
g(n) = 2n2
. Qual dos dois ´e melhor?
Depende do tamanho do problema
Para n < 50, o programa com tempo 2n2
´e melhor do que o
de 100n
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
108. Nota¸c˜ao O
Problemas
Como comparar algoritmos quando n˜ao teremos
entradas grandes?
Nesse caso, pode ocorrer que um algoritmo assintoticamente
mais lento seja mais r´apido para entradas pequenas
Ex: um programa tem f (n) = 100n, e outro
g(n) = 2n2
. Qual dos dois ´e melhor?
Depende do tamanho do problema
Para n < 50, o programa com tempo 2n2
´e melhor do que o
de 100n
Ent˜ao, se nunca teremos n ≥ 50, o programa com 2n2
´e
melhor
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 23 / 28
109. Nota¸c˜ao o
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e o(f (n)) se, para toda constante
c > 0, existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 24 / 28
110. Nota¸c˜ao o
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e o(f (n)) se, para toda constante
c > 0, existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m
Informalmente, dizemos que, se g(n) ∈ o(f (n)),
ent˜ao g(n) cresce mais lentamente que f (n)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 24 / 28
111. Nota¸c˜ao o
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e o(f (n)) se, para toda constante
c > 0, existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m
Informalmente, dizemos que, se g(n) ∈ o(f (n)),
ent˜ao g(n) cresce mais lentamente que f (n)
Intuitivamente, na nota¸c˜ao o a fun¸c˜ao g(n) tem crescimento
muito menor que f (n) quando n tende para o infinito
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 24 / 28
112. Nota¸c˜ao o
Defini¸c˜ao
Uma fun¸c˜ao g(n) ´e o(f (n)) se, para toda constante
c > 0, existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m
Informalmente, dizemos que, se g(n) ∈ o(f (n)),
ent˜ao g(n) cresce mais lentamente que f (n)
Intuitivamente, na nota¸c˜ao o a fun¸c˜ao g(n) tem crescimento
muito menor que f (n) quando n tende para o infinito
Ou seja, lim
n→∞
g(n)
f (n)
= 0
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 24 / 28
113. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
114. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
A express˜ao 0 ≤ g(n) ≤ cf (n) ´e v´alida para alguma
constante c > 0
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
115. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
A express˜ao 0 ≤ g(n) ≤ cf (n) ´e v´alida para alguma
constante c > 0
Basta acharmos um c e um m
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
116. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
A express˜ao 0 ≤ g(n) ≤ cf (n) ´e v´alida para alguma
constante c > 0
Basta acharmos um c e um m
o(f (n)) = {g(n): para toda constante positiva c,
existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m}.
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
117. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
A express˜ao 0 ≤ g(n) ≤ cf (n) ´e v´alida para alguma
constante c > 0
Basta acharmos um c e um m
o(f (n)) = {g(n): para toda constante positiva c,
existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m}.
A express˜ao 0 ≤ g(n) < cf (n) ´e v´alida para toda constante
c > 0
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
118. Diferen¸ca entre O e o
O(f (n)) = {g(n): existem constantes positivas c e
m tais que 0 ≤ g(n) ≤ cf (n), para todo n ≥ m}
A express˜ao 0 ≤ g(n) ≤ cf (n) ´e v´alida para alguma
constante c > 0
Basta acharmos um c e um m
o(f (n)) = {g(n): para toda constante positiva c,
existe uma constante m > 0 tal que
0 ≤ g(n) < cf (n), para todo n ≥ m}.
A express˜ao 0 ≤ g(n) < cf (n) ´e v´alida para toda constante
c > 0
Para todo c temos que ter um m
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 25 / 28
120. Nota¸c˜ao o
Exemplo
1000n2
∈ o(n3
)?
Buscamos um m tal que, para todo c e n ≥ m,
1000n2
< cn3
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 26 / 28
121. Nota¸c˜ao o
Exemplo
1000n2
∈ o(n3
)?
Buscamos um m tal que, para todo c e n ≥ m,
1000n2
< cn3
⇒ 1000 < cn (dividindo ambos os lados por n2
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 26 / 28
122. Nota¸c˜ao o
Exemplo
1000n2
∈ o(n3
)?
Buscamos um m tal que, para todo c e n ≥ m,
1000n2
< cn3
⇒ 1000 < cn (dividindo ambos os lados por n2
)
⇒ n >
1000
c
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 26 / 28
123. Nota¸c˜ao o
Exemplo
1000n2
∈ o(n3
)?
Buscamos um m tal que, para todo c e n ≥ m,
1000n2
< cn3
⇒ 1000 < cn (dividindo ambos os lados por n2
)
⇒ n >
1000
c
Ou seja, para todo valor de c, um m que satisfaz a defini¸c˜ao
´e m =
1000
c
+ 1 (pois n ≥ m e n > 1000
c
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 26 / 28
124. Nota¸c˜ao o
Exemplo
2n2
∈ o(n2
)?
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 27 / 28
125. Nota¸c˜ao o
Exemplo
2n2
∈ o(n2
)?
Buscamos um m tal que, para todo c e n ≥ m, 2n2
< cn2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 27 / 28
126. Nota¸c˜ao o
Exemplo
2n2
∈ o(n2
)?
Buscamos um m tal que, para todo c e n ≥ m, 2n2
< cn2
Mas 2n2
< cn2
⇒ c > 2 (caso em que vale para todo n > 0)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 27 / 28
127. Nota¸c˜ao o
Exemplo
2n2
∈ o(n2
)?
Buscamos um m tal que, para todo c e n ≥ m, 2n2
< cn2
Mas 2n2
< cn2
⇒ c > 2 (caso em que vale para todo n > 0)
Ou seja, n˜ao h´a m tal que, para todo c e n ≥ m, 2n2
< cn2
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 27 / 28
128. Nota¸c˜ao o
Exemplo
2n2
∈ o(n2
)?
Buscamos um m tal que, para todo c e n ≥ m, 2n2
< cn2
Mas 2n2
< cn2
⇒ c > 2 (caso em que vale para todo n > 0)
Ou seja, n˜ao h´a m tal que, para todo c e n ≥ m, 2n2
< cn2
Logo, 2n2
∈ o(n2
)
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 27 / 28
129. Referˆencias
Ziviani, Nivio. Projeto de Algoritmos: com implementa¸c˜oes
em Java e C++. Cengage. 2007.
Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L.,
Stein, Clifford. Introduction to Algorithms. 2a ed. MIT Press,
2001.
Gersting, Judith L. Fundamentos Matem´aticos para a Ciˆencia
da Computa¸c˜ao. 3a ed. LTC. 1993.
https://www.chegg.com/tutors/
what-is-Asymptotic-and-Unbounded-Behavior/
https://www.mathsisfun.com/algebra/asymptote.html
Norton Trevisan Romannorton@usp.br Aula 07 – An´alise Assint´otica de Algoritmos: Nota¸c˜ao O e o11 de setembro de 2018 28 / 28