Problema dello zaino
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,229
On Slideshare
1,225
From Embeds
4
Number of Embeds
1

Actions

Shares
Downloads
2
Comments
0
Likes
1

Embeds 4

http://www.blazingcreations.com 4

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Problema dello zaino (Knapsack problem)Dimostrazione di appartenenza alla classe NP-C Fabrizio Finucci
  • 2. Knapsack Definizione (problema generico) Data una collezione di oggetti S = {x1,…,xn}, dove ogni oggetto xi è caratterizzato da due valori:  vi , valore dell’oggetto  wi , peso dell’oggetto entrambi interi positivi, e dato uno zaino dotato di una certa capacità di peso W, restituire un sottoinsieme 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 senza ripetizioni 2. problema dello zaino limitato (Bounded Knapsack problem), in cui ogni oggetto non può essere inserito più di un numero fissato di volte 3. problema dello zaino illimitato (Unbounded Knapsack problem), in cui ogni oggetto può essere inserito un numero arbitrario di volte3
  • 4. 0-1 Knapsack  D’ora in poi si farà riferimento al caso 0-1 Knapsack  Esempio: # valore peso 1 1 1 S : {3,4} ha valore 40 2 6 2 W = 11 3 18 5 4 22 6 5 28 74
  • 5. Knapsack (versione decisionale)  Al fine di dimostrare l’appartenenza 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 dell’oggetto  wi , peso dell’oggetto entrambi interi positivi. Dato uno zaino dotato di una certa capacità di peso W e un valore intero V, decidere se esiste un sottoinsieme S di oggetti xj tali che  j S wj W  j S vj V6
  • 7. Knapsack è NP-Completo Teorema Knapsack è NP-Completo Dimostrazione Si dividerà la dimostrazione in due passi: 1. dimostrazione che Knapsack NP 2. dimostrazione che Knapsack è riducibile polinomialmente da un altro problema NP- Completo, in questo caso dal problema della somma del sottoinsieme (Subset Sum problem)7
  • 8. Subset Sum Definizione Dato un insieme di numeri naturali I = {x1,…,xn}, e dato un intero X, decidere se esiste un sottoinsieme I I di numeri naturali, tali che sommati 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-Completo Teorema Subset Sum è NP-Completo Dimostrazione Si dividerà la dimostrazione in due passi: 1. dimostrazione che Subset Sum NP 2. dimostrazione che Subset Sum è riducibile polinomialmente 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 un’assegnazione di verità delle variabili soddisfacibile? Definizione (3-SAT) Data una formula F in CNF, con ogni clausola contenente esattamente 3 letterali, esiste un’assegnazione di verità delle variabili soddisfacibile?10
  • 11. Dimostrazione: Subset Sum NP Lemma Subset Sum NP Dimostrazione  Un sottoinsieme I I è 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, si dimostra che Subset Sum appartiene a tale11 classe di complessità
  • 12. Dimostrazione: 3-SAT p Subset Sum Lemma 3-SAT p Subset Sum Dimostrazione Data un’istanza F di 3-SAT, si costruirà un’istanza di Subset Sum tale che ammetta una soluzione sse F è soddisfacibile Costruzione Data un’istanza 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 dell’istanza 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 10100 F = C1 C2 C3 T 0 1 0 0 1 1 10011 C1 = x y z yz 0 0 1 1 1 0 1110 C2 = x y z 0 0 1 0 0 1 1001 C3 = x y z 0 0 0 1 0 0 100 z 0 0 0 2 0 0 200 0 0 0 0 1 0 10 D 0 0 0 0 2 0 20 0 0 0 0 0 1 1 0 0 0 0 0 2 213 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 dell’istanza di 3-SAT  k = # clausole dell’istanza di 3-SAT • le prime n colonne rappresentano le variabili dell’istanza di 3-SAT, mentre le restanti k colonne rappresentano le clausole della medesima istanza • per ogni variabile dell’istanza 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) all’interno 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 dell’insieme 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 nell’istanza di Subset Sum16
  • 17. Dimostrazione: 3-SAT p Subset Sum Dimostrare che: F è soddisfacibile un 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 un’assegnazione 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 l’assegnazione 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 l’assegnazione 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 l’assegnazione derivata a partire dai numeri in I è un’ assegnazione di verità valida per l’istanza di 3-SAT che soddisfa tutte le clausole e quindi la formula Si noti, inoltre, che la lunghezza dell’istanza di Subset Sum è polinomiale rispetto alla lunghezza dell’istanza di 3-SAT e che ogni operazione viene eseguita in tempo polinomiale.18
  • 19. Conclusioni sulla dimostrazione  Verificati entrambi i sensi dell’implicazione e verificato che Subset Sum NP segue che Subset Sum è NP-Completo  Si procederà ora con la dimostrazione dell’appartenenza di Knapsack alla classe dei problemi NP-Completi19
  • 20. Dimostrazione: Knapsack NP Lemma Knapsack NP Dimostrazione  Un sottoinsieme S S è 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 Sum p Knapsack Dimostrazione Data un’istanza di Subset Sum si costruirà un’istanza di Knapsack, tale che ammetta una soluzione sse l’istanza di Subset Sum ammette una soluzione Costruzione Dati i valori (interi positivi) xi, con i {1,…,n}, dell’insieme I di Subset Sum, si costruiranno i valori (interi positivi) vj, wj, con j {1,…,m}, V, W per l’istanza di Knapsack nella maniera che si andrà21 ad illustrare
  • 22. Costruzione dell’istanza  Si imposta la seguente condizione: n = m (i.e. si prendono tanti oggetti dell’insieme S di Knapsack quanti sono i numeri dell’insieme 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 Sum p Knapsack Dimostrare che: un sottoinsieme I I, tale che la somma dei suoi elementi sia uguale a X un sottoinsieme S S, tale che j S wj W j S vj V Dimostrazione Per costruzione dell’istanza 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 dell’insieme 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 dell’istanza di Subset Sum corrisponde esattamente, in termini di valori numerici e di numero di elementi, uno ed un solo sottoinsieme S S per cui esiste una soluzione dell’istanza 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 dell’implicazione segue la tesi: Subset Sum p Knapsack  Verificato che Knapsack NP, si è così dimostrato che il problema dello zaino appartiene alla classe dei problemi NP- Completi24