Click here to load reader

Problema dello zaino

  • Upload
    fsensei

  • View
    1.047

  • Download
    4

Embed Size (px)

Citation preview

  • 1. Problema dello zaino (Knapsack problem)Dimostrazione di appartenenza alla classeNP-CFabrizio Finucci

2. KnapsackDefinizione (problema generico)Data una collezione di oggetti S = {x1,,xn}, doveogni oggetto xi caratterizzato da due valori: vi , valore delloggetto wi , peso delloggettoentrambi interi positivi, e dato uno zaino dotato diuna certa capacit di peso W, restituire unsottoinsieme S di oggetti xj tali che j S wj W j S vj sia massima2 3. Tipi di Knapsack Il problema precedente pu essere suddiviso in tre sottocasi, basati sul numero di volte che un oggetto pu essere inserito nello zaino: 1. problema dello zaino 0-1 (0-1 Knapsack problem),in cui ogni oggetto pu esserci o meno senzaripetizioni 2. problema dello zaino limitato (Bounded Knapsackproblem), in cui ogni oggetto non pu essereinserito pi di un numero fissato di volte 3. problema dello zaino illimitato (UnboundedKnapsack problem), in cui ogni oggetto puessere inserito un numero arbitrario di volte3 4. 0-1 Knapsack Dora in poi si far riferimento al caso 0-1Knapsack Esempio: #valore peso 11 1S : {3,4} ha valore 40 26 2W = 11 3 18 5 4 22 6 5 28 74 5. Knapsack (versione decisionale) Al fine di dimostrare lappartenenza di Knapsack alla classe dei problemi NP-Completi, se ne formuler ora la versione decisionale Questo un passaggio necessario al fine di utilizzare la tecnica della Riduzione Polinomiale5 6. Knapsack (versione decisionale)Definizione (problema decisionale)Sia data una collezione di oggetti S = {x1,,xn},dove ogni oggetto xi caratterizzato da due valori: vi , valore delloggetto wi , peso delloggettoentrambi interi positivi.Dato uno zaino dotato di una certa capacit di pesoW e un valore intero V, decidere se esiste unsottoinsieme S di oggetti xj tali che j S wj W j S vj V6 7. Knapsack NP-CompletoTeoremaKnapsack NP-CompletoDimostrazioneSi divider la dimostrazione in due passi: 1. dimostrazione che Knapsack NP 2. dimostrazione che Knapsack riducibilepolinomialmente da un altro problema NP-Completo, in questo caso dal problema dellasomma del sottoinsieme (Subset Sum problem)7 8. Subset SumDefinizioneDato un insieme di numeri naturali I = {x1,,xn}, edato un intero X, decidere se esiste unsottoinsieme II di numeri naturali, tali chesommati siano uguali a X Si ricorda che Subset Sum (come Knapsack) un problema numerico. Gli input di tali problemi vengono codificati in binario. Pertanto la riduzione dovr essere polinomiale rispetto alla codifica binaria di tali input8 9. Subset Sum NP-CompletoTeoremaSubset Sum NP-CompletoDimostrazioneSi divider la dimostrazione in due passi: 1. dimostrazione che Subset Sum NP 2. dimostrazione che Subset Sum riducibilepolinomialmente da un altro problema NP-Completo, in questo caso dal problema della 3-soddisfacibilit (3-SAT)9 10. 3-SAT Definizioni Letterale: variabile booleana, asserita o negata Clausola: disgiunzione di letterali Forma normale congiuntiva (CNF): formula F, tale che sia una congiunzione di clausole |F| = numero di clausole di F Definizione (SAT) Data una formula F in CNF, esiste unassegnazione di verit delle variabili soddisfacibile? Definizione (3-SAT) Data una formula F in CNF, con ogni clausola contenente esattamente 3 letterali, esiste unassegnazione di verit delle variabili soddisfacibile?10 11. Dimostrazione: Subset Sum NP Lemma Subset Sum NP Dimostrazione Un sottoinsieme II un certificato di lunghezza polinomiale per una data istanza di Subset Sum, essendo la sua cardinalit al pi pari alla cardinalit di I Dato un certificato possibile verificare se i I xi = X Applicando la definizione di problema NP, sidimostra che Subset Sum appartiene a tale11classe di complessit 12. Dimostrazione: 3-SATp Subset Sum Lemma 3-SAT p Subset Sum Dimostrazione Data unistanza F di 3-SAT, si costruir unistanza di Subset Sum tale che ammetta una soluzione sse F soddisfacibile Costruzione Data unistanza di 3-SAT con n variabili e k clausole, si crei un insieme di 2n + 2k numeri ciascuno di n + k cifre, nella maniera che si andr ora ad illustrare12 13. Costruzione dellistanza in forma di tabella x y z C1 C2 C3 x 1 0 0 0 1 0 10001 x 1 0 0 1 0 1 0 10010 y 0 1 0 1 0 0 1 10100F = C1 C2 C3 T 0 1 0 0 1 1 10011C1 = x y z yz0 0 1 1 1 0 1110C2 = x y z 0 0 1 0 0 1 1001C3 = x y z 0 0 0 1 0 0 100z 0 0 0 2 0 0200 0 0 0 0 1 010 D 0 0 0 0 2 020 0 0 0 0 0 11 0 0 0 0 0 2213 X 1 1 1 4 4 4 11144 4 14. Costruzione della tabella T La tabella viene costruita secondo questi criteri: si creano n + k colonne, dove: n = # variabili dellistanza di 3-SAT k = # clausole dellistanza di 3-SAT le prime n colonne rappresentano le variabili dellistanza di 3-SAT, mentre le restanti k colonne rappresentano le clausole della medesima istanza per ogni variabile dellistanza di 3-SAT si creano due righe, rappresentanti la prima la variabile asserita, la seconda la variabile negata (e.g. x e x) ognuna delle celle delle prime n colonne cos costruita: contiene 1 sse la variabile relativa al letterale sulla riga quella associata alla colonna, altrimenti contiene 0 ognuna delle celle delle restanti k colonne cos costruita: si imposta ad 1 il valore di Ci sse la variabile corrispondente alla riga compare (asserita o negata) allinterno della clausola Ci,14 altrimenti si imposta a 0 15. Costruzione della tabella D A questo punto si aggiungono due ulteriori righe per ogni clausola la prima contiene il valore 1 sulla cella relativa alla clausola considerata la seconda contiene il valore 2 Si costruisce poi, il vettore riga X di n + k celle contenente: 1 sulle prime n celle 4 sulle k celle restanti15 16. Costruzione dell istanza di Subset Sum Le cifre di ogni riga delle tabelle T e D rappresentano un numero dellinsieme I di Subset Sum, in notazione posizionale decimale (la cifra pi significativa a sinistra) Il numero associato (con la stessa tecnica usata in precedenza) al vettore X rappresenta il valore di X nellistanza di Subset Sum16 17. Dimostrazione: 3-SAT p Subset Sum Dimostrare che: F soddisfacibileun sottoinsieme I I, tale che la somma dei suoi elementi sia uguale a X Dimostrazione ( ) Dalla spiegazione di costruzione delle tabelle, si pu facilmente dimostrare che, data unassegnazione di verit che soddisfa F, sempre un sottoinsieme di numeri tali che la loro somma sia X. Infatti sufficiente scegliere: i numeri associati alle righe di T etichettate secondo lassegnazione di verit (i.e. se la variabile x asserita verr scelta la riga etichettata con x, se la variabile x negata verr scelta la riga etichettata con x) un sottoinsieme di righe di D in modo che le ultime k cifre della somma siano 4. Si noti che tale assegnazione esiste sempre: ogni clausola ha valore vero quindi la somma su ognuna delle ultime k colonne della matrice T compresa tra 1 e 3. Per ognuno di tali valori esiste un sottoinsieme di righe con le propriet richieste che non influenza il valore delle altre colonne Infine, dal momento che lassegnazione non pu essere contraddittoria, per ogni variabile x verr selezionato uno ed un solo numero tra quelli relativi alle righe x e x, dunque per costruzione le prime n cifre della somma saranno 117 18. Dimostrazione: 3-SAT p Subset Sum Dimostrazione ( ) Al contrario, supponiamo di avere un sottoinsieme di elementi I I, tali che la loro somma sia X. facile notare che: dal momento che le prime n cifre della somma sono 1 garantito che vengano sempre scelto un letterale per ogni variabile e che non possano esistere assegnazioni contraddittorie dal momento che non possibile ottenere somma 4 sulle ultime k cifre di X usando solo le righe di D, per ogni clausola C deve essere stata selezionato un numero relativo ad un letterale contenuto in C dunque lassegnazione derivata a partire dai numeri in I un assegnazione di verit valida per listanza di 3-SAT che soddisfa tutte le clausole e quindi la formula Si noti, inoltre, che la lunghezza dellistanza di Subset Sum polinomiale rispetto alla lunghezza dellistanza di 3-SAT e che ogni operazione viene eseguita in tempo polinomiale.18 19. Conclusioni sulla dimostrazione Verificati entrambi i sensi dellimplicazione e verificato che Subset Sum NP segue che Subset Sum NP-Completo Si proceder ora con la dimostrazione dellappartenenza di Knapsack alla classe dei problemi NP-Completi19 20. Dimostrazione: Knapsack NP Lemma Knapsack NP Dimostrazione Un sottoinsieme SS un certificato di lunghezza polinomiale per una data istanza di Knapsack, essendo la sua cardinalit al pi pari alla cardinalit di S Dato un certificato, possibile verificare in tempo polinomiale se j S wj W j S vj V Applicando la definizione di problema NP, si dimostra20 che Knapsack appartiene a tale classe di complessit 21. Dimostrazione: Subset Sum p Knapsack Lemma Subset Sump Knapsack Dimostrazione Data unistanza di Subset Sum si costruir unistanza di Knapsack, tale che ammetta una soluzione sse listanza di Subset Sum ammette una soluzione Costruzione Dati i valori (interi positivi) xi, con i {1,,n}, dellinsieme I di Subset Sum, si costruiranno i valori (interi positivi) vj, wj, con j {1,,m}, V, W per listanza di Knapsack nella maniera che si andr21 ad illustrare 22. Costruzione dellistanza Si imposta la seguente condizione: n = m (i.e. si prendono tanti oggetti dellinsieme S di Knapsack quanti sono i numeri dellinsieme I di Subset Sum) Si scelgono i valori ed i pesi degli oggetti di Knapsack nel seguente modo: vi = xi i = 1,,n wi = xi i = 1,,n Si scelgono i valori di V e W nel seguente modo: V=W=X22 23. Dimostrazione: Subset Sump Knapsack Dimostrare che: un sottoinsieme II, tale che la somma dei suoi elementi sia uguale a Xun sottoinsieme SS, tale che j S wj W j S vjV Dimostrazione Per costruzione dellistanza di Knapsack possibile dimostrare facilmente la seguente equivalenza:i I xi = X i I xi X i I xi X j S wj W j S vj V Questo perch: (per costruzione) i pesi ed i valori degli oggetti di Knapsack sono uguali ai valori numerici dellinsieme I di Subset Sum (per costruzione) gli insiemi I ed S sono di uguale cardinalit (per costruzione) X = V = W possibile quindi affermare che, ad ogni sottoinsieme I I per cui esiste una soluzione dellistanza di Subset Sum corrisponde esattamente, in termini di valori numerici e di numero di elementi, uno ed un solo sottoinsieme SS per cui esiste una soluzione dellistanza di Knapsack e viceversa. Si noti, inoltre, che possibile scegliere i valori, xi, vj, wj, V, W, X in tempo polinomiale, e che ogni operazione eseguita in tempo polinomiale.23 24. Conclusioni sulla dimostrazione Verificati entrambi i sensi dellimplicazione seguela tesi: Subset Sump Knapsack Verificato che KnapsackNP, si cosdimostrato che il problema dello zainoappartiene alla classe dei problemi NP-Completi24