Notação de Landau
Nesta página
Todas as cinco classes do sistema Landau descrevem o comportamento assiptótico, ou seja, o comportamento quando o tamanho do problema tende ao infinito. Embora isso possa parecer irrelevante para nossos – muito finitos – problemas do mundo real, a experiência mostrou que o comportamento dos algoritmos do mundo real reflete esse comportamento infinito bem o suficiente em dados reais para ser de uso prático.
Grande O
A notação Big O fornece limites superiores para o crescimento de funções. Intuitivamente para f ∊ O(g)
, f
cresce no máximo tão rápido quanto g
.
Formalmente f ∊ O(g)
se e somente se existe um número positivo C
e um número positivo ``n tal que para todos os números positivos m > n
temos
C⋅g(m) > f(m).
Intuição desta definição
Intuição sobre C
C
é responsável pela deglutição de fatores constantes nas funções. Se h
é duas vezes f
, ainda temos h ∊ O(g)
já que C
pode ser duas vezes maior. Para isso, existem duas razões:
- Notação mais fácil:
f ∊ O(n)
é preferível af ∊ O(7.39 n)
. - Abstração: Quaisquer unidades de tempo são engolidas nessas considerações porque não há nada a ganhar com elas; eles diferem entre as máquinas e os algoritmos podem ser avaliados sem isso. Como
C
engole fatores constantes, as classes de complexidade permanecem as mesmas mesmo em uma máquina dez vezes mais rápida.
Intuição sobre n
n
é responsável pelas turbulências iniciais da deglutição. Um algoritmo pode ter uma sobrecarga de inicialização enorme para pequenas entradas, mas compensa a longo prazo. A escolha de n
permite entradas suficientemente grandes para obter o foco enquanto o trecho inicial é ignorado.
Intuição sobre m
m
abrange todos os valores maiores que n
- para formalizar a ideia “de n
em diante, isso vale”.