¿Por qué la complejidad temporal no devuelve el tiempo de ejecución exacto de un algoritmo?

Cuando determina la complejidad de tiempo de un algoritmo, proviene de formular una función de crecimiento que represente el tiempo de ejecución (hay muchas maneras de encontrar esto). Si usa un análisis exacto (dependiendo de la situación que esté analizando), puede formular el tiempo de ejecución exacto en esa situación.

¿Por qué no lo hace? Porque cuando usamos la notación asintótica, solo nos importa el tiempo de ejecución asintóticamente con respecto al tamaño de entrada . Las constantes para cada operación básica se pierden en esta notación. Entonces, el proceso de obtener el tiempo de ejecución exacto (debe tener cuidado aquí, ya que generalmente intentamos usar un tipo de análisis) se encuentra formulando la función de crecimiento. Esta función de crecimiento se utiliza para determinar el comportamiento asintótico del algoritmo en esa situación, de ahí la complejidad del tiempo.

¡Espero que esto ayude!

Mientras analizamos un algoritmo, seguimos el análisis APRIORI, en el que nuestro análisis es independiente del lenguaje de programación y del tipo de procesador. Y, por lo tanto, obtenemos la respuesta aproximada en lugar de la respuesta exacta.

ANÁLISIS APRIORI: – Es la determinación del orden de magnitud de una declaración.

ORDEN DE MAGNITUD DE UNA DECLARACIÓN: – Número de veces que la declaración se ejecutará mientras se ejecuta.

Nota: – Es por eso que durante el cálculo de la Complejidad de Tiempo de un Algoritmo, las constantes son ignoradas.

Porque no es un cálculo. Es una notación BIG OH aproximada. Sabes que te dice el límite superior del tiempo de ejecución de los algoritmos. Al igual que si hay un bucle que se ejecuta n / 2 veces, le dará aproximadamente O (n) complejidad de tiempo. Cuenta cientos de instrucciones de una sola línea como tiempo constante O (1). Entonces, aquí la complejidad del tiempo, especialmente Big Oh, no proporciona el tiempo de cálculo exacto, sino solo una aproximación del tiempo con respecto a la entrada. Para obtener más referencias, debe consultar el primer capítulo de Introducción a los algoritmos de CLRS.

Muchas rasones.

Primero, los algoritmos no tienen tiempo de ejecución: solo tienen complejidad. Las implementaciones tienen tiempo de ejecución. Es posible tener implementaciones eficientes e ineficientes del mismo algoritmo, que tendrán diferentes tiempos de ejecución dados los mismos datos de entrada.

En segundo lugar, la complejidad del tiempo solo relaciona el número de operaciones con el número de elementos de entrada. Esas operaciones pueden ser rápidas ( por ejemplo, comparaciones de clasificación) o lentas ( por ejemplo , movimientos de bloque o copias). Esto significa que la complejidad del tiempo no puede hacer predicciones sobre el tiempo transcurrido ejecutando una implementación de un algoritmo. Puede ver esto usted mismo realizando los pasos de clasificación rápida manualmente con una pila de naipes, y observando que realiza la tarea más lentamente que una computadora, mientras sigue el mismo algoritmo.

Tercero, muchos algoritmos no tienen una sola medida de complejidad temporal. La complejidad del tiempo depende en muchos casos de las características de entrada. Por esta razón, a menudo verá las complejidades de tiempo en el mejor de los casos, el peor de los casos y el caso promedio expresadas para un algoritmo. Un conjunto de datos de entrada particular puede caer en cualquier parte de ese continuo.

More Interesting

¿Cuál es la solución a este problema algorítmico que involucra gráficos y estructuras de datos?

¿Cuál es el algoritmo generador de números aleatorios más avanzado disponible ahora?

¿Algunos algoritmos de ML son más vulnerables a los conjuntos de entrenamiento desequilibrados que otros? ¿Por qué?

¿Cómo es constante la cadena STL C_str () cuando la clase misma es como una matriz dinámica?

Cómo crear un sistema de clasificación que dependa de tres variables (nivel, resultado y tiempo) cuanto más altas sean las dos primeras, mejor, mientras que por un tiempo, un valor menor es mejor

¿Cuál es la mejor manera de enseñarme a resolver problemas con algoritmos en Java Script? Ese es mi problema número uno hasta ahora. Soy un principiante, obviamente.

Cómo implementar la implementación de la pila y la cola en las estructuras de datos

¿Cuáles son algunos de sus mejores algoritmos de C ++ o C que está orgulloso de haber escrito?

Cómo minimizar el diámetro de un árbol si puede cambiar como máximo un borde del árbol

¿El mismo algoritmo pertenece a algo, incluyendo política, mecánica cuántica, arte, deportes e ingeniería?

¿Pueden algunos explicarme la lógica detrás del siguiente problema El oso hambriento?

¿Conoces alguna biblioteca de diario E2PROM que pueda usarse en controladores de 8 bits o al menos un algoritmo para hacerlo?

¿Cómo debo entender los "Teoremas de no almuerzo gratis para la optimización"?

¿Por qué falla este método para encontrar la enésima posición de un nodo en una lista vinculada?

¿El uso de algoritmos en una clave de contraseña típica de 256 bits que siempre está cambiando pero que aún se muestra al usuario (como en un teléfono, por ejemplo) para crear código requeriría supercomputadoras más rápidas disponibles para superarlo?