¿Otros tipos de análisis de tiempo de ejecución además del peor de los casos, el caso promedio, etc.?


22

Aquí hay algunas formas de analizar el tiempo de ejecución de un algoritmo:

1) Análisis del peor de los casos: tiempo de ejecución en la peor instancia.

2) Análisis de casos promedio: tiempo de ejecución esperado en una instancia aleatoria.

3) Análisis amortizado: tiempo promedio de ejecución en la peor secuencia de instancias.

4) Análisis suavizado: tiempo de ejecución esperado en la peor instancia perturbada aleatoriamente.

5) Análisis de casos genéricos: tiempo de ejecución en el peor de todos, excepto un pequeño subconjunto de instancias.

Mi pregunta: ¿es esta una lista completa?


2
Supongo que este tipo de lista nunca puede ser exhaustiva.
Tsuyoshi Ito

Respuestas:


8

La óptima instancia es una propiedad muy interesante de los algoritmos. Uno puede generalizar las nociones de optimismo de instancia y crear nociones sorprendentemente interesantes que incluyen el análisis del peor de los casos y el análisis del caso promedio.

Aunque no pertenece estrictamente al análisis de algoritmos tradicionales, es interesante por derecho propio. La idea en un artículo de Afshani-Barbay-Chan (FOCS '09) que discute un algoritmo geométrico considera el rendimiento del algoritmo ajeno al orden de entrada (que es relevante para su problema particular).

Se puede ver que se generaliza de la siguiente manera: para cada algoritmo, particione las entradas en clases de equivalencia y considere el rendimiento del algoritmo como una especie de estadística colectiva sobre el rendimiento promedio para cada una de estas clases de equivalencia.

El análisis del peor de los casos simplemente mira la entrada como clases de equivalencia individuales y calcula el tiempo de ejecución máximo. El análisis de casos promedio analiza la clase de equivalencia trivial, que es una sola que comprende todas las entradas. En el artículo de Afshani-Barbay-Chan, su algoritmo es óptimo si la entrada se divide en clases de permutaciones (es decir, el rendimiento ajeno al orden).

No está claro si esto conduce a nuevos paradigmas de análisis de algoritmos. El curso de Tim Roughgarden tiene excelentes ejemplos motivadores y cubre diferentes métodos para analizar algoritmos.


Ananth, muchas gracias por el enlace al curso de Tim. Ese es exactamente el tipo de cosas que estaba buscando.
umar

14

Tengo dos más para la lista, que son algo similares.

  1. O(cnnO(1))1<c<2kO(2knO(1))kn

  2. O(nlogn+k)k


8

O(nlogn)

Parece que el Análisis parametrizado para algoritmos de tiempo polinomial, y parece que el análisis sensible a la salida cae en esta categoría.


Serge, gracias por el enlace a la publicación del blog de Glencora, hay muchos comentarios interesantes allí.
umar

7

También hay un análisis de " alta probabilidad " (para algoritmos aleatorios), donde, en cualquier caso, le preocupa qué tan bien funcionará su algoritmo la mayor parte del tiempo, pero puede renunciar por completo una pequeña fracción del tiempo. Esto es común en la teoría del aprendizaje.


4

Puede agregar aleatoriedad a su algoritmo y combinarlo con todo lo anterior. Entonces obtendrá, por ejemplo, el tiempo de ejecución esperado en el peor de los casos (peor de los casos, pero promediado sobre todas las secuencias posibles de monedas al azar en el algoritmo) y el tiempo de peor de los casos con alta probabilidad (nuevamente, el peor de los casos, pero la probabilidad sobre las monedas al azar se voltea en el algoritmo).


3

El análisis biyectivo es una forma de comparar dos algoritmos (Spyros Angelopoulos, Pascal Schweitzer: Paginación y actualización de la lista bajo análisis biyectivo. J. ACM 60, 2013): Aproximadamente, el Algoritmo A es mejor que el Algoritmo B en entradas de longitud n si hay un biyección f de las entradas de longitud n de modo que A se desempeñe en la entrada x al menos tan bueno como B en f (x).


1

Análisis competitivo

Se utiliza para comparar algoritmos en línea con los algoritmos de rendimiento fuera de línea. Ver la página de wikipedia . El problema de Actualización de la lista es un ejemplo clásico.


1
Pero no se utiliza para analizar "el tiempo de ejecución de un algoritmo" .
Jukka Suomela

0

Análisis competitivo En el algoritmo de reemplazo de página , un método sobrepasa al otro al faltar menos páginas. Falta menos página ilustra "menos tiempo de ejecución". Además, el análisis competitivo es un método para comparar dos métodos relativamente. Un buen libro de referencia es "COMPUTACIÓN EN LÍNEA Y ANÁLISIS COMPETITIVO" de Allan Borodin.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.