Problemi di decisione vs problemi "reali" che non sono sì o no


36

Ho letto in molti punti che alcuni problemi sono difficili da approssimare (è NP-difficile approssimarli ). Ma l'approssimazione non è un problema decisionale: la risposta è un numero reale e non Sì o No. Anche per ogni fattore di approssimazione desiderato, ci sono molte risposte che sono corrette e molte che sono sbagliate, e questo cambia con il fattore di approssimazione desiderato!

Quindi, come si può dire che questo problema è NP-difficile?

(ispirato al secondo punto in Quanto è difficile contare il numero di percorsi semplici tra due nodi in un grafico diretto? )

Risposte:


27

Come hai detto, non c'è alcuna decisione da prendere, quindi sono necessarie nuove classi di complessità e nuovi tipi di riduzioni per arrivare a una definizione adeguata di durezza NP per problemi di ottimizzazione .

Un modo per farlo è quello di avere due nuove classi NPO e PO che contengono problemi di ottimizzazione e imitano ovviamente le classi NP e P per problemi di decisione. Sono necessarie anche nuove riduzioni. Quindi possiamo ricreare una versione della durezza NP per problemi di ottimizzazione lungo le linee che hanno avuto successo per problemi di decisione. Ma prima dobbiamo concordare che cos'è un problema di ottimizzazione .

Definizione: Sia un problema di ottimizzazione . è l'insieme di input o istanze adatto codificato come stringhe. è una funzione che mappa ogni istanza su un insieme di stringhe, le soluzioni possibili dell'istanza . È un set perché ci sono molte soluzioni a un problema di ottimizzazione. Quindi abbiamo una funzione oggettiva che ci dice per ogni coppia dell'istanza e risolve il suo costo o valore . O=(X,L,f,opt)XLxXx f(x,y) yL(x)opt ci dice se stiamo massimizzando o minimizzando.

Questo ci consente di definire quale sia una soluzione ottimale : Sia la soluzione ottimale di un'istanza di un problema di ottimizzazione conLa soluzione ottimale è spesso indicata da .yoptL(x)xXO=(X,L,f,opt)

f(x,yopt)=opt{f(x,y)yL(x)}.
y

Ora possiamo definire la classe NPO : Sia l'insieme di tutti i problemi di ottimizzazione con:NPOO=(X,L,f,opt)

  1. XP
  2. Esiste un polinomio con per tutte le istanze e tutte le soluzioni possibili . Inoltre esiste un algoritmo deterministico che decide in tempo polinomiale se .p|y|p(|x|)xXyL(x)yL(x)
  3. f può essere valutato in tempo polinomiale.

L'intuizione alla base è:

  1. Possiamo verificare in modo efficiente se è effettivamente un'istanza valida del nostro problema di ottimizzazione.x
  2. La dimensione delle soluzioni possibili è limitata polinomialmente dalla dimensione degli input, e possiamo verificare in modo efficiente se è una soluzione fattibile dell'istanza .yL(x)x
  3. Il valore di una soluzione può essere determinato in modo efficiente.yL(x)

Questo rispecchia la definizione di , ora per PO : Sia l'insieme di tutti i problemi di che possono essere risolti da un algoritmo deterministico in tempo polinomiale.NPPONPO

Ora siamo in grado di definire ciò che vogliamo chiamare un algoritmo di approssimazione : un algoritmo di approssimazione di un problema di ottimizzazione è un algoritmo che calcola una soluzione fattibile per un'istanza .O=(X,L,f,opt)yL(x)xX

Nota: che non chiediamo una soluzione ottimale , abbiamo solo ciò che è fattibile .

Ora abbiamo due tipi di errori: l' errore assoluto di una soluzione fattibile di un'istanza del problema di ottimizzazione è.yL(x)xXO=(X,L,f,opt)|f(x,y)f(x,y)|

Chiamiamo l'errore assoluto di un algoritmo di approssimazione per il problema di ottimizzazione delimitato da se l'algoritmo calcola per ogni istanza una soluzione fattibile con un errore assoluto delimitato da .AOkAxXk

Esempio: secondo il Teorema di Vizing l' indice cromatico di un grafico (il numero di colori nella colorazione del bordo con il minor numero di colori utilizzati) è o , dove è il grado massimo del nodo. Dalla dimostrazione del teorema si può escogitare un algoritmo di approssimazione che calcola una colorazione del bordo con colori . Di conseguenza abbiamo un algoritmo di approssimazione per il cui l'errore assoluto è limitato da .ΔΔ+1ΔΔ+1MinimumEdgeColoring1

Questo esempio è un'eccezione, piccoli errori assoluti sono rari, così definiamo l' errore relativo del ravvicinamento algoritmo su istanza dell'ottimizzazione-problema con per tutti e essereϵA(x)AxO=(X,L,f,opt)f(x,y)>0xXyL(x)

ϵA(x):={0f(x,A(x))=f(x,y)|f(x,A(x))f(x,y)|max{f(x,A(x)),f(x,y)}f(x,A(x))f(x,y)

dove è la soluzione ammissibile calcolata mediante il ravvicinamento algoritmo .A(x)=yL(x)A

Ora possiamo definire l'algoritmo di approssimazione affinché il problema di ottimizzazione sia un algoritmo di approssimazione per se l'errore relativo è limitato da per ogni istanza , quindi AO=(X,L,f,opt)δOϵA(x)δ0xX

ϵA(x)δxX.

La scelta di nel denominatore della definizione dell'errore relativo è stata selezionata per rendere simmetrica la definizione per massimizzare e minimizzare. Il valore dell'errore relativo . In caso di un problema di massimizzazione, il valore della soluzione non è mai inferiore a e mai maggiore di per un problema di riduzione al minimo.max{f(x,A(x)),f(x,y)}ϵA(x)[0,1](1ϵA(x))f(x,y)1/(1ϵA(x))f(x,y)

Ora possiamo chiamare un problema di ottimizzazione -approximable se esiste un algoritmo -approximation per che viene eseguito in un tempo polinomiale.δδAO

Non vogliamo guardare l'errore per ogni istanza , guardiamo solo al caso peggiore. Quindi definiamo , il massimo errore relativo dell'algoritmo di approssimazione affinché il problema di ottimizzazione sia xϵA(n)AO

ϵA(n)=sup{ϵA(x)|x|n}.

Dovedovrebbe essere la dimensione dell'istanza.|x|

Esempio: una corrispondenza massima in un grafico può essere trasformata in una copertura minima del nodo aggiungendo tutti i nodi incidenti dalla corrispondenza alla copertura del vertice. Quindii bordi sono coperti. Poiché ogni copertura del vertice, compresa quella ottimale, deve avere uno dei nodi di ciascun bordo coperto, altrimenti potrebbe essere migliorata, abbiamo . Ne consegue che Quindi l'algoritmo goloso per una corrispondenza massima è un -approximatio- algoritmo per . Quindi è approssimativo.C1/2|C|1/2|C|f(x,y)

|C|f(x,y)|C|12
1/2MinimalVertexCoverMinimalVertexCover1/2

Purtroppo l'errore relativo non è sempre la migliore nozione di qualità per un'approssimazione, come dimostra il seguente esempio:

Esempio: un semplice algoritmo greedy può approssimare . Un'analisi mostra che e quindi sarebbe -approximable.MinimumSetCover

|C||C|Hn1+ln(n)
MinimumSetCoverln(n)1+ln(n)

Se l'errore relativo è vicino a la seguente definizione è vantaggiosa.1

Let essere un'ottimizzazione problemi con per tutti e e un'approssimazione-algoritmo per . Il rapporto di approssimazione della soluzione fattibile dell'istanza è O=(X,L,f,opt)f(x,y)>0xXyL(x)AO rA(x)A(x)=yL(x)xX

rA(x)={1f(x,A(x))=f(x,y)max{f(x,A(x))f(x,y),f(x,y)f(x,A(x))}f(x,A(x))f(x,y)

Come prima che noi chiamiamo un'approssimazione algoritmo un -approximation-algoritmo per l'ottimizzazione problemi se il ravvicinamento-ratio è delimitata da per ogni ingresso . E ancora una volta se abbiamo un algoritmo di approssimazione per il problema di ottimizzazione allora è chiamato -approximable . Ancora una volta ci preoccupiamo solo del caso peggiore e definiamo il rapporto di approssimazione massimo come ArOrA(x)r1xX

rA(x)r
rAOOr rA(n)
rA(n)=sup{rA(x)|x|n}.
Di conseguenza, il rapporto di approssimazione è maggiore di per soluzioni non ottimali. Pertanto le soluzioni migliori hanno rapporti più piccoli. Per possiamo ora scrivere che è -approximable. E in caso di sappiamo dall'esempio precedente che è approssimativo. Tra errore relativo e rapporto di approssimazione abbiamo relazioni semplici: 1MinimumSetCover(1+ln(n))MinimumVertexCover2
rA(x)=11ϵA(x)ϵA(x)=11rA(x).

Per piccole deviazioni dall'ottimale e l'errore relativo è vantaggioso rispetto al rapporto di approssimazione, che mostra i suoi punti di forza per grandi deviazioni e .ϵ<1/2r<2ϵ1/2r2

Le due versioni di -approximable non si sovrappongono poiché una versione ha sempre e l'altra . Il caso non è problematico in quanto questo è raggiunto solo da algoritmi che producono una soluzione esatta e di conseguenza non devono essere trattati come algoritmi di approssimazione.αα1α1α=1

Un'altra classe appare spesso APX . Si definisce come l'insieme di tutte ottimizzazione-problemi da che porto un -approximation algoritmo con che viene eseguito in tempo polinomiale.ONPOrr1

Abbiamo quasi finito. Vorremmo copiare le idee di successo di riduzioni e completezza dalla teoria della complessità. L'osservazione è che molte varianti di decisione NP-hard di problemi di ottimizzazione sono riducibili l'una all'altra mentre le loro varianti di ottimizzazione hanno proprietà diverse riguardo alla loro approssimabilità. Ciò è dovuto alla riduzione del tempo polinomiale-Karp utilizzata nelle riduzioni della completezza NP, che non preserva la funzione obiettiva. E anche se le funzioni oggettive vengono preservate, la riduzione del tempo polinomiale-Karp può cambiare la qualità della soluzione.

Ciò di cui abbiamo bisogno è una versione più forte della riduzione, che non solo mappa le istanze dal problema di ottimizzazione alle istanze di , ma anche buone soluzioni da a buone soluzioni da .O1O2O2O1

Quindi definiamo la riduzione di approssimazione-conservazione per due problemi di ottimizzazione e da . Chiamiamo -reducible a , scritto come , se ci sono due funzioni ed ed una costante con:O1=(X1,L1,f1,opt1)O2=(X2,L2,f2,opt2)NPOO1 APO2O1APO2ghc

  1. g(x1,r)X2 per tutti e razionalex1X1r>1
  2. L2(g(x,r1)) se per tutti e razionaleL1(x1)x1X1r>1
  3. h(x1,y2,r)L1(x1) per tutti e razionale e per tuttix1X1r>1y2L2(g(x1,r))
  4. Per fisso funzioni sia ed può essere calcolato da due algoritmi in tempo polinomiale nella lunghezza dei loro ingressi.rgh
  5. Abbiamo per tutti e razionale e per tutti
    f2(g(x1,r),y2)rf1(x1,h(x1,y2,r))1+c(r1)
    x1X1r>1y2L2(g(x1,r))

In questa definizione ed dipende dalla qualità della soluzione . Quindi per qualità diverse le funzioni possono differire. Questa generalità non è sempre necessaria e lavoriamo solo con e .ghrg(x1)h(x1,y2)

Ora che abbiamo un'idea di una riduzione per problemi di ottimizzazione, possiamo finalmente trasferire molte cose che sappiamo dalla teoria della complessità. Ad esempio, se sappiamo che e mostriamo che segue anche .O2APXO1APO2O1APX

Finalmente possiamo definire cosa intendiamo per -hard e -completo per problemi di ottimizzazione:CC

Sia un problema di ottimizzazione di e una classe di problemi di ottimizzazione di allora è chiamato -hard rispetto a se per tutti detiene.ONPOCNPOOCAPOC OAPO

Quindi ancora una volta abbiamo la nozione di un problema più difficile della classe. Non sorprende che un problema -hard sia chiamato -completo rispetto a se è un elemento di .CCAPC

Quindi ora possiamo parlare di completezza e completezza ecc. E naturalmente ora ci viene chiesto di esibire un primo problema completo che assume il ruolo di . Viene quasi naturale, che può essere dimostrato di essere -Complete. Con l'aiuto del Teorema PCP si può persino dimostrare che è completo .NPOAPXNPOSATWeightedSatisfiabilityNPOMaximum3SATAPX


11
Oh, per favore, accetta le mie scuse per questo post relativamente lungo, ma non ho avuto il tempo di scriverne uno più breve.
uli

1
la linea di punzonatura ovviamente è che dal teorema del PCP è possibile collegare MAX3SAT e SAT, dimostrando così che NP-3 è difficile da approssimare a MAX 3SAT meglio di qualche costante. Questo è l'equivalente del teorema di Cook-Levin, in un certo senso.
Suresh,

1
@Suresh Certo, ma questo risultato che hai menzionato ha bisogno di una riduzione per preservare il gap, per quanto mi ricordo. E come hai già scritto su di loro nel tuo post, non volevo duplicarli qui.
uli

Ottima risposta, +1! Mi chiedo se la tua risposta si basa su alcuni riferimenti?
Tim

@Tim Naturalmente ci sono libri, ne ho elencati alcuni nei commenti di un'altra risposta
uli

19

Di solito ciò che viene mostrato è la durezza NP di una versione "Gap" del problema. Ad esempio, supponiamo che tu voglia dimostrare che è difficile approssimare SET COVER entro un fattore 2.

Definisci la seguente istanza "promessa" di SET COVER che chiameremo 2-GAP-SET-COVER:

Risolvi un numero . 2-GAP-SET-COVER è costituito da tutte le istanze di set cover in cui la dimensione del set set ottimale è:

  • al massimo
  • almeno2

Supponiamo di mostrare che il problema di decidere in quale dei due casi rientra un problema è NP-completo. Quindi abbiamo dimostrato che SET COVER approssimativo entro un fattore 2 è NP-difficile, perché potremmo usare un tale algoritmo per distinguere questi due casi.


4

Le due risposte esistenti sono molto istruttive, ma non credo che nessuna delle due risponda davvero alla domanda, che è: "Come può un problema che non è nemmeno un problema di decisione essere NP-difficile, quando NP è una classe di problemi di decisione ?"

La risposta è ricordare cosa significa NP-hard. Un problema  è NP-hard sotto qualche tipo di riduzioni se ogni problema in NP può essere ridotto a  . (E  è NP-completo se NP-difficile e in NP.) Informalmente, NP-difficile significa "Se potessi risolvere questo problema, potrei risolvere tutto in NP", anche se il problema di cui stai parlando non è ' t in NP. La durezza NP non richiede l'appartenenza a NP, ma ha bisogno della giusta nozione di riduzione.LLL

Qualche esempio.

  1. Qualsiasi problema NEXPTIME completo  è NP-difficile con riduzioni plurime a tempo polinomiale. Qualsiasi problema in NP è in NEXPTIME quindi è riducibile a  per definizione. Secondo il teorema della gerarchia temporale,  non può essere in NP, quindi   non è NP-completo.LLLL
  2. #SAT è il problema di calcolare il numero di assegnazioni soddisfacenti alle formule CNF. Chiaramente non è in NP perché, come notate, NP è una classe di problemi decisionali e #SAT non è uno di quelli. Tuttavia, #SAT è NP-difficile con riduzioni di Turing in tempo polinomiale perché possiamo ridurre il SAT ad esso. Data un'istanza SAT, chiediamo quanti compiti soddisfacenti ci sono: se ce n'è almeno uno, diciamo "soddisfacente"; altrimenti, "insoddisfacente".
  3. Sia APPROXSAT il problema del calcolo di un numero compreso in un fattore dieci rispetto al numero di incarichi soddisfacenti per una formula CNF  . Giusto per essere fastidiosi, supponiamo che ti sia permesso arrotondare per difetto, quindi, se  ha, diciamo, tre compiti soddisfacenti, l'algoritmo può pensare "0.3" e arrotondare per difetto a zero. Questo è NP-difficile con riduzioni di Turing in tempo polinomiale perché possiamo ancora ridurre il SAT ad esso. Data una formula CNF  , chiedi il numero di incarichi soddisfacenti per , dove  sono nuove variabili.  è soddisfacente se, e solo se, lo è  , maφφφφ=φ(Z1Z10)Ziφφφ  è garantito per avere più di 1.000 incarichi soddisfacenti, se ne ha. Pertanto,  è soddisfacente se, e solo se, l'algoritmo APPROXSAT afferma che  ha almeno 100 incarichi soddisfacenti.φφ
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.