Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Documenti analoghi
Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi e Strutture Dati

Appunti lezione Capitolo 14 Greedy

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo

Corso di Perfezionamento

Programmazione dinamica

Il problema dello zaino

Programma. Algoritmi e Strutture Dati 2. Docenti. Programma (cont.) Materiale didattico. Modalità d esame

Complementi ed Esercizi di Informatica Teorica II

Problemi, istanze, soluzioni

Algoritmi greedy. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Elezione di un leader in una rete ad anello

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Ordinamento per inserzione e per fusione

METODI DELLA RICERCA OPERATIVA

Note per la Lezione 6 Ugo Vaccaro

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercitazione 4 Algoritmi greedy

Il problema dello zaino

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Laboratorio di Algoritmi e Strutture Dati

carattere a b c d e f cod. var

Grafi (non orientati e connessi): minimo albero ricoprente

3.4 Metodo di Branch and Bound

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Progettazione di Algoritmi

OTTIMIZZAZIONE LINEARE MULTICRITERIO

Programmazione Lineare Intera: Piani di Taglio

Def. La lunghezza media L(C) di un codice C per una v.c. Obiettivo: Codice ottimo rispetto alla lunghezza media. Lunghezza media di un codice

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Universita degli Studi di Siena

Permutazioni. 1 Introduzione

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Esame di Ricerca Operativa - 21 gennaio 2009 Facoltà di Architettura - Udine - CORREZIONE -

Algoritmi e strutture di dati 2

Secondo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Tecniche Algoritmiche: divide et impera

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Parte III: Algoritmo di Branch-and-Bound

Programmazione Lineare Intera

Il problema dello zaino: dalla gita in montagna ai trasporti internazionali. Luca Bertazzi

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n

5.4.5 Struttura dell algoritmo ed esempi

Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati

Aniello Murano Problemi non decidibili e riducibilità

Progettazione di Algoritmi

PROGRAMMAZIONE DINAMICA

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III

Note per la Lezione 7 Ugo Vaccaro

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Gli insiemi N, Z e Q. I numeri naturali

Dai ponti di Königsberg al postino cinese

Ordinamenti per confronto: albero di decisione

Problemi di localizzazione di servizi (Facility Location Problems)

SCUOLA GALILEIANA DI STUDI SUPERIORI CLASSE DI SCIENZE NATURALI ESAME DI AMMISSIONE, PROVA DI MATEMATICA 13 SETTEMBRE 2011

Algoritmi e Strutture Dati

Appunti sui Codici di Reed Muller. Giovanni Barbarino

Programmazione dinamica. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis

Soluzione dei problemi di Programmazione Lineare Intera

PROGRAMMAZIONE LINEARE E DUALITA'

Cammini minimi in grafi:

Grafi pesati Minimo albero ricoprente

Complemento 1 Gli insiemi N, Z e Q

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

Algoritmi e Strutture Dati

Progettazione di algoritmi. Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo. Appello del 15 Novembre Attenzione:

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5

DAI NUMERI NATURALI AI NUMERI RAZIONALI

ASSEGNAMENTO DELLE OPERAZIONI DI TAGLIO NELLA PRODUZIONE DI CAPI DI ABBIGLIAMENTO

Programmazione dinamica

Algoritmi di Ricerca

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Tecniche Algoritmiche

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Analisi ammortizzata (Tarjan in 1985)

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Parallel sorting. Algoritmi Avanzati. Davide Lo Re

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Problemi dello zaino e di bin packing

percorso 4 Estensione on line lezione 2 I fattori della produzione e le forme di mercato La produttività La produzione

Ottimizzazione Combinatoria e Reti (a.a. 2007/08)

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Cammini minimi fra tutte le coppie

Transcript:

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 A volte usare la programmazione dinamica è costoso in termini di sviluppo e di efficienza mentre, in alcuni casi, esistono tecniche più immediate ed efficienti Gli algoritmi greedy sono algoritmi basati sull idea di fare sempre scelte che sembrano ottime al momento della scelta. IMPORTANTE: Non sempre è garantita la correttezza, ma, se lo è, sono in genere molto semplici ed efficienti.

Problema della selezione di attività Problema: Siano date N attività in competizione tra loro per l utilizzo di una certa risorsa. Trovare l allocazione ottimale della risorsa, cioè il massimo sottoinsieme di attività che la possano condividere senza creare conflitti per l utilizzo della risorsa. S={1,2,,N} un insieme di attività Ad ogni attività i S sono associati s i = tempo di inizio (attivazione) f i = tempo di fine (conclusione) tali che s i f i

Problema della selezione di attività Definizione: Due attività i e j si dicono compatibili se gli intervalli [s i, f i ] e [s j, f j ] sono disgiunti, cioè non si sovrappongono. In altre parole se vale f j s i oppure f i s j Problema (riformulato): Dato l insieme di attività S={1,2,,N}, trovare il massimo sottoinsieme di attività tra loro compatibili. Assumiamo che le attività siano ordinate per tempo di terminazione, cioè: f j f i se j < i

Problema della selezione di attività Problema (riformulato): Dato l insieme di attività S={1,2,,N}, (ordinate per tempo di terminazione) trovare il massimo sottoinsieme di attività tra loro compatibili. 1. Partiamo con un insieme A di attività inizialmente vuoto e j=1 2. Inseriamo in A l attività j col minimo tempo di terminazione 3. Fra le attività rimanenti compatibili con j selezionare l attività i col minore tempo di terminazione aggiungere l attività selezionata i ad A 4. Se esistono altre attività compatibili con i, torniamo al passo 3 altrimenti terminamo

Problema della selezione di attività 1. Assumiamo che le attività siano ordinate in modo crescente rispetto al tempo di fine. f 1 f 2 f N (possiamo applicare Algoritmo di Ordinamento!) 2. Siano S=[s 1,,s N ] e F=[f 1,, f N ] i vettori contenenti i tempi di inizio (non ordinati) e di fine (ordinati) 3. Greedy-Activity-Selection(S,F: array) A = {1} j = 1 for i = 2 to length[s] do if S[i] F[j] then A = A «{i} j = i 4. Al termine l inseme A contiene la soluzione greedy al problema costruito in tempo lineare Q(n) [Q(n log n)]

i s i f i 1:1-4 1 1 4 2:3-5 2 3 5 3:-6 4:5-7 3 6 5:3-8 4 5 7 5 3 8 6 5 9 7 6 1 8 8 11 9 8 12 1 12 14 3 6 Criterio: seleziona l attività che termina prima per prima 1 1 4 5 4 7 8 6:5-9 7:6-1 8:8-11 9:8-12 1:12-14 9 12 3 attività 1 14 4 attività 8 1 8 11 12 14

i s i f i 1 1 4 2 3 5 3 6 4 5 7 5 3 8 6 5 9 7 6 1 8 8 11 9 8 12 1 12 14 1:1-4 2:3-5 3:-6 4:5-7 5:3-8 1 2 3 5 4 6 6:5-9 7:6-1 8:8-11 9:8-12 1:12-14 1 2 3 4 5 6 7 8 9 1 11 12 13 14

i s i f i 1 1 4 2 3 5 3 6 4 5 7 5 3 8 6 5 9 7 6 1 8 8 11 9 8 12 1 12 14 1:1-4 2:3-5 6:5-9 7:6-1 3:-6 8:8-11 4:5-7 9:8-12 5:3-8 1:12-14 1 4 7 8 9 1 1 2 3 4 5 6 7 8 9 1 11 12 13 14

i s i f i 1 1 4 2 3 5 3 6 4 5 7 5 3 8 6 5 9 7 6 1 8 8 11 9 8 12 1 12 14 1:1-4 2:3-5 3:-6 4:5-7 5:3-8 1 4 8 6:5-9 7:6-1 8:8-11 9:8-12 1:12-14 1 1 2 3 4 5 6 7 8 9 1 11 12 13 14

Selezione di attività: correttezza Teorema: L algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Per assunzione dell algoritmo, le N attività sono ordinate per tempo di fine, quindi la prima attività è quella che termina per prima. Dimostriamo innanzi tutto che esiste una soluzione ottima che inizia con la prima attività. Sia A S una qualsiasi soluzione ottima. Ordiniamola per tempi di fine crescenti. Supponiamo che A[1] = S[k] e k 1 (cioè la prima attività di A non è quella con tempo di terminazione minore in S) Quindi vale f 1 < f k.

Selezione di attività: correttezza Teorema: L algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Dimostriamo innanzi tutto che esiste una soluzione ottima che inizia con la prima attività. A S sia una qualsiasi soluzione ottima (ordinata per tempi di fine) con A[1] = S[k] e k 1. Quindi vale f 1 < f k. Possiamo quindi costruire un altra soluzione B = A - {k} + {1} B è una soluzione perchè vale f 1 < f k e quindi nessun vincolo di compatibilità è violato. B è anche ottima perchè ha lo stesso numero di attività della soluzione ottima A. B è quindi una sol. ottima che inizia con la scelta greedy.

Selezione di attività: correttezza Teorema: L algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy). Dopo la scelta greedy, il problema si riduce al sottoproblema di trovare la massima sequenza di attività compatibili con la prima. Il sottoproblema è quindi di cercare di una sequenza massima di attività tra S = {i S : s i f 1 } (vedi if in codice) Se A è una soluzione ottima, la soluzione ottima del sottoproblema S è allora A = A - {1}. Dimostriamolo! Se A non fosse ottima, esisterebbe un B maggiore di A...

Selezione di attività: correttezza Teorema: L algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy). Il sottoproblema è quindi di cercare di una sequenza massima di attività tra S = {i S : s i f 1 } (vediif in codice) Se A è una soluzione ottima, la soluzione ottima del sottoproblema S è A = A - {1}. Se A non fosse ottima, esisterebbe un B maggiore di A per lo stesso sottoproblema S = {i S : s i f 1 }. Ma aggiungendo l attività 1 a B, otterremo una soluzione B migliore di A (contraddizione).

Selezione di attività: correttezza Teorema: L algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy)...... e dopo la prima scelta greedy, rimaniamo col sottoproblema (analogo) di cercare di una sequenza massima di attività in un insieme S = {i S : s i f 1 }. Per induzione si può allora dimostrare facilmente che data una qualsiasi soluzione ottima ad un (sotto-)problema, essa contiene al suo interno le soluzioni ottime dei suoi sottoproblemi (proprietà della sottostruttura ottima). L induzione completa anche la proprietà della scelta greedy.

Selezione di attività: esercizio Esercizio: mostrare che le seguenti due strategie greedy non garantiscono la soluzione ottima: 1. selezionare sempre l attività con durata minore compatibile con le precedenti 2. selezionare sempre l attività che, tra quelle rimanenti, si accavalla col minor numero di attività

Problema del cambio di denaro Input Un numero intero positivo n Output Il più piccolo numero intero di banconote per cambiare n mila lire usando pezzi da 2 mila, 1 mila, 5 mila, e mille lire. Esempi Criterio di scelta greedy n = 58 (mila), 7 banconote: 2+2+1+5+1+1+1 n = 18 (mila), 5 banconote: 1+5+1+1+1 Algoritmo Dispensa una banconota alla volta Ad ogni passo, utilizza la banconota più grande che non superi la cifra rimanente.

Un altro problema del cambio di denaro Input Un intero positivo n Output Il più piccolo numero di banconote per cambiare n dollari usando banconote da 12, 8, e 1 dollari. Esempio n = 31 9 banconote: 12 + 12 + 1 + 1 + 1 + 1 + 1 + 1 + 1 6 banconote : 12 + 8 + 8 + 1 + 1 + 1 Il criterio greedy non garantisce ottimalità

Un altro problema del cambio di denaro Input Un intero positivo n Output Il più piccolo numero di banconote per cambiare n dollari usando banconote da 5, 25, 1 e 1 dollari. Esempio n = 55 6 banconote: 5 + 1 + 1 + 1 + 1 + 1 4 banconote : 25 + 1 + 1 + 1 Il criterio greedy non garantisce ottimalità

Algoritmo Greedy Costituito da una sequenza di scelte. Ad ogni punto di decisione, sceglie quella che sembra essere la scelta migliore in quel momento. Procede in maniera top-down Prende una decisione greedy dopo l altra Iterativamente riduce il problema ad uno di entità (complessità) minore

Ingredienti per garantire l ottimalità Ottimo per alcuni problemi ma non per tutti Propertà della scelta greedy Una soluzione globalmente ottima può esser ottenuta effettuando, in sequenza, delle scelte localmente ottime (greedy). Propertà della sottostruttura ottima Una soluzione ottima al problema contiene le soluzioni ottime dei sottoproblemi Simile al caso della programmazione dinamica

Problema del cambio di denaro Input Un numero intero positivo n Output Il più piccolo numero intero di banconote per cambiare n mila lire usando pezzi da 2 mila, 1 mila, 5 mila, e mille lire. Esempi Criterio di scelta greedy n = 58 (mila), 7 banconote: 2+2+1+5+1+1+1 n = 18 (mila), 5 banconote: 1+5+1+1+1 Algoritmo Dispensa una banconota alla volta Ad ogni passo, utilizza la banconota più grande che non superi la cifra rimanente.

Problema del cambio di denaro Teorema: Il problema del cambio di denaro precedente soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy. Dimostrazione (cenni): Se b 1,,b k è una soluzione ottima al problema di cambiare n mila lire, b 2,,b k deve essere una soluzione ottima al problema di cambiare n-b 1 v 1 mila lire (la banconota 1 vale v 1 mila lire). La seconda parte (scelta greedy) si basa sul fatto che non è possibile che in una soluzione ottima non compaia la scelta greedy.

Problema del cambio di denaro Teorema: Il problema del cambio di denaro precedente soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy. Dimostrazione (cenni): Assumiamo b 1,,b k sia una soluzione ottima, che la banconota h sia la più grande non superiore all importo n e che h non compaia nella soluzione. Analizzando i casi possibili, si nota che se h non supera n, esisterà sempre nella soluzione un insieme di almeno due biglietti di tagia inferiore ad h la cui somma sia proprio h (tutti i tagli sono infatti divisibili per qualsiasi dei tagli minori).

Problema del cambio di denaro Teorema: Il problema del cambio di denaro precedente soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy. Dimostrazione (cenni): Assumiamo b 1,,b k sia una soluzione ottima, che la banconota h sia la più grande non superiore all importo n e che h non compaia nella soluzione. Analizzando i casi possibili, si nota che se h non supera n, esisterà sempre nella soluzione un insieme di almeno due biglietti di tagia inferiore ad h la cui somma sia proprio h (tutti i tagli sono infatti divisibili per qualsiasi dei tagli minori). Quindi sostituendo nella soluzione il biglietto di taglia maggiore si otterrebbe una soluzione migliore di b 1,,b k, il che è una contraddizione.

Un semplice problema di Scheduling n job e 1 macchina Ogni job ha un tempo di esecuzione Eseguire i job sulla macchina Minimizzare tempo di completamento totale 1 3 4 6 4 1 6 3 4 5 11 14 4+5+11+14 = 34 1 3 4 6 1+4+8+14 = 27 1 4 8 14 Criterio: esegui il job più piccolo per primo

4 1 6 3 4 5 11 14 4+5+11+14 = 34 1 4 6 3 1 5 11 14 34+1-4 = 31 1 4 3 6 1 5 8 14 31+8-11 = 28 1 3 4 6 1 4 8 14 28+4-5 = 27

1 3 4 6 1 3 4 6 1 4 8 14 1+4+8+14 = 27 3 4 6 Sottoproblema 3 4 6 3 7 13 3+7+13 = 23

Un semplice problema di Scheduling Teorema: Il problema dello scheduling soddisfa la sottostruttura ottima. Teorema: Il problema dello scheduling soddisfa la scelta greedy. Dimostrare i due teoremi per esercizio!

Vantaggi e Svantaggi Svantaggi Fornisce una soluzione subottima: Cambio di denaro Non riesca a fornire una soluzione: Instradamento con collegamenti bloccati Vantaggi Facile da sviluppare e realizzare Basso tempo di esecuzione Spesso i problemi che si vogliono risolvere con questo metodo sono difficili. È improbabile riuscire a trovare una soluzione ottima in ogni caso.

Proprietà della scelta greedy Perché sia applicabile la tecnica greedy, il problema deve esibire la proprietà della scelta greedy: per ogni sottoproblema, esiste una soluzione ottima che inizia con la scelta greedy. Questa proprietà va dimostrata per induzione. A partire da una soluzione ottima ad un sottoproblema, si costruisce una soluzione che inizia con una scelta greedy e che è ancora ottima. Dipende dal criterio greedy scelto. La scelta riduce il problema ad un sottoproblema analogo più piccolo L induzione ci permette di completare la prova.

Proprietà della sottostruttura ottima Perché sia applicabile la tecnica greedy, il problema deve esibire la proprietà della sottostruttura ottima Ovviamente anche questa proprietà va dimostrata come per la programmazione dinamica. La tecnica per dimostrarla è essenzialmente la stessa.

Problema dello Zaino frazionario Ci sono n oggetti a disposizione. L oggetto i-esimo pesa p i chili e vale c i mila lire. Vogliamo caricare uno zaino con un carico di oggetti in modo da massimizzare il valore complessivo del carico ma di non superare un peso fissato di W chili. Si possono anche inserire porzioni di oggetti di meno di p i chili.

6. 1 6. per chilo 125. 25 5. per chilo 12. 3 4. per chilo 55 Scegli per primo l oggetto che ha il più alto valore 25 3 125. + 12. = 245. Scegli per primo l oggetto che ha il magior peso 3 25 12. + 125. = 245. Scegli per primo l oggetto che ha il più alto valore per chilo 1 25 2/3 6. + 12. + 8. = 26.

6. 1 6. per chilo 125. 12. 25 3 5. per chilo 4. per chilo 55(45) 1 25 2/3 6. + 12. + + 8. = 26. 125. 25 5. per chilo Sottoproblema 12. 3 4. per chilo 45 25 2/3 12. + 8. = 2.

Sottostruttura ottima Teorema: Il problema dello zaino frazionario soddisfa la sottostruttura ottima. Dimostrazione: Sia S = «w i la soluzione ottima al problema W con n oggetti di peso massimo p i S associa ad ogni oggetto i un peso w i p i Il costo di W sarà quindi S w i c i /p i e W =S w i Se rimuoviamo la quantità w dell oggetto h da S otteniamo una sol. S per il sottoproblema W -w con n-1 oggetti più p h - w S deve essere ottima! Perché?

Scelta greedy Teorema: Il problema dello zaino frazionario soddisfa la scelta greedy. Dimostrazione (cenni): 1. Possiamo dimostrare che: nella soluzione ottima deve comparire la quantità massima dell oggetto con il maggior rapporto costo/peso (c i /p i ) (scelta greedy). 2. Successamente si può dimostrare che: la scelta greedy può sempre essere fatta per prima.

Scelta greedy Teorema: Il problema dello zaino frazionario soddisfa la scelta greedy. Dimostrazione (cenni): 1. Nella soluzione ottima deve comparire la quantità massima dell oggetto con il maggior rapporto costo/peso (c i /p i ) (scelta greedy). Siano c h e p h valore e peso disponibile dell oggetto col massimo rapporto c i /p i e w i il peso dell i-esimo oggetto nella soluzione. C= S i=1..n w i Íc i /p i Se w j e avanza p h w j dell oggetto h allora sostituendolo nella soluzione per j ci da una soluzione migliore, infatti w j Íc j /p j w j Íc h /p h

Scelta greedy Teorema: Il problema dello zaino frazionario soddisfa la scelta greedy. Dimostrazione (cenni): 2. la scelta greedy può sempre essere fatta per prima Caso 1: W p h allora w h = W e w i = per gli altri. Caso 2: Se W p h e w i è la prima scelta e per la dimostrazione precedente tutto h deve comparire. C= w i Íc i /p i + p h Íc h /p h + S i 1,h w i Íc i /p i Se scambiamo i con h, otteniamo una nuova soluzione con valore C = p h Íc h /p h + w i Íc i /p i + S i 1,h w i Íc i /p i Ma se C è ottima, lo è anche C, poiché C = C

Problema dello Zaino -1 Identica formulazione del problema dello zaino eccettuato che un oggetto deve essere abbandonato tutto oppure preso tutto 1 25 2/3 Non è più permesso

6. 1 6. per chilo 125. 25 5. per chilo 55 12. 3 4. per chilo Scegli per primo l oggetto che ha il più alto valore per chilo 1 25 2/3 6. + 12. + 8. = 26. 1 25 1 3 3 25 6. + 125. = 185. 6. + 12. = 18. 12. + 125. = 245.

Sottostruttura ottima Teorema: Il problema dello zaino -1 soddisfa la sottostruttura ottima. Dimostrazione: Sia S I la soluzione ottima al problema W, I è l insieme complessivo degli n oggetti, i I ha peso p i S è cioè un sottoinsieme degli oggetti a disposizione. Il valore di W sarà quindi S i S c i e W =S i S p i Se rimuoviamo l oggetto h da S otteniamo una sol. S per il sottoproblema W - p h con n-1 oggetti (h escluso). S deve essere ottima! Perché?

Scelta greedy Il problema dello zaino -1 non soddisfa la proprietà di scelta greedy. 1 25 6. + 125. = 185. 3 25 12. + 125. = 245.

Algoritmo per lo Zaino -1 Dobbiamo usare la programmazione dinamica v(i,w) = massimo valore dello zaino con peso al massimo w e con solo gli oggetti 1,,i disponibili. v(,w) = per ogni w v(i,) = per ogni i Vogliamo calcolare v(n,w) v(i,w) = v(i-1,w) per ogni i e per w < p i v(i,w) = max{ v(i-1,w), v(i-1,w-p i )+c i } altrimenti

24 6 24 6 12 2 12 2 25 5 11 9 v(i,w) = max{ v(i-1,w), v(i-1,w-p i )+c i } i w 1 2 3 4 5 6 7 8 9 1 11 1 24 24 24 24 24 24 2 12 12 12 12 24 24 36 36 36 36 3 12 12 12 25 25 37 37 37 37 49

12 25 24 2 5 6 v(,w) = per ogni w v(i,) = per ogni i v(i,w) = v(i-1,w) per ogni i e per w < p i v(i,w) = max{ v(i-1,w), v(i-1,w-p i )+c i } 11 i w 1 2 3 4 5 6 7 8 9 1 11 1 12 12 12 12 12 12 12 12 12 12 2 12 12 12 25 25 37 37 37 37 37 3 12 12 12 25 25 37 37 37 37 49

Greedy e Prog. Dinamica Il problema mostra sottostruttura ottima Problema dello Zaino fazionario La tecnica Greedy funziona Usare programmazione dinamica è inutilmente complicato (il metodo è sovradimensionato) Problema dello Zaino -1 La tecnica Greedy non funziona È necessaria la programmazione dinamica

Esercizi Esercizio 17.2-3 Esercizio 17.2-4