Dos formas de analizar la eficiencia de un algoritmo son
- poner un límite superior asintótico en su tiempo de ejecución, y
- para ejecutarlo y recopilar datos experimentales.
Me pregunto si hay casos conocidos en los que haya una brecha significativa entre (1) y (2). Con esto quiero decir que (a) los datos experimentales sugieren un asintótico más estricto o (b) existen algoritmos X e Y, de modo que el análisis teórico sugiere que X es mucho mejor que Y y los datos experimentales sugieren que Y es mucho mejor que X.
Dado que los experimentos generalmente revelan un comportamiento de caso promedio, espero que las respuestas más interesantes se refieran a los límites superiores de caso promedio. Sin embargo, no quiero descartar posibles respuestas interesantes que hablan de diferentes límites, como la respuesta de Noam sobre Simplex.
Incluir estructuras de datos. Por favor, ponga un algo / ds por respuesta.
fuente
Respuestas:
El ejemplo más deslumbrante es, por supuesto, el método Simplex que se ejecuta rápidamente en la práctica, sugiriendo poli-timeness, pero lleva un tiempo exponencial en teoría. Dan Spielman acaba de recibir el premio Nevanlinna en gran medida por explicar este misterio.
En términos más generales, muchas instancias de programación de enteros se pueden resolver bastante bien utilizando solucionadores de IP estándar, por ejemplo, se podrían resolver subastas combinatorias para la mayoría de las distribuciones intentadas en entradas de tamaño significativo: http://www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf
fuente
Bases Groebner . El peor tiempo de ejecución es doblemente exponencial (en el número de variables). Sin embargo, en la práctica, especialmente para problemas bien estructurados, los algoritmos F4 y F5 son efectivos (es decir, terminan bastante rápido). Todavía es un área activa de investigación para determinar cuál debería ser la conjetura adecuada incluso con respecto al tiempo de ejecución promedio o esperado. Se conjetura que está relacionado, de alguna manera, con el volumen del politopo de Newton del ideal subyacente.
fuente
No sé si hay un resultado formal en la complejidad promedio / suavizada del problema, pero recuerdo haber leído que existía, tal vez alguien más pueda sonar para señalar un resultado formal. Ciertamente, hay una gran cantidad de evidencia experimental y muchos solucionadores rápidos. También tengo curiosidad si esta propiedad se extiende a otros miembros de la familia completa de IG.
fuente
De David Johnson, una discrepancia en las relaciones de aproximación teórica versus experimental: El problema del vendedor ambulante: un estudio de caso en optimización local, DS Johnson y LA McGeoch . En este artículo, proporcionan evidencia experimental de asintóticos (¡ya que los experimentos alcanzan un tamaño de N = 10,000,000!) Que desafían los asintóticos teóricos: el algoritmo "Greedy" o "Multi-Fragment" de Jon Bentley (relación de aproximación en el peor de los casos al menos logN / loglogN) supera la inserción más cercana y la MST doble, las cuales tienen relaciones de aproximación de 2 en el peor de los casos.
fuente
Otro ejemplo que no se ha entendido bien hasta hace poco es el tiempo de ejecución del algoritmo k-means de Lloyd , que (desde un punto de vista práctico) ha sido el algoritmo de agrupamiento elegido por más de 50 años. Recientemente, en 2009, se demostró (por Vattani ) que, en el peor de los casos, el algoritmo de Lloyd requiere una serie de iteraciones que es exponencial en el número de puntos de entrada. Por otro lado, al mismo tiempo, un análisis suavizado (por Arthur, Manthey y Röglin ) demostró que el número suavizado de iteraciones es meramente polinomial, lo que explica el rendimiento empírico.
fuente
Los corolarios transversales, de deque y divididos de la conjetura de la optimización dinámica para árboles de separación son ejemplos de tales brechas. Los experimentos respaldan la afirmación del tiempo lineal, pero no hay pruebas conocidas.
fuente
Hay un pequeño problema con la pregunta. De hecho, hay más de dos formas de analizar un algoritmo, y una de las formas teóricas que se ha descuidado es el tiempo de ejecución esperado, en lugar del peor tiempo de ejecución. Es realmente este comportamiento de caso promedio lo que es relevante para hacer experimentos. Aquí hay un ejemplo muy simple: imagine que tiene un algoritmo para una entrada de tamaño n, que toma tiempo n para cada entrada posible de tamaño n, excepto para una entrada específica de cada longitud que lleva tiempo 2 ^ n. Escuche que el peor tiempo de ejecución es exponencial, pero el caso promedio es [(2 ^ n -1) n + (2 ^ n) 1] / (2 ^ n) = n - (n-1) / 2 ^ n que límites a n. Claramente, los dos tipos de análisis dan respuestas muy diferentes, pero esto es de esperarse ya que estamos calculando diferentes cantidades.
Al ejecutar el experimento varias veces, incluso si tomamos el tiempo de ejecución más largo para la muestra, todavía solo estamos muestreando una pequeña porción del espacio de posibles entradas, por lo que si las instancias difíciles son raras, es probable que las perdamos .
Es relativamente fácil construir tal problema: si los primeros n / 2 bits son todos cero, entonces resuelva la instancia 3SAT codificada con los últimos n / 2 bits. De lo contrario rechazar. A medida que n aumenta, el problema tiene aproximadamente el mismo tiempo de ejecución en el peor de los casos que el algoritmo más eficiente para 3SAT, donde el tiempo de ejecución promedio es muy bajo.
fuente
La inferencia de tipo Damas-Milner se ha demostrado completa por tiempo exponencial, y hay casos fáciles de construir con explosión exponencial en el tamaño de un resultado. Sin embargo, en la mayoría de las entradas del mundo real se comporta de manera efectivamente lineal.
fuente
El PTAS para el árbol de Steiner en gráficos planos tiene una dependencia ridícula del épsilon. Sin embargo, hay una implementación que muestra un rendimiento sorprendentemente bueno en la práctica.
fuente
Emparejamiento de montones, desde [1]: implementan montones, donde insertar y fusionar tienen O (log n) complejidad amortizada, pero se conjetura que son O (1). En la práctica, son extremadamente eficientes, especialmente para usuarios de fusión.
Los descubrí hoy mientras leía la Sec. 5.5 del libro de C. Okasaki "Estructuras de datos puramente funcionales", así que pensé que debería compartir información sobre ellos.
[1] Fredman, ML, Sedgewick, R., Sleator, DD y Tarjan, RE 1986. El montón de emparejamiento: una nueva forma de montón autoajustable. Algorithmica 1, 1 (enero de 1986), 111-129. DOI = http://dx.doi.org/10.1007/BF01840439
fuente
Relacionado con el comentario de ilyaraz sobre rama y atado, Pataki et al. demuestre que la reducción de la base de la rama y el límite más la red puede resolver casi todas las IP aleatorias en polytime.
fuente
La heurística de Lin-Kernighan para el TSP ("Una heurística efectiva para el problema del vendedor ambulante", Operations Research 21: 489–516, 1973) es muy exitosa en la práctica, pero aún carece de un análisis de caso medio o suavizado para explicar su desempeño. . Por el contrario, Matthias Englert, Heiko Röglin y Berthold Vöcking (Algorithmica, por aparecer) analizan la heurística de 2 opciones para el TSP.
fuente
Existen muchos algoritmos muy rápidos y eficientes en la práctica de ramificación y unión para diferentes problemas NP-hard que no podemos analizar rigurosamente: TSP, árbol Steiner, empaquetado de contenedores, etc.
fuente