¿Alguien podría explicar la diferencia entre los algoritmos de tiempo polinomial, tiempo no polinómico y tiempo exponencial?
Por ejemplo, si un algoritmo toma O (n ^ 2) tiempo, ¿en qué categoría está?
¿Alguien podría explicar la diferencia entre los algoritmos de tiempo polinomial, tiempo no polinómico y tiempo exponencial?
Por ejemplo, si un algoritmo toma O (n ^ 2) tiempo, ¿en qué categoría está?
Respuestas:
Mira esto .
Exponencial es peor que polinomio.
O (n ^ 2) cae en la categoría cuadrática, que es un tipo de polinomio (el caso especial del exponente es igual a 2) y mejor que exponencial.
Exponencial es mucho peor que polinomio. Mira como crecen las funciones
n = 10 | 100 | 1000
n^2 = 100 | 10000 | 1000000
k^n = k^10 | k^100 | k^1000
k ^ 1000 es excepcionalmente grande a menos que k sea más pequeño que algo así como 1.1. Por ejemplo, algo así como cada partícula del universo tendría que hacer 100 mil millones de billones de billones de operaciones por segundo durante billones de billones de billones de años para lograrlo.
No lo calculé, pero ES ASÍ DE GRANDE.
A continuación se muestran algunas funciones comunes de Big-O al analizar algoritmos.
(n = tamaño de la entrada, c = alguna constante)
Aquí está el gráfico modelo que representa la complejidad Big-O de algunas funciones
salud :-)
créditos gráficos http://bigocheatsheet.com/
O (n ^ 2) es el tiempo polinomial. El polinomio es f (n) = n ^ 2. Por otro lado, O (2 ^ n) es el tiempo exponencial, donde la función exponencial implícita es f (n) = 2 ^ n. La diferencia es si la función de n coloca a n en la base de una exponenciación o en el exponente mismo.
Cualquier función de crecimiento exponencial crecerá significativamente más rápido (a largo plazo) que cualquier función polinomial, por lo que la distinción es relevante para la eficiencia de un algoritmo, especialmente para valores grandes de n.
Tiempo polinomial.
Un polinomio es una suma de términos que parecen Constant * x^k
exponencial significa algo comoConstant * k^x
(en ambos casos, k es una constante y x es una variable).
El tiempo de ejecución de los algoritmos exponenciales crece mucho más rápido que el de los polinomiales.
Exponencial (tiene una función exponencial si MINIMAL ONE EXPONENT depende de un parámetro):
Polinomio (tiene una función polinomial si NO EXPONENTE depende de algunos parámetros de la función):
tiempo polinomial O (n) ^ k significa El número de operaciones es proporcional a la potencia k del tamaño de la entrada
tiempo exponencial O (k) ^ n significa El número de operaciones es proporcional al exponente del tamaño de la entrada
o (n sequre) es complejidad de tiempo polinimal mientras que o (2 ^ n) es complejidad de tiempo exponencial si p = np en el mejor de los casos, en el peor de los casos p = np no es igual porque cuando el tamaño de entrada n crece tanto o el tamaño de entrada aumenta tanto más tiempo va al peor de los casos y manejo, por lo que la tasa de crecimiento de la complejidad aumenta y depende del tamaño n de la entrada cuando la entrada es pequeña es polinimal cuando el tamaño de la entrada es grande y grande, por lo que p = np no es igual, significa que la tasa de crecimiento depende del tamaño de la entrada "N ". optimización, sat, clique e independ set también se encontraron en exponencial a polinimal.