I Problemi dello Zaino si collocano fra i classici problemi di ottimizzazione.
In quanto segue studieremo il Problema dello Zaino 0/1 ed il Problema dello Zaino Frazionario, descrivendone
la formulazione matematica e discutendo dei metodi per risolverli.
Siano dati uno zaino di capacità limitata pari a ed un insieme di
oggetti
.
A ciascun oggetto è associato un peso
ed un profitto
.
Senza perdita di generalità, possiamo assumere che .
Il Problema dello Zaino 0/1 consiste nell’individuare un sottoinsieme di oggetti da inserire nello zaino tale da massimizzare il profitto totale senza eccedere la capacità dello zaino.
E’ banale ipotizzare che
;
.
Introducendo variabili di decisione
, dove per ogni
si ottiene il seguente problema di PLI
Il rilassamento continuo di ha la seguente formulazione matematica
Il problema , noto come il Problema dello Zaino Frazionario, in quanto è lecito selezionare anche percentuali, frazioni di oggetti, ammette sempre una soluzione massimale, cioè il peso totale della combinazione di oggetti selezionati è sempre pari a
.
A differenza di che è un problema difficile dal punto di vista computazionale,
è un problema risolvibile in tempo polinomiale mediante l’applicazione di un semplice algoritmo greedy descritto in quanto segue.
Prima di descrivere l’algoritmo greedy per trovare una soluzione ottima al Problema dello Zaino Frazionario, è opportuno richiamare le caratteristiche principali di una qualunque tecnica di tipo greedy.
Una qualunque tecnica di tipo greedy (goloso) procede iterativamente.
A partire da una soluzione vuota, ad ogni iterazione viene aggiunto un elemento e alla soluzione parziale in costruzione.
Fra tutti i possibili candidati ad essere aggiunti, l’elemento e è quello più promettente, ossia quello che, se scelto, porta ad un maggiore miglioramento della funzione obiettivo.
E’ chiaro che non tutti i problemi possono essere risolti all’ottimo con questa strategia, ma solo quelli per i quali è possibile dimostrare che effettuare la scelta migliore al momento conduce ad una soluzione ottima globalmente.
Ed è appunto questo il caso del Problema dello Zaino Frazionario e del Problema del Minimum Spanning Tree di un grafo, come vedremo fra qualche lezione.
Gli oggetti vengono ordinati e rienumerati in ordine non crescente di profitto per unità di peso:
Ciò fatto, si individua l’oggetto critico , cioè l’oggetto tale che
La soluzione ottima di
è data da
;
;
.
L’ordinamento degli oggetti (ordine non crescente di profitto per unità di peso) richiede
La costruzione della soluzione ottima di
richiede
.
Ne consegue che la complessità dell’algoritmo greedy per il Problema dello Zaino Frazionario è
1. Presentazione del Corso ed Introduzione alla Programmazione Mat...
2. Introduzione ai Problemi di PL
6. Algoritmo del Simplesso Revisionato
7. Algoritmo del Simplesso Tabellare
10. Soluzione di Problemi di PL tramite Algoritmo del Simplesso
11. Problemi di Programmazione Lineare Intera
12. PLI con matrice dei vincoli unimodulare
13. Problemi di PLI: Branch & Bound
14. Il Problema dello Zaino 0/1 e il Problema dello Zaino Frazionar...
15. Il Problema dello Zaino 0/1: un algoritmo B&B
16. Il Problema dello Zaino 0/1: un algoritmo di Programmazione Din...
17. Richiami di Teoria dei Grafi: definizioni e notazioni
18. Il Problema del Vertex Cover Minimo di un Grafo
19. Il Problema dell'Albero di Copertura Minimo (MST)
20. Il Problema dell'Albero di Copertura Minimo (MST): esempio
D. Bertsimas e J.N. Tsitsiklis, Introduction to Linear Optimization, Belmont - Massachusetts (USA), Dynamic Ideas and Athena Scientific, 2008.
M. Fischetti, Lezioni di Ricerca Operativa, Padova, Edizioni Libreria Progetto Padova, 1999.
S. Martello, Fondamenti di Ricerca Operativa L-A, Bologna, Società Editrice Esculapio, 2004.
S. Martello, Ricerca Operativa LS, Bologna, Società Editrice Esculapio, 2004.
Dispense del Corso di Ricerca Operativa presso l'Università degli Studi di Pisa.
Dispense ed Appunti del Corso prodotte da Paola Festa.