Perché la programmazione lineare in P ma la programmazione intera NP-difficile?


35

La programmazione lineare (LP) è in P e la programmazione in numeri interi (IP) è NP-hard. Ma poiché i computer possono manipolare i numeri solo con precisione finita, in pratica un computer utilizza numeri interi per la programmazione lineare. Per questo motivo, LP e IP non dovrebbero essere nella stessa classe di complessità?


7
Aggiungendo un po 'alla risposta di jmite: ci sono molti casi in cui i vincoli di integrità rendono il problema molto più difficile. Ad esempio, il problema dello zaino frazionario può essere risolto in un tempo polinomiale, sebbene il problema dello zaino intero sia NP-Hard. Quindi questo non è solo qualcosa di vero per LP e IP.
user340082710

7
Anche se si considera che i computer eseguono operazioni con numeri interi, ciò non significa che la soluzione restituita sia un numero intero; può essere razionale, cioè rapporto di due numeri interi. E questo dà molta più flessibilità. E, naturalmente, non possiamo sempre convertire una soluzione razionale in una soluzione fattibile per l'IP. In generale, l'IP avrà più vincoli sulle variabili rispetto alla semplice richiesta di una soluzione integrale. Pensa a un programma intero . 0,1
megas

1
Non è difficile manipolare i numeri con infinita precisione se si desidera, soprattutto quando sono razionali. La precisione finita è semplicemente un'ottimizzazione per ridurre i tempi di autonomia.

2
@Hurkyl "Non è così difficile manipolare i numeri con infinita precisione se vuoi, specialmente quando sono razionali." Esiste un sottoinsieme rigoroso dei numeri reali chiamati numeri calcolabili, che include numeri razionali + come sqrt (2) ecc ... ed è definito come l'insieme di numeri calcolabili da una macchina di Turing. Quelli che non sono inclusi lì, per definizione, non possono essere manipolati da un computer.
Sasha the Noob,

1
@SashatheNoob Quello che stai dicendo non è in contrasto con quello che ha detto Hurkyl. I numeri calcolabili non hanno un limite massimo predefinito su quanto possano essere precisi (è arbitrariamente impostato su qualsiasi valore che ti piace a condizione che la macchina da turismo abbia abbastanza memoria, quindi una precisione infinita). Per dire che il sottoinsieme di Numeri calcolabili include tutti i numeri razionali, stai ammettendo che i computer possono manipolare i numeri con precisione infinita. (L'affermazione di Hurkyl è assolutamente vera. Il fatto che la precisione sia limitata per alcuni tipi di dati è semplicemente un'ottimizzazione.)
BrainSlugs83

Risposte:


9

Non posso commentare poiché richiede 50 rappresentanti, ma ci sono alcune idee sbagliate in giro, in particolare il commento di Raffaello "In generale, un dominio continuo significa che non c'è forza bruta (e nessuna euristica intelligente per accelerarla)".

Questo è assolutamente falso. Il punto chiave è davvero la convessità. Escludere alcune qualifiche di vincolo tecnico, minimizzare una funzione convessa (o massimizzare una funzione concava) su un insieme convesso è essenzialmente banale, nel senso di convergenza temporale polinomiale.

A grandi linee, si potrebbe dire che esiste una corrispondenza tra convessità di un problema nell'ottimizzazione "matematica" e la fattibilità di algoritmi avidi nell'ottimizzazione "informatica". Questo è nel senso che entrambi abilitano metodi di ricerca locali. Non dovrai mai tornare indietro in un avido algoritmo e non dovrai mai pentirti di una direzione di discesa in un problema di ottimizzazione convessa. I miglioramenti locali sulla funzione obiettivo ti porteranno SEMPRE più vicino all'ottimale globale.

Non è così nel caso non convesso. Qui può esserci un minimo globale, ma diversi minimi locali su cui verrà sempre attinto un algoritmo di discesa locale, allo stesso modo in cui gli algoritmi avidi se applicati a problemi NP. A volte trovano il vero ottimale, il più delle volte no.


23

La risposta breve: perché puoi usare Integer per simulare booleani per SAT , ma quando non ti limiti a questo, non puoi effettivamente simulare SAT. Otterrai una risposta fattibile, ma non ha più alcun significato in termini di istanza SAT che stavi cercando di simulare.

PNP


21

Il motivo per cui la programmazione lineare è "efficiente" è che lo spazio della soluzione può essere rappresentato da un singolo poliedro convesso. Se si sta cercando di trovare il vertice "più alto" su quel poliedro (si può applicare una trasformazione lineare a qualsiasi problema di programmazione lineare per fare in modo che "altezza" corrisponda alla quantità da massimizzare), quindi da qualsiasi vertice si può viaggiare lungo i bordi per il punto più alto senza mai dover "scendere". Ciò che rende la programmazione di numeri interi "difficile" è che non esiste uno spazio di soluzione continuo, ma esistono invece molti spazi di soluzione disgiunti e nessun modo di lavorare in modo incrementale verso la soluzione ottimale.


2
La parola chiave qui è "convessità"
cody

1
Questa salita non è forse il metodo simplex, di cui nessuna variante è nota per essere polinomiale nel peggiore dei casi?
jbapple

1
Ci sono molti problemi che sono più facili da risolvere in spazi discreti (che consente ricerche discrete) che nello spazio continuo.
Raffaello

@Raphael: puoi fare qualche esempio di questi problemi? Ci ho pensato e non riesco a trovarne molti.
cody

@cody Ricerca di massimi / minimi di funzioni (monodimensionali), ad esempio. Vedi qui per un esempio carino che diventa suscettibile solo dopo aver notato che possiamo ridurre lo spazio di ricerca finito a uno finito. Nota che gli LP sono in qualche modo speciali in questo modo: notando che dobbiamo solo considerare gli angoli di un poliedro otteniamo uno spazio di ricerca finito. In generale, un dominio continuo significa che non esiste una forza bruta (e nessuna euristica intelligente per accelerarla).
Raffaello

3

Le altre risposte sono corrette, ma le trovo un po 'tecniche. Supponiamo di aver spazzato (eliminato) una matrice e stai cercando qualsiasi soluzione e la matrice si presenta così:

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

Q

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.