PD per il problema dello zaino illimitato¶
Parte 3 · Programmazione dinamica · Capitolo 18 · Dispensa, volume 3 (PDF) · Slide · Esercizi: Zaino illimitato (UKP) · App: Tabelle della PD per i problemi di zaino
Prerequisiti
-
Da questo modulo, il capitolo «PD per il problema dello zaino 0/1»: la ricorrenza \(v(j,k)\) su oggetti e capacità e la ricostruzione di una soluzione.
-
Da questo modulo, il capitolo «Principi della programmazione dinamica»: sottostruttura ottima, sottoproblemi sovrapposti, casi base.
-
Dal modulo Algoritmi: le convenzioni dello pseudocodice (Capitolo 2) e la dimensione dell'input (Capitolo 11).
Obiettivi
Al termine di questo capitolo saremo in grado di:
-
spiegare perché l'UKP differisce dal problema dello zaino 0/1 (KP) e scrivere la ricorrenza \(v(k)\) sulle sole capacità;
-
eseguire a mano l'algoritmo di PD sulle capacità e sulle coppie (tipo di oggetto, capacità);
-
ricostruire una soluzione ottima, compreso il caso in cui una parte della capacità resta inutilizzata;
-
contare i passi dei due algoritmi di PD e confrontarli.
Il problema di questo capitolo è il problema dello zaino illimitato (UKP): la sua definizione e le sue ipotesi sono nella sua pagina.
18.1 Istanze e soluzioni ammissibili¶
Esempio 18.1: Istanza dell'UKP
Consideriamo uno zaino di capacità \(c=7\) e \(4\) tipi di oggetto, con i seguenti profitti e pesi:
Chiamiamo questa istanza dell'UKP Esempio 18.1.
Per ogni tipo di oggetto \(j\), una soluzione ammissibile può usare al più \(\lfloor c/w_j \rfloor\) copie del tipo di oggetto \(j\), poiché con più copie si supererebbe la capacità \(c\) già con il solo tipo di oggetto \(j\). Di conseguenza, il numero di soluzioni ammissibili è al più \(\prod_{j=1}^{n}\big(\lfloor c/w_j \rfloor+1\big)\).
- Il numero di possibili soluzioni dell'UKP cresce rapidamente con il numero \(n\) di tipi di oggetto e con la capacità \(c\), poiché ogni variabile \(x_j\) può assumere in modo indipendente uno qualsiasi di \(\lfloor c/w_j \rfloor+1\) valori. Pertanto, l'enumerazione di tutte le possibili soluzioni diventa presto impraticabile al crescere di \(n\) o di \(c\).
18.1.1 Codifica delle soluzioni ammissibili¶
Una soluzione ammissibile è descritta dal vettore intero
dove \(x_j\in\Z_{\ge 0}\) è il numero di copie selezionate del tipo di oggetto \(j\). La soluzione è ammissibile se
Il suo profitto totale è
La differenza principale rispetto al KP è che le variabili non sono più binarie. Nell'UKP ogni variabile \(x_j\) può assumere qualunque valore intero non negativo, purché il vincolo di capacità sia rispettato.
Avanti: 18.2 Un primo algoritmo di PD
Esercizi su questo capitolo: Zaino illimitato (UKP)
Nel laboratorio interattivo: Tabelle della PD per i problemi di zaino.