Paradigmas para el análisis de complejidad de algoritmos

16

El análisis del caso peor y el caso promedio son medidas bien conocidas para la complejidad de un algoritmo. El análisis suavizado recientemente ha surgido como otro paradigma para explicar por qué algunos algoritmos que son exponenciales en el peor de los casos funcionan tan bien en la práctica, por ejemplo, el algoritmo simplex.

Mi pregunta es: ¿hay otros paradigmas para medir la complejidad de un algoritmo? Estoy particularmente interesado en los que intentan explicar por qué algunos algoritmos que tienen una mala complejidad en el peor de los casos funcionan bien en la práctica.

Optar
fuente

Respuestas:

21

Existen variantes naturales del análisis del peor de los casos que también son útiles. Quizás el más famoso es la complejidad parametrizada. Aquí, consideramos una medida "bidimensional": la longitud de entrada usual algunos enteros adicionales no negativos k , el parámetro. Aunque un algoritmo puede ejecutarse horriblemente en el peor de los casos (para todos los valores de n y k ), podría ser que todos los casos en la aplicación que necesitan ser resueltos, este parámetro k sea ​​bajo, por lo que el algoritmo funciona bien en esos casos.norteknortekk

10O(2k(El |miEl |+El |VEl |))

[1] R. Niedermeier, Invitación a algoritmos de parámetros fijos. Oxford Lecture Series in Mathematics and its Applications, Oxford University Press, Oxford, 2006.

Ryan Williams
fuente
15

Existe una complejidad amortizada: por qué algunas operaciones pueden ser costosas en el peor de los casos, pero si considera muchas operaciones, el costo promedio por operación es bueno.

Un ejemplo clásico es una estructura de datos que se vacía cuando está llena copiando todos sus elementos en algún almacenamiento. La operación de copia puede ser costosa, pero no sucede a menudo: debe insertar elementos suficientes en la estructura de datos para provocarla.

Dana Moshkovitz
fuente