Python - Tipos de algoritmos

Se debe analizar la eficiencia y precisión de los algoritmos para compararlos y elegir un algoritmo específico para ciertos escenarios. El proceso de realización de este análisis se denomina análisis asintótico. Se refiere a calcular el tiempo de ejecución de cualquier operación en unidades matemáticas de cálculo. Por ejemplo, el tiempo de ejecución de una operación se calcula como f (n) y puede serlo para otra operación como g (n2). Esto significa que el tiempo de ejecución de la primera operación aumentará linealmente con el aumento de ny el tiempo de ejecución de la segunda operación aumentará exponencialmente cuando n aumente. De manera similar, el tiempo de ejecución de ambas operaciones será casi el mismo si n es significativamente pequeño.

Por lo general, el tiempo requerido por un algoritmo se divide en tres tipos:

  • Mejor caso: tiempo mínimo requerido para la ejecución del programa.
  • Caso promedio: tiempo promedio requerido para la ejecución del programa.
  • Peor caso: tiempo máximo necesario para la ejecución del programa.

Notaciones asintóticas

A continuación se muestran las notaciones asintóticas de uso común para calcular la complejidad del tiempo de ejecución de un algoritmo.

  • Ο Notación
  • Notación Ω
  • θ Notación

Notación de Big Oh, Ο

La notación Ο (n) es la forma formal de expresar el límite superior del tiempo de ejecución de un algoritmo. Mide la complejidad del tiempo en el peor de los casos o la mayor cantidad de tiempo que un algoritmo puede tardar en completarse.

Por ejemplo, para una función f(n)

Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that f(n) ≤ c.g(n) for all n > n0. }

Notación Omega, Ω

La notación Ω (n) es la forma formal de expresar el límite inferior del tiempo de ejecución de un algoritmo. Mide la mejor complejidad del tiempo del caso o la mejor cantidad de tiempo que un algoritmo puede tardar en completarse.

Por ejemplo, para una función f(n)

Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }

Notación theta, θ

La notación θ (n) es la forma formal de expresar tanto el límite inferior como el límite superior del tiempo de ejecución de un algoritmo. Se representa de la siguiente manera:

θ(f(n)) = { g(n) if and only if g(n) =  Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }

Notaciones asintóticas comunes

A continuación se muestra una lista de algunas notaciones asintóticas comunes:

constante - Ο (1)
logarítmico - Ο (log n)
lineal - Ο (n)
n log n - Ο (n log n)
cuadrático - Ο (n 2 )
cúbico - Ο (n 3 )
polinomio - n Ο (1)
exponencial - 2 Ο (n)