Espacios de nombres
Variantes
Acciones

Tiempo de ejecución

De cppreference.com
< cpp


Existen distintos modos de medir el tiempo de ejecución de un algoritmo. Dada una entrada de tamaño N, se los puede describir del siguiente modo.

Nombre Tiempo Descripción Formula Ejemplo
factorial lentisimo su tiempo de ejecución es proporcional a N elevado a la N-ésima potencia N! Solución de fuerza bruta al problema del vendedor viajero
exponencial lento su tiempo de ejecución es proporcional a una constante elevada a la N-ésima potencia KNSolución de fuerza bruta para la resolución del cubo mágico o cubo de Rubik
polinomial rápido su tiempo de ejecución es proporcional a N elevado a una constante NKOrdenación por comparación (algoritmos de burbuja, inserción y selección)
logarítmico lineal más rápido su tiempo de ejecución esta entre el lineal y el polinomial N * log(N) Ordenación logaritmica lineal (quicksort, heapsort, mergesort)
lineal aún más rápido su tiempo de ejecución es proporcional a N K * N El recorrido de un arreglo
logarítmico mucho más rápido su tiempo de ejecución es proporcional al logaritmo de N K * log(N) Búsqueda binaria
constante rapidisimo siempre toma el mismo tiempo sin importar cuán grande sea N K Visualización de el elemento i-ésimo en un arreglo

[editar]Analisis de Complejidad

Una operación puede tener diversos tiempo de ejecución/complejidad para distintos órdenes o conjuntos de datos de entrada. Estos son los diferentes métodos para analisis de complejidad:

Nombre Descripción Ejemplo
mejor caso Es es el caso en el que la operación se ejecuta tan rapido como es posible La ordenación por burbuja tiene una complejidad de tiempo de mejor caso N
caso promedio Es el caso donde la operación se ejecuta en un periodo de tiempo comparable a la mayoría de los casos posibles El algoritmo quicksort tiene un tiempo de complejidad promedio de N * log(N)
peor caso Es donde la operación se ejeucta lo mas lento posible El algoritmo quicksort tiene un tiempo de complejidad en el peor de los casos de N2
peor caso amortizado Seria el promedio de el peor caso sobre un conjunto infinito de datos de entrada vector::push_back() tiene un tiempo de complejidad amortizado en el peor de sus casos de K (tiempo constante)

La elección de el mejor algoritmo depende de que casos se espera que la aplicación encuentre. Por ejemplo, una aplicación que deba protegerse a si misma de entradas maliciosas siempre evitara malas implementaciones de quickort que tiene un peor caso de complejidad de N2 aun cuando en su caso promedio mas rapido es mejor comparado con los otros algoritmos de ordenación.

close