¿Cuál es el límite superior en el algoritmo simplex para encontrar una solución a un programa lineal?
¿Cómo haría para encontrar una prueba para tal caso? Parece que el peor de los casos es si cada vértice tiene que ser visitado, es decir, . Sin embargo, en la práctica, el algoritmo simplex se ejecutará significativamente más rápido que esto para problemas más estándar.
¿Cómo puedo razonar sobre la complejidad promedio de un problema que se resuelve usando este método?
Cualquier información o referencias son muy apreciadas!
ds.algorithms
linear-programming
simplex
smoothed-analysis
lanzadera87
fuente
fuente
Respuestas:
El algoritmo simplex de hecho visita los vértices en el peor de los casos ( Klee & Minty 1972 ), y esto resulta ser cierto para cualquier regla de pivote determinista. Sin embargo, en un artículo histórico que utiliza un análisis suavizado, Spielman y Teng (2001) demostraron que cuando las entradas al algoritmo se alteran ligeramente al azar, el tiempo de ejecución esperado del algoritmo simplex es polinómico para cualquier entrada; esto básicamente dice que para Si hay algún problema "cercano" que el método simple resolverá de manera eficiente, y prácticamente cubre todos los programas lineales del mundo real que le gustaría resolver. Posteriormente, Kelner y Spielman (2006) presentaron2n un algoritmo simplex aleatorio de tiempo polinómico que truley funciona en cualquier entrada, incluso las malas para el algoritmo simplex original.
fuente
Como dijo Lev, en el peor de los casos el algoritmo visita todos los vértices donde es el número de variables. Sin embargo, el rendimiento del algoritmo simplex también puede depender en gran medida de la regla de pivote específica utilizada. Hasta donde sé, todavía es una pregunta abierta si existe una regla de pivote determinista específica con un tiempo de ejecución sub-exponencial en el peor de los casos. Muchos candidatos han sido descartados por resultados de límite inferior. Recientemente, Friedmann, Hansen y Zwick también mostraron los primeros límites inferiores no polinómicos para algunas reglas de pivote aleatorizado natural con algunas correcciones proporcionadas más adelante .2d d
Sin embargo, añadiendo al resultado del análisis suavizado mencionado por Lev: Siguiendo el artículo seminal de Spielman y Tengs que presenta el análisis suavizado, Vershynin mejoró aún más sus límites en 2006. Mostró que el tiempo de ejecución esperado en casos ligeramente perturbados es solo polilogarítmico en el número de restricciones , por debajo de .n n86
fuente
Para obtener información sobre el análisis del caso simple y el caso más desfavorable del método simplex, debe leer "Análisis suavizado: por qué el algoritmo simplex generalmente requiere tiempo polinomial". por Spielman y Teng.
fuente
Una buena referencia sobre por qué simplex no se ejecuta en tiempo polinomial, en lugar de por qué es exponencial es Papadimitriou & Steiglitz Combinatorial Optimization, Sección 8.6, en la que demuestran que Simplex no es un algoritmo de tiempo polinomial.
fuente
¿Alguien puede sugerir otras formas de construir problemas difíciles para el método simplex, lento pero no vinculado a la memoria?
Agregado: los cuadrados latinos, también conocidos como matrices de permutación 3d, parecen tener muchos vértices, ¿cuántos?
La teoría y la práctica están más cerca en teoría que en la práctica.
fuente
El algoritmo Simplex original puede divergir; se cicla en ciertos casos. Por lo tanto, no hay límite general. Otras respuestas le proporcionan respuestas para las diversas modificaciones del algoritmo Simplex.
fuente