Complexidade do algoritmo simplex

36

Qual é o limite superior do algoritmo simplex para encontrar uma solução para um programa linear?

Como eu iria encontrar uma prova para esse caso? Parece que o pior caso é se cada vértice tiver que ser visitado, ou seja, . No entanto, na prática, o algoritmo simplex será executado significativamente mais rápido que isso, para problemas mais comuns.O(2n)

Como raciocinar sobre a complexidade média de um problema que está sendo resolvido usando esse método?

Todas as informações ou referências são muito apreciadas!

shuttle87
fonte
5
Observe que, como a mashca disse em uma resposta , não temos realmente “o algoritmo simplex”. Existem muitos algoritmos simplex diferentes, dependendo da escolha de uma regra de rotação.
Tsuyoshi Ito
2
Um cubo na dimensão tem vértices e, portanto, esse é um limite superior para qualquer variante simplex em cubos (por exemplo, Klee-Minty). No entanto, existem poliedros na dimensão com facetas , como polítopos cíclicos duplos, com mais de vértices, portanto não é um limite superior imediato para o tempo de execução do método simplex para matrizes de restrição quadrada em geral. 2 n n 2 n 2 n 2 nn2nn2n2n2n
Rahul Savani 02/02

Respostas:

72

De fato, o algoritmo simplex visita todos os vértices no pior caso ( Klee & Minty, 1972 ), e isso se aplica a qualquer regra de pivô determinística. No entanto, em um artigo de referência usando uma análise suavizada, Spielman e Teng (2001) provaram que, quando as entradas do algoritmo são levemente perturbadas aleatoriamente, o tempo de execução esperado do algoritmo simplex é polinomial para todas as entradas - isso basicamente diz que, para qualquer problema, existe um problema "próximo" que o método simplex resolverá com eficiência e abrange praticamente todos os programas lineares do mundo real que você gostaria de resolver. Posteriormente, Kelner e Spielman (2006) introduziram2n um algoritmo simplex aleatório com tempo polinomial que funciona realmente em todas as entradas, mesmo as ruins para o algoritmo simplex original.

Lev Reyzin
fonte
36

Como Lev disse, no pior dos casos, o algoritmo visita todos os vértices em 2d onde d é o número de variáveis. No entanto, o desempenho do algoritmo simplex também pode depender muito da regra de pivô específica usada. Tanto quanto sei, ainda é uma questão em aberto se existe uma regra de pivô determinística específica com tempo de execução subexponencial no pior dos casos. Muitos candidatos foram descartados por resultados de limite inferior. Recentemente, Friedmann, Hansen e Zwick também mostraram os primeiros limites inferiores não polinomiais para algumas regras de pivô aleatórias naturais, com algumas correções fornecidas posteriormente .

No entanto, adicionando ao resultado da análise suavizada mencionado por Lev: Após o artigo seminal de Spielman e Tengs, que introduziu a análise suavizada, Vershynin melhorou ainda mais seus limites em 2006. Ele mostrou que o tempo de execução esperado em instâncias levemente perturbadas é apenas poliolarítmico no número de restrições n , abaixo de n86 .

Matthias
fonte
4
e, como JeffE apontou em uma pergunta diferente ( cstheory.stackexchange.com/questions/2149/… ), o melhor método subexponencial atual é um tipo de dual simplex.
Suresh Venkat
O link para o jornal Vershynin está morto.
kutschkem 17/09
8

Para obter informações sobre a análise de pior caso e caso médio do método simplex, leia "Análise suavizada: por que o algoritmo simplex geralmente leva tempo polinomial". por Spielman e Teng.

Christina Boucher
fonte
3

Uma boa referência sobre por que o simplex não está sendo executado no tempo polinomial, e não por que é exponencial é a Otimização Combinatória de Papadimitriou e Steiglitz, Seção 8.6, na qual eles demonstram que o Simplex não é um algoritmo de tempo polinomial.

hiperbórea
fonte
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

Alguém pode sugerir outras maneiras de construir problemas difíceis para o método simplex, lento, mas não vinculado à memória?

Adicionado: quadrados latinos, também conhecidos como matrizes de permutação em 3D, parecem ter muitos vértices - quantos?
Teoria e prática são mais próximas na teoria do que na prática.

Denis
fonte
-1

O algoritmo Simplex original pode divergir; ele roda em certas instâncias. Portanto, nenhum limite geral. Outras respostas fornecem respostas para as várias modificações do algoritmo Simplex.

MdAyq7
fonte