¿Las funciones son siempre asintóticamente comparables?

15

Cuando comparamos la complejidad de dos algoritmos, generalmente ocurre que o (posiblemente ambos), donde y son los tiempos de ejecución (por ejemplo) de los dos algoritmos.f(n)=O(g(n))g(n)=O(f(n))fg

Este es siempre el caso? Es decir, ¿al menos una de las relaciones y siempre es válida, es decir, para las funciones generales , ? Si no, ¿qué suposiciones tenemos que hacer y (por qué) está bien cuando hablamos de tiempos de ejecución de algoritmos?f(n)=O(g(n))g(n)=O(f(n))fg

Rafael
fuente

Respuestas:

21

No todos los pares de funciones son comparables con la notación ; considerar las funciones y Además, funciones como realmente surgen como tiempos de ejecución de algoritmos. Considere el algoritmo obvio de fuerza bruta para determinar si un número entero es primo:f ( n ) = n g ( n ) = { 1 si  n  es impar , n 2 si  n  es par . g ( n ) nO()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 requiere operaciones aritméticas cuando es par, operaciones cuando es compuesto, pero operaciones cuando es primo. Por lo tanto, formalmente, este algoritmo es incomparable con un algoritmo que usa operaciones aritméticas para cada .n O ( Θ(1)nnΘ(n)nO(n)nΘ(n)n nn n

La mayoría de las veces cuando analizamos algoritmos, solo queremos un límite superior asintótico de la forma para alguna función relativamente simple . Por ejemplo, la mayoría de los libros de texto simplemente reportarían (y correctamente) que se ejecuta en operaciones aritméticas . Las funciones de límite superior típicas son productos de exponenciales, polinomios y logaritmos (aunque las bestias más exóticas como factoriales y logaritmos iterativos también aparecen ocasionalmente). No es difícil demostrar que cualquiera de estas dos funciones sean comparables.f O ( n )O(f(n))fIsPrime(n)O(n)

Vea también esta pregunta de MathOverflow .

JeffE
fuente
7

De wikipedia, definición de notación O grande:

si y solo si hay una constante positiva M tal que para todos los valores suficientemente grandes de , es como máximo M multiplicado por en valor absoluto. Es decir, si y solo si existe un número real positivo y un número real tal quef ( x ) g ( x ) f ( x ) O ( g ( x ) ) M x 0xf(x)g(x)f(x)O(g(x))Mx0

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

¿Qué sucede para las funciones que no convergen (a una constante ni al infinito)?

Mire las funcionesyg ( x ) = 10f(x)=|xsin(x)|g(x)=10

para cada , hay algo de , de modo que , por lo tanto , por lo que para cada - dará falso, y x > x 0 x = k π f ( x ) = 0 M M f ( x ) > g ( x ) g ( x )x0x>x0x=kπf(x)=0MMf(x)>g(x)g(x)O(f(x))

Sin embargo, es fácil ver quetampoco está limitado por ninguna constante, por lo tanto, para cada , , hay algo de modo que también dará falso, y|xsin(x)|Mx0x>x0f(x)<Mg(x)f(x)O(g(x))

Nota: para la definición, si O grande que permite una diferencia máxima constante entre y , la misma idea se aplicará conMf(x)g(x)g(x)=log(x)

amit
fuente
6

Aquí hay un par de funciones monotónicas que no son asintóticamente comparables. Esto es relevante porque la mayoría de las complejidades que surgen en la práctica son de hecho monótonas.

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

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

Aquí, es la función gamma . La segunda función está especialmente construida para ser muy similar a la factorial, simplemente "muestreada" en puntos ligeramente desplazados en la función gamma. Las funciones se cruzan periódicamente entre sí de tal manera que ninguna está unida asintóticamente por la otra.Γ

Ambroz Bizjak
fuente
4

Sea la clase de funciones obtenidas de la función de identidad y las constantes utilizando las siguientes operaciones: suma, resta, multiplicación, división, logaritmo y exponencial. Por ejemplo, exp ( 2 L. Hardy demostró que por cada dos funcionesf,gLque son positivas y tienden al infinito, una de las siguientes es verdadera:f=o(g),f=ω(g),f/gtiende a una constante. Ver página 18 de su libro "Órdenes del infinito".exp(2logx+loglogx)/x2f,gLf=o(g)f=ω(g)f/g

El resultado es que cualquiera de las dos funciones "simples" que ocurren en el análisis del algoritmo son comparables. Aquí "simple" significa que no hay definición por casos (aparte de muchos casos base finitos), y no aparecen funciones sorprendentes, como la función inversa de Ackermann que a veces figura en tiempos de ejecución.

Yuval Filmus
fuente
¡Agradable! Sin embargo, es digno de mención que los elementos periódicos ocurren con frecuencia en el análisis de casos promedio (del algoritmo d & c). Los que conozco están unidos a ambos lados por constantes, por lo que no perjudican la comparabilidad asintótica.
Raphael