Complessità dell'algoritmo simplex


36

Qual è il limite superiore dell'algoritmo simplex per trovare una soluzione a un programma lineare?

Come farei per trovare una prova per un caso del genere? Sembra che il caso peggiore sia se si deve visitare ciascun vertice che è . Tuttavia, in pratica l'algoritmo simplex funzionerà in modo significativamente più veloce di questo per problemi più standard.O(2n)

Come posso ragionare sulla complessità media di un problema che viene risolto usando questo metodo?

Qualsiasi informazione o riferimento è molto apprezzato!


5
Nota che, come ha detto mashca in una risposta , in realtà non abbiamo "l'algoritmo simplex". Esistono molti algoritmi simplex diversi a seconda della scelta di una regola pivotante.
Tsuyoshi Ito,

2
Un cubo nella dimensione ha 2 n vertici, quindi questo se un limite superiore per qualsiasi variante simplex su cubi (ad esempio, Klee-Minty). Tuttavia, ci sono poliedri in dimensione n con 2 n sfaccettature, tra cui doppio politopi ciclici, con più di 2 n vertici, quindi 2 n non è immediatamente limite superiore della per il tempo di esecuzione del metodo simplex per matrici di vincolo quadrati in generale . n2nn2n2n2n
Rahul Savani,

Risposte:


72

L'algoritmo simplex infatti visite tutti 2n vertici nel caso peggiore ( Klee & Minty 1972 ), e questo risulta essere vero per qualsiasi regola perno deterministica. Tuttavia, in un documento di riferimento che utilizza un'analisi smussata, Spielman e Teng (2001) hanno dimostrato che quando gli input dell'algoritmo sono leggermente perturbati in modo casuale, il tempo di esecuzione previsto dell'algoritmo simplex è polinomiale per qualsiasi input - questo sostanzialmente dice che per qualsiasi problema esiste un "vicino" che il metodo simplex risolverà in modo efficiente, e copre praticamente ogni programma lineare del mondo reale che vorresti risolvere. Successivamente, sono stati introdotti Kelner e Spielman (2006) un algoritmo simplex randomizzato a tempo polinomiale che funziona davvero su qualsiasi input, anche su quelli cattivi per l'algoritmo simplex originale.


36

Come ha detto Lev, nel peggiore dei casi l'algoritmo visita tutti i vertici 2d dove d è il numero di variabili. Tuttavia, le prestazioni dell'algoritmo simplex possono anche dipendere in larga misura dalla specifica regola pivot utilizzata. Per quanto ne so, è ancora una domanda aperta se esiste una regola pivot deterministica specifica con tempo di esecuzione nel caso peggiore sub-esponenziale. Molti candidati sono stati esclusi da risultati con limiti inferiori. Di recente, Friedmann, Hansen e Zwick hanno anche mostrato i primi limiti inferiori non polinomiali per alcune regole pivot casuali naturali con alcune correzioni fornite in seguito .

nn86


4
e come ha sottolineato JeffE in una domanda diversa ( cstheory.stackexchange.com/questions/2149/… ), l'attuale miglior metodo subesponenziale è una sorta di duplice simplex.
Suresh Venkat,

Il link al documento Vershynin è morto.
Kutschkem,

8

Per ottenere informazioni sull'analisi del caso peggiore e del caso medio del metodo simplex, è necessario leggere "Analisi smussata: perché l'algoritmo simplex richiede solitamente tempo polinomiale". di Spielman e Teng.


3

Un buon riferimento al motivo per cui simplex non funziona nel tempo polinomiale, piuttosto che perché sia ​​esponenziale è Papadimitriou e Steiglitz Combinatorial Optimization, Sezione 8.6, in cui dimostrano che Simplex non è un algoritmo polinomiale.


1

Nel 2019, il solutore LP di opensource GLPK risolve il problema del cubo di Klee-MintyD=200 in meno di 100 millisecondi, su un iMac da 2,7 GHz:

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

Qualcuno può suggerire altri modi per costruire problemi difficili per il metodo simplex, lento ma non associato alla memoria?

Aggiunto: i quadrati latini noti anche come matrici di permutazione 3d sembrano avere molti vertici - quanti?
Teoria e pratica sono più vicine in teoria che in pratica.


-1

L' algoritmo Simplex originale può divergere; scorre su alcuni casi. Quindi, nessun limite generale. Altre risposte forniscono risposte per le varie modifiche dell'algoritmo Simplex.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.