Programmazione intera con un numero fisso di variabili


12

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.

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


2
"Potrei costruire un algoritmo che si ridimensiona polinomialmente nel numero di vincoli o variabili ma non nel numero di variabili e vincoli". Punto / domanda interessante: finora abbiamo visto che questo è vero per i vincoli (tenendo il numero di variabili fisso), ma forse sarebbe interessante chiedere se potesse valere anche per le variabili (tenendo il numero di vincoli fissi) ? Intuitivamente sembra che non dovrebbe essere vero, altrimenti IP sarebbe in generale il tempo polifunzionale, ma non ne sono sicuro.
usul

Nella sezione 4 dell'articolo Lenstra afferma che "il problema di programmazione lineare intera con un valore fisso di m è polinomialmente risolvibile". (m è il numero di contraffazioni) Segue un corollario del risultato principale. Questa sezione non mi è chiara. Ripensandoci, forse assume fisso n AND m; nel senso che è polinomiale in "a" (il massimo dei valori assoluti dei coefficienti di A e b). (Di conseguenza ho rimosso la parte "o variabili" dalla mia domanda sopra).
Bernhard Kausler,

6
nmmn

Risposte:


19

n

O(n2.5n+o(n)L)LLn

Pertanto, il problema è lineare a parametro fisso parametrizzato dal numero di variabili.

1) Sì, la Programmazione lineare integer è "ancora" NP-completa. Il tempo di esecuzione del risultato teorico sopra dipende solo linearmente dal numero di vincoli, quindi si adatta bene al numero di vincoli. Tuttavia, non conosco alcuna implementazione effettiva di questo algoritmo.

2) Sì, fare in modo che le variabili assumano valori binari è semplice come hai osservato.

L

O(2nnm+8nnmlogmlogm+n2.5n+o(n)slogm)
ms

1
Ah, grazie per il termine "lineare a parametri fissi". Questo è il tema di Lenstra. Vedi anche: en.wikipedia.org/wiki/Parameterized_complexity
Bernhard Kausler

4
nO(n2nm)

T(n,m,s)nmsO(2nm+(logm)T(n,f(n),s)O(s)f(n)nO(n)

1
Questo non cambia i fatti di base della tua risposta, ma un altro riferimento rilevante è KL Clarkson. Algoritmi di Las Vegas per la programmazione lineare e intera quando la dimensione è piccola. J. ACM 42 (2): 488–499, 1995, doi: 10.1145 / 201019.201036.
David Eppstein,

2
mnO(n2.5n+o(n)L)T(n,f(n),s)f(n)=4nL=4nsf(n)O(2nnm+n2.5n+o(n)(logm)s)

4

Ecco un paio di punti riguardanti le implicazioni pratiche dei risultati di tipo Lenstra e le possibili implementazioni in CPLEX, Gurobi, ecc. Uno dei passaggi chiave nella maggior parte di tali algoritmi per IP è la ramificazione su direzioni "buone" o "sottili", cioè, iperpiani lungo i quali la larghezza del politopo non è troppo grande (polinomio in variabili e dimensioni dei dati). Ma Mahajan e Ralphs (preprint qui ) hanno mostrato che il problema di selezione di un ottimale disgiunzione è NP-completo. Quindi, sembrerebbe difficile creare implementazioni praticamente efficienti di questa classe di algos.

La maggior parte degli alghe implementati in pacchetti come CPLEX potrebbero essere classificati come metodi di taglio e taglio. Questa famiglia di tecniche in genere funziona bene su istanze IP che sono fattibili e sono spesso in grado di trovare soluzioni quasi ottimali. Ma il focus degli alghi di tipo Lenstra sono le istanze IP nel caso peggiore che sono impossibili da iniziare, e l'obiettivo è dimostrare la loro non fattibilità (e studiano la complessità di questo compito). AFAIK, non ci sono classi di problemi con rilevanza pratica che si adattano a questa descrizione. Quindi, la gente di CPLEX / Gurobi probabilmente non implementerebbe presto alghe di tipo Lenstra.

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.