As funções são sempre assintoticamente comparáveis?

15

Quando comparamos a complexidade de dois algoritmos, geralmente é o caso que ou g ( n ) = O ( f ( n ) ) (possivelmente ambos), onde f e g são os tempos de execução (por exemplo) dos dois algoritmos.f(n)=O(g(n))g(n)=O(f(n))fg

Esse sempre é o caso? Ou seja, faz pelo menos um dos relacionamentos e g ( n ) = O ( f ( n ) ) segure sempre, que é para funções gerais de f , g ? Caso contrário, quais suposições devemos fazer e (por que) tudo bem quando falamos sobre o tempo de execução do algoritmo?f(n)=O(g(n))g(n)=O(f(n))fg

Rafael
fonte

Respostas:

21

Nem todo par de funções é comparável à notação ; Considere as funções f ( n ) = N e g ( n ) = { 1 se  n  for ímpar , n 2 , se  n  é o mesmo . Além disso, funções como g ( n ) realmente surgem como tempos de execução de algoritmos. Considere o algoritmo óbvio de força bruta para determinar se um número inteiro n é primo:O()f(n)=n

g(n)={1if n is odd, n2if n is even.
g(n)n
IsPrime(n):
  for i ← 2 to (n-1)
     if i·⌊n/i⌋ = n
        return False
  return True

Este algoritmo requer as operações aritméticas quando n é par, ó ( Θ(1)noperações quandoné composto, masΘ(n)operações quandoné primo. Assim, formalmente, esse algoritmo éincomparávelcom um algoritmo que usaO(n)nΘ(n)n operações aritméticas paracadan.n n

Na maioria das vezes, quando analisamos algoritmos, queremos apenas um limite superior assintótico da forma para alguma função relativamente simples f . Por exemplo, a maioria dos livros didáticos informaria simplesmente (e corretamente) queé executada em O ( n ) operações aritméticas. Funções típicas de limite superior são produtos de exponenciais, polinômios e logaritmos (embora bestas mais exóticas, como fatoriais elogaritmos iterados,também apareçam ocasionalmente). Não é difícil provar que essas duas funções são comparáveis.O(f(n))fIsPrime(n)O(n)

Veja também esta pergunta do MathOverflow .

JeffE
fonte
7

Na wikipedia, definição de grande notação O:

se e somente se houver uma constante positiva M tal que, para todos os valores suficientemente grandes de , f ( x ) seja no máximo M multiplicado por g ( x ) em valor absoluto. Ou seja, f ( x ) O ( g ( x ) ) se e somente se existir um número real positivo M e um número real x 0 tal quexf(x)g(x)f(x)O(g(x))Mx0

|f(x)|<=M|g(x)|for allx>x0

O que acontece com funções que não convergem (para uma constante nem infinito)?

Veja as funções e g ( x ) = 10f(x)=|xsin(x)|g(x)=10

para cada , existe algum x > x 0 , tal que x = k π , portanto, f ( x ) = 0 - então, para cada M - M f ( x ) > g ( x ) produzirá falso eg ( x )x0x>x0x=kπf(x)=0MMf(x)>g(x)g(x)O(f(x))

No entanto, é fácil ver que também não é limitado por nenhuma constante; portanto, para cada M , x 0 , há alguns x > x 0, de modo que f ( x ) < M g ( x ) também produz falso, e f ( x ) O ( g ( x ) )|xsin(x)|Mx0x>x0f(x)<Mg(x)f(x)O(g(x))

Nota: por definição, se grande ó que permite que a diferença máxima entre constante e g ( x ) , a mesma ideia vai aplicar-se com g ( x ) = log ( xMf(x)g(x)g(x)=log(x)

amit
fonte
6

Aqui está um par monotônico estão algumas funções que não são assintoticamente comparáveis. Isso é relevante porque a maioria das complexidades que surgem na prática é de fato monotônica.

g ( x ) = Γ ( x - 1 / 2 + 3 / 2 )

f(x)=Γ(x+1 1)=x!
g(x)=Γ(x-1 1/2+3/2)

Aqui, é a função gama . A segunda função é especialmente construída para ser muito semelhante ao fatorial, apenas "amostrada" em pontos levemente deslocados na função gama. As funções se cruzam periodicamente de tal maneira que nenhuma delas é assintoticamente ligada pela outra.Γ

Ambroz Bizjak
fonte
4

euexp(2registrox+registroregistrox)/x2. Hardy provou que para cada duas funçõesf,geu que são positivos e tendem ao infinito, um dos seguintes é verdadeiro: f=o(g), f=ω(g), f/gtende a uma constante. Veja a página 18 de seu livro "Ordens do infinito".

O resultado é que quaisquer duas funções "simples" que ocorrem na análise do algoritmo são comparáveis. Aqui, "simples" significa que não há definição por casos (além de muitos casos-base finitos) e nenhuma função surpreendente aparece, como a função inversa de Ackermann, que às vezes aparece nos tempos de execução.

Yuval Filmus
fonte
Agradável! Vale ressaltar, no entanto, que elementos periódicos ocorrem com freqüência na análise de casos médios (do algoritmo d & c). As que eu conheço são ligadas por ambos os lados por constantes, para que não prejudiquem a comparabilidade assintótica.
Raphael