Il famoso articolo del 1983 di H. Lenstra Integer Programming with A Fixed Number Of Variables afferma che i programmi interi con un numero fisso di variabili sono risolvibili nel tempo polinomiale nella lunghezza dei dati.
Lo interpreto come segue.
- La programmazione di numeri interi in generale è ancora NP-completa ma se la mia tipica dimensione del problema a portata di mano (diciamo circa 10.000 variabili, un numero arbitrario di vincoli) è praticabile in pratica, allora potrei costruire un algoritmo che ridimensiona polinomialmente il numero di vincoli ma non in il numero di variabili e vincoli.
- Il risultato è applicabile anche per la programmazione binaria poiché posso forzare qualsiasi numero intero a 0-1 aggiungendo un vincolo appropriato.
La mia interpretazione è corretta?
Questo risultato ha implicazioni pratiche? Cioè, è disponibile un'implementazione o viene utilizzata in solutori popolari come CPLEX, Gurobi o Mosek?
Alcune citazioni dall'articolo:
Per i nostri scopi, questa lunghezza può essere definita come n · m · log (a + 2), dove a indica il massimo dei valori assoluti dei coefficienti di A e b. In effetti, tale algoritmo polinomiale non esiste probabilmente, poiché il problema in questione è NP-completo
[...]
È stato ipotizzato [5], [10] che per qualsiasi valore fisso di n esiste un algoritmo polinomiale per la soluzione del problema di programmazione lineare intera. Nel presente documento dimostriamo questa congettura esibendo un tale algoritmo. Il grado del polinomio con cui può essere limitato il tempo di esecuzione del nostro algoritmo è una funzione esponenziale di n.