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

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 .


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)


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.Γ


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.