Il problema dello zaino
|
|
|
- Gennaro Scotti
- 8 anni fa
- Просмотров:
Транскрипт
1 Il problema dello zaino (knapsack problem) Damiano Macedonio
2 Copyright Moreno Marzolla, Università di Bologna ( This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Algoritmi e Strutture Dati 2
3 Problema dello zaino 0-1 Supponiamo di avere un insieme X composto da n oggetti etichettati con gli interi da 1 a n: {1, 2,..., n} L'oggetto i-esimo ha peso p[i] e valore v[i] Esiste una unica istanza di ciascun oggetto Disponiamo un contenitore in grado di trasportare al massimo un peso pari a P Vogliamo determinare un sottoinsieme Y X di oggetti, tale che Il peso complessivo degli oggetti in Y sia P Il valore complessivo degli oggetti in Y sia il massimo possibile Algoritmi e Strutture Dati 3
4 Definizione formale Vogliamo determinare un sottoinsieme Y X di oggetti tale che: x Y p x P e tale da massimizzare il valore complessivo: x Y v x Algoritmi e Strutture Dati 4
5 Approccio greedy #1 Ad ogni passo, scelgo tra gli oggetti non ancora nello zaino quello di valore massimo, tra tutti quelli che hanno un peso minore o uguale alla capacità residua dello zaino Algoritmi e Strutture Dati 5
6 Esempio 15 / 10Kg 20 / 8Kg 20Kg 15 / 10Kg 20 / 8Kg 28 / 20Kg 28 / 20Kg La soluzione calcolata in questo esempio non è la soluzione ottima! Nota: questo algoritmo non fornisce sempre la soluzione ottima Algoritmi e Strutture Dati 6
7 Approccio greedy #2 Ad ogni passo, scelgo tra gli oggetti non ancora nello zaino quello di valore specifico massimo, tra tutti quelli che hanno un peso minore o uguale alla capacità residua dello zaino Il valore specifico è definito come il valore di un oggetto diviso il suo peso Algoritmi e Strutture Dati 7
8 Esempio 20Kg 20 / 8Kg 15 / 10Kg 15 / 10Kg 20 / 8Kg / 20Kg / 20Kg 1.4 In questo esempio, l'algoritmo greedy #2 calcola la soluzione ottima, ma... Algoritmi e Strutture Dati 8
9 Esempio 20Kg 33 / 11Kg 9Kg 15 / 10Kg / 10Kg / 10Kg / 10Kg / 11Kg in questo altro esempio anche l'algoritmo greedy #2 non produce la soluzione ottima Algoritmi e Strutture Dati 9
10 Soluzione ottima basata sulla Programmazione Dinamica Questa soluzione funziona esclusivamente se i pesi sono numeri interi Sia V[i, j] il massimo valore ottenibile da un sottoinsieme degli oggetti {1, 2,... i} in uno zaino che ha capacità massima j i=1, 2,...n j=0, 1,...P Algoritmi e Strutture Dati 10
11 Soluzione ottima basata sulla Programmazione Dinamica Sia V[i, j] il massimo valore ottenibile da un sottoinsieme degli oggetti {1, 2,..., i} in uno zaino che ha capacità massima j V[i, 0] = 0 per ogni i=1..n Se il peso massimo è zero, il valore è sempre zero V[1, j] = v[1] se j p[1] C'è abbastanza spazio per l'oggetto numero 1 V[1, j] = 0 se j < p[1] Non c'è abbastanza spazio per l'oggetto numero 1 Algoritmi e Strutture Dati 11
12 Soluzione ottima basata sulla Programmazione Dinamica Per calcolare V[i, j] distinguiamo due casi Se j<p[i] significa che l'i-esimo oggetto è troppo pesante per essere contenuto nello zaino. In tal caso V[i, j] = V[i-1, j] Se j p[i] possiamo scegliere la migliore tra le seguenti possibilità Inserire l'oggetto i-esimo nello zaino. Lo spazio residuo è j-p[i], il valore massimo ottenibile in questa ipotesi è V[i-1, j-p[i] ]+v[i] Non inserire l'oggetto i-esimo nello zaino. Il valore massimo ottenibile in questa ipotesi è V[i-1, j] Scegliendo la migliore delle possibilià, possiamo dire V[i, j] = max{ V[i-1, j], V[i-1, j-p[i] ]+v[i] } Algoritmi e Strutture Dati 12
13 Soluzione ottima basata sulla Programmazione Dinamica Riassumendo V [i 1, j] V i, j ={ max {V [i 1, j],v [i 1, j p[i]] v [i]} se j p[i] se j p[i] V[i-1, j-p[i] ] v[i] j-p[i] Kg p[i] Kg Algoritmi e Strutture Dati 13
14 i Tabella di programmazione dinamica / matrice V p =[ 2, 7, 6, 4 ] v = [, 6.4, 1.7, 0.3] j Algoritmi e Strutture Dati 14
15 i Tabella di programmazione dinamica / matrice V p =[ 2, 7, 6, 4 ] v = [, 6.4, 1.7, 0.3] j V 3,8 =max {V 2,8,V 2,8 p[3] v [3]} =max {,14.4 } Algoritmi e Strutture Dati 15
16 Stampare la soluzione Il massimo valore che è possibile inserire nello zaino rispettando il vincolo di peso massimo è contenuto nella cella V[n, P] della tabella di programmazione dinamica Come facciamo a sapere quali oggetti fanno parte della soluzione ottima? Usiamo una tabella ausiliaria booleana K[i, j] che ha le stesse dimensioni di V[i, j] K[i, j] = true se e solo se l'oggetto i-esimo fa parte della soluzione ottima che ha valore complessivo V[i, j] Algoritmi e Strutture Dati 16
17 Tabella di programmazione dinamica / stampa soluzione ottima d := P; i := n; while( i>0 ) do if ( K[i,d] == true ) then stampa Seleziono oggetto i d := d-p[i]; endif i := i-1; endwhile p =[ 2, 7, 6, 4 ] v = [, 6.4, 1.7, 0.3] F F T T T T T T F F F F F F F F F F F F F F F F F F F F F F F T T Algoritmi e Strutture Dati 17 T T T T T T F F F F F
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed
Programmazione in Python. Moreno Marzolla
Programmazione in Python Moreno Marzolla http://www.moreno.marzolla.name/ Copyright 2011, Moreno Marzolla (http://www.moreno.marzolla.name/teaching/labinf2011/) This work is licensed under the Creative
Alberi Bilanciati di Ricerca
Alberi Bilanciati di Ricerca Damiano Macedonio Uniersità Ca' Foscari di Venezia [email protected] Copyright 2009, 2010 Moreno Marzolla, Uniersità di Bologna (http://www.moreno.marzolla.name/teaching/asd2010/)
Alberto Montresor Università di Trento
!! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 6 Il FORTRAN versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina) G. Mecca Università
Alberi Binari di Ricerca
Alberi Binari di Ricerca Damiano Macedonio Università Ca' Foscari di Venezia [email protected] Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)
Algoritmi di Visita di Grafi. Damiano Macedonio [email protected]
lgoritmi di Visita di rafi amiano Macedonio [email protected] Original work opyright lberto Montresor, Università di Trento, Italy Modifications opyright 00 0, Moreno Marzolla, Università di ologna, Italy
Il problema dello zaino
Il problema dello zaino Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 25 gennaio 2010 Il problema dello zaino 0-1
Problemi dello zaino e di bin packing
Problemi dello zaino e di bin packing Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa [email protected] http://www.di.unipi.it/~galli 2 Dicembre 2014 Ricerca Operativa 2 Laurea
Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione
Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: C# versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Introduzione al corso Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of
Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia. [email protected]
Tabelle hash Damiano Macedonio Università Ca' Foscari di Venezia [email protected] Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml) Modifications
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. [email protected] http://www.moreno.marzolla.
Grafi Moreno Marzolla ip. di Informatica Scienza e Ingegneria Università di ologna [email protected] http://www.moreno.marzolla.name/ opyright lberto Montresor, Università di Trento, Italy (http://www.dit.unitn.it/~montreso/asd/index.shtml)
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Introduzione versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione
Reti di calcolatori Introduzione al corso
Reti di calcolatori Introduzione al corso Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ RETI DI CALCOLATORI Introduzione al corso - 1 Copyright Quest opera è protetta dalla licenza
Basi territoriali e numeri civici come infrastrutture informative per il censimento e oltre
Basi territoriali e numeri civici come infrastrutture informative per il censimento e oltre Istat t Direzione i Centrale Censimenti Generali Livorno, 13 maggio 2010 Censimento e territorio Il corretto
Informatica II. Capitolo 16 Backtrack
Introduzione Informatica II Capitolo 16 Backtrack Abbiamo visto che esistono diverse classi di problemi (decisionali, di ricerca, di ottimizzazione) Sono tutte definizioni basate sul concetto di soluzione
Note per la Lezione 6 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore
Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016
Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu May 10, 2016 Elementi fondamentali Un algoritmo non deterministico è un algoritmo che posto di fronte alla necessità di
Architettura dei calcolatori. Moreno Marzolla http://www.moreno.marzolla.name/
Architettura dei calcolatori Moreno Marzolla http://www.moreno.marzolla.name/ Copyright Gianluca Palermo http://home.dei.polimi.it/gpalermo/courses.htm Copyright Susanna Pelagatti Copyright 2011, Moreno
2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
. Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Conclusioni Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
Metodi di Ottimizzazione per la Logistica e la Produzione
Metodi di Ottimizzazione per la Logistica e la Produzione Laboratorio Manuel Iori Dipartimento di Scienze e Metodi dell Ingegneria Università di Modena e Reggio Emilia MOLP Parte I 1 / 41 Contenuto della
Programmazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli
Sommario Introduzione Architettura Client-Server Architettura a Due Livelli Architettura a Tre Livelli Server Web Browser Web Introduzione La storia inizia nel 1989 Tim Berners-Lee al CERN, progetto WWW
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: C# Parte b versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Mappatura dei canali logici sui canali fisici
Mappatura dei canali logici sui canali fisici Renato Lo Cigno www.dit.unitn.it/locigno/didattica/wn/...copyright Quest opera è protetta dalla licenza Creative Commons NoDerivs-NonCommercial. Per vedere
LibreOffice Calc. Moreno Marzolla http://www.moreno.marzolla.name/
Moreno Marzolla http://www.moreno.marzolla.name/ Copyright 2011, Gianluca Amato http://fad.unich.it/course/view.php?id=12 Copyright 2011, Moreno Marzolla (http://www.moreno.marzolla.name/teaching/labinf2011/)
Alberto Montresor Università di Trento
!! Algoritmi e Strutture Dati! Capitolo 3 - Tipi di dato e strutture di dati!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Concetti Avanzati Tecniche di Test e Correzione versione 2.4 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
Introduzione alla rete Internet
Introduzione alla rete Internet Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Copyright Quest opera è protetta dalla licenza Creative Commons
Branch-and-bound per KNAPSACK
p. 1/1 Branch-and-bound per KNAPSACK Rispetto allo schema generale visto in precedenza dobbiamo specificare: come si calcola un upper bound su un sottinsieme; come si effettua il branching; come si individuano
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Thread versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Problemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica
Algoritmi e strutture dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2016/09/11 This work is licensed under a Creative Commons Attribution-ShareAlike
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati La Matrice versione. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università
Introduzione alla rete Internet
Introduzione alla rete Internet Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Copyright Quest opera è protetta dalla licenza Creative Commons
Introduzione alle Reti Telematiche
Introduzione alle Reti Telematiche Esercizi Copyright Gruppo Reti Politecnico di Torino INTROUZIONE ALLE RETI TELEMATICHE - 1 Copyright Quest opera è protetta dalla licenza Creative Commons Noerivs-NonCommercial.
Tecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE Framework per il Modello 2 it.unibas.pinco versione 3.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
Introduzione alla rete Internet
Introduzione alla rete Internet Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Copyright Quest opera è protetta dalla licenza Creative Commons
Programmazione a blocchi. Algobuild Prof. Sergio Roselli
Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere
ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I
ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I Esercizio 1 Dati n oggetti ed un contenitore, ad ogni oggetto j (j = 1,, n) sono associati un peso p j ed un costo c j (con p j e c j interi positivi). Si
PROBLEMA DELLO ZAINO DI VALORE MASSIMO
UNIVERSITÀ DEGLI STUDI DI MILANO POLO DIDATTICO E DI RICERCA DI CREMA Laurea triennale in Informatica PROBLEMA DELLO ZAINO DI MASSIMO Progetto di ALGORITMI E STRUTTURE DATI Studente: Lena Cota Guido 713957
Il problema dello zaino: dalla gita in montagna ai trasporti internazionali. Luca Bertazzi
Il problema dello zaino: dalla gita in montagna ai trasporti internazionali Luca Bertazzi 0 Ricerca Operativa (Operations Research) The Science of Better Modelli e algoritmi per la soluzione di problemi
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II
Tecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: ADO.NET versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca [email protected]
GIUSEPPE DI GRANDE CORSO DI FORMAZIONE SU BIBLOS
CORSO DI FORMAZIONE SU BIBLOS - 9ª LEZIONE - Pagina 1 GIUSEPPE DI GRANDE CORSO DI FORMAZIONE SU BIBLOS Strategie e tecniche per produrre libri braille in completa autonomia Revisione del 28 luglio 2012
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Strumenti di Sviluppo: C# versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
Sicurezza e Crittografia
Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright 2011, 2016, Moreno Marzolla http://www.moreno.marzolla.name/teaching/finfa/
2.2 Alberi di supporto di costo ottimo
. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) protocolli reti IP memorizzazione compatta di
PROGRAMMAZIONE DINAMICA
PROGRAMMAZIONE DINAMICA 6.1 PROGRAMMAZIONE DINAMICA Sebbene elementi del metodo fossero già presenti in tecniche di ottimizzazione note in precedenza, si deve a Bellman lo studio sistematico (iniziato
Parte V: Rilassamento Lagrangiano
Parte V: Rilassamento Lagrangiano Tecnica Lagrangiana Consideriamo il seguente problema di Programmazione Lineare Intera: P 1 min c T x L I Ax > b Cx > d x > 0, intera in cui A = matrice m x n C = matrice
Cenni di apprendimento in Reti Bayesiane
Sistemi Intelligenti 216 Cenni di apprendimento in Reti Bayesiane Esistono diverse varianti di compiti di apprendimento La struttura della rete può essere nota o sconosciuta Esempi di apprendimento possono
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di
COORDINATOMETRO E MAPPE GEOREFERENZIATE
COORDINATOMETRO E MAPPE GEOREFERENZIATE 03/06/2015 Le caratteristiche principali dei coordinatometri, delle carte georeferenziate ed il loro uso pratico. Mauro Vannini, www.mondogeo.it This work is licensed
