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)XLx∈Xx f(x,y) y∈L(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 .yopt∈L(x)x∈XO=(X,L,f,opt)
f(x,yopt)=opt{f(x,y′)∣y′∈L(x)}.
y∗
Ora possiamo definire la classe NPO : Sia l'insieme di tutti i problemi di ottimizzazione con:NPOO=(X,L,f,opt)
- X∈P
- 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|)x∈Xy∈L(x)y∈L(x)
- f può essere valutato in tempo polinomiale.
L'intuizione alla base è:
- Possiamo verificare in modo efficiente se è effettivamente un'istanza valida del nostro problema di ottimizzazione.x
- La dimensione delle soluzioni possibili è limitata polinomialmente dalla dimensione degli input, e possiamo verificare in modo efficiente se è una soluzione fattibile dell'istanza .y∈L(x)x
- Il valore di una soluzione può essere determinato in modo efficiente.y∈L(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)y∈L(x)x∈X
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 è.y∈L(x)x∈XO=(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 .AOkAx∈Xk
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ΔΔ+1Minimum−EdgeColoring1
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)>0x∈Xy∈L(x)
ϵA(x):={0|f(x,A(x))−f(x,y∗)|max{f(x,A(x)),f(x,y∗)}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)=y∈L(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)δ≥0x∈X
ϵA(x)≤δ∀x∈X.
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/2Minimal−VertexCoverMinimal−VertexCover1/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.Minimum−SetCover
|C||C∗|≤Hn≤1+ln(n)
Minimum−SetCoverln(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)>0x∈Xy∈L(x)AO rA(x)A(x)=y∈L(x)x∈X
rA(x)={1max{f(x,A(x))f(x,y∗),f(x,y∗)f(x,A(x))}f(x,A(x))=f(x,y∗)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)r≥1x∈X
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:
1Minimum−SetCover(1+ln(n))Minimum−VertexCover2rA(x)=11−ϵA(x)ϵA(x)=1−1rA(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/2r≥2
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.ONPOrr≥1
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 APO2O1≤APO2ghc
- g(x1,r)∈X2 per tutti e razionalex1∈X1r>1
- L2(g(x,r1))≠∅ se per tutti e razionaleL1(x1)≠∅x1∈X1r>1
- h(x1,y2,r)∈L1(x1) per tutti e razionale e per tuttix1∈X1r>1y2∈L2(g(x1,r))
- Per fisso funzioni sia ed può essere calcolato da due algoritmi in tempo polinomiale nella lunghezza dei loro ingressi.rgh
- Abbiamo per tutti e razionale e per tutti
f2(g(x1,r),y2)≤r⇒f1(x1,h(x1,y2,r))≤1+c⋅(r−1)
x1∈X1r>1y2∈L2(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 .O2∈APXO1≤APO2O1∈APX
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.ONPOCNPOOC≤APO′∈C O′≤APO
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 .CC≤APC
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 .NPOAPXNPOSATWeighted−SatisfiabilityNPOMaximum−3SATAPX