Escolar Documentos
Profissional Documentos
Cultura Documentos
2022
Contagem de instruções
• Voltando...................
• Dois passos:
• Contar o número de instruções;
• Analisar o crescimento em função do tamanho da entrada.
Análise de funções
• Análise da função f(n) = 6n² + 100n + 300
f(n)
n
Análise de funções
• Análise da função f(n) = (6n²/10) + (100n + 300)*10
f(n)
n
Notação assintótica
• É uma notação que permite descartar os termos constantes e
menos significativos de f(n);
• Foco no que é realmente relevante!
Notação assintótica
• Motivação:
• 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.
Notação assintótica
• Custo assintótico de funções:
• Estamos interessados em saber como a função de
complexidade de tempo se comporta quando n tende ao
infinito;
• Se um algoritmo é mais rápido que outro para uma grande
quantidade de dados de entrada, então é provável que ele
continue sendo para uma quantidade de dados menor.
Notação assintótica
• Analisando assintoticamente a função abaixo:
n
f(n) = 4n + 3
f(n) = 4 +3
Notação assintótica
• Custo assintótico de funções:
• Descartar os termos constantes e menos significativos;
• Manter apenas o que cresce mais rápido à medida que o n é
maior.
Notação assintótica
• Analisando assintoticamente as funções de complexidade
abaixo, risque o que deve ser descartado e mantenha o que
deve ser considerado quando n cresce indefinidamente.
a) f(n) = 2n² + n/2 + 9
b) f(n) = 5 + n/2
c) f(n) = 2n³ + n² + 2n + 7
d) f(n) = 57
f(n) = 1 d)
f(n) = n³ c)
f(n) = n b)
Pausa para você
f(n) = n² a) tentar.
Respostas: Agora é a sua
vez!
DÚVIDAS?
Programação Avançada
040601707@prof.unama.br
2022
Notação assintótica
• É uma abstração que nos permite focar no que ocorre com f(n)
quando n cresce indefinidamente
• Termos de menor ordem não importam
• Constantes não importam
• f(n) = 2n3 + 4000n2 + 10000n - 47
Notação assintótica
• Notações
• As mais conhecidas são:
O
θ
Ω
Notação O [Big-O, Ozão ou Ozão de n]
• Definição
• Seja n um inteiro positivo e sejam f(n) e g(n) funções positivas.
Dizemos que
f(n) = O(g(n)) [ou f(n) é O(g(n))]
se existem constantes positivas c e n0 tais que
f(n) ≤ c.g(n) | n ≥ n0
Notação O [Big-O, Ozão ou Ozão de n]
• Informalmente, dizemos que se f(n) ∊ O(g(n)), então f(n) cresce
no máximo tão rapidamente quanto g(n).
• f(n) é um limite assintótico superior para g(n).
• Utilização:
• O Big-O representa o limite superior (pior caso)!
Notação O [Big-O, Ozão ou Ozão de n]
• Exemplo:
• Suponha um algoritmo X com tempo de execução O(n2):
• Os dados de entrada que geram o pior caso do algoritmo
X tem tempo de execução O(n2).
OU
• Não importando como os dados de entrada estão
organizados o algoritmo X possui tempo de execução
O(n2).
Notação O [Big-O, Ozão ou Ozão de n]
• Prova - Exemplo 1:
f(n) = 2n + 4
g(n) = n2 // achar c para satisfazer f(n) <= c.g(n):
Temos:
2n + 4 <= c.n2
2n + 4 <= 6.n2, sendo n >= 1
f(n) < 6.g(n) <-> f(n) < c.g(n), sendo c = 6
f(n) é O(g(n))
Notação O [Big-O, Ozão ou Ozão de n]
• Prova - Exemplo 2:
f(n) = 2n + 4
g(n) = n // achar c para satisfazer f(n) <= c.g(n):
Temos:
2n + 4 <= c.n => Se c for 4 = 4.g(n) para todo n >= 3
g(n) domina assintoticamente f(n) ou
f(n) é O(g(n))