Complejidad del algoritmo simplex

36

¿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.O(2n)

¿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!

lanzadera87
fuente
55
Tenga en cuenta que, como dijo mashca en una respuesta , en realidad no tenemos "el algoritmo simplex". Hay muchos algoritmos simplex diferentes según la elección de una regla pivotante.
Tsuyoshi Ito
2
Un cubo en la dimensión tiene vértices, y esto es un límite superior para cualquier variante simple en cubos (por ejemplo, Klee-Minty). Sin embargo, hay poliedros en la dimensión con facetas, como los politopos dobles cíclicos, con más de vértices, por lo que no es un límite superior inmediato para el tiempo de ejecución del método simplex para matrices de restricción cuadradas en general. n2nn2n2n2n
Rahul Savani

Respuestas:

72

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.

Lev Reyzin
fuente
36

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 .2dre

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 .nn86

Matías
fuente
44
y como JeffE señaló en una pregunta diferente ( cstheory.stackexchange.com/questions/2149/… ), el mejor método subexponencial actual es una especie de dual simplex.
Suresh Venkat
El enlace al artículo de Vershynin está muerto.
kutschkem
8

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.

Christina Boucher
fuente
3

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.

hiperboreeano
fuente
1

D=200

GLPK Simplex Optimizer, v4.65
200 rows, 200 columns, 20100 non-zeros
Preprocessing...
199 rows, 200 columns, 20099 non-zeros
Scaling...
 A: min|aij| =  1.000e+00  max|aij| =  1.607e+60  ratio =  1.607e+60
...
Constructing initial basis...
Size of triangular part is 199
*     0: obj =   0.000000000e+00 inf =   0.000e+00 (200)
*     1: obj = -6.223015278e+139 inf =   0.000e+00 (0)
OPTIMAL LP SOLUTION FOUND
Time used:   0.0 secs
Memory used: 3.4 Mb

¿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.

Denis
fuente
-1

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.

MdAyq7
fuente