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

27
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Transcript of Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Page 1: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Algoritmi e Strutture Dati (Mod. B)

Algoritmi Greedy

(parte II)

Page 2: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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 20 mila, 10 mila, 5 mila, e mille lire.

• Esempi• n = 58 (mila), 7 banconote: 20+20+10+5+1+1+1• n = 18 (mila), 5 banconote: 10+5+1+1+1

• Algoritmo• Dispensa una banconota alla volta• Ad ogni passo, utilizza la banconota più grande che non

superi la cifra rimanente.

Criterio di scelta greedy

Page 3: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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 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

Page 4: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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 50, 25, 10 e 1 dollari.

• Esempio• n = 55• 6 banconote: 50 + 1 + 1 + 1 + 1 + 1• 4 banconote : 25 + 10 + 10 + 10

Page 5: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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

Page 6: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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

Page 7: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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 20 mila, 10 mila, 5 mila, e mille lire.

• Esempi• n = 58 (mila), 7 banconote: 20+20+10+5+1+1+1• n = 18 (mila), 5 banconote: 10+5+1+1+1

• Algoritmo• Dispensa una banconota alla volta• Ad ogni passo, utilizza la banconota più grande che non

superi la cifra rimanente.

Criterio di scelta greedy

Page 8: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Problema del cambio di denaroTeorema: Il problema del cambio di denaro

precedente soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy.

Dimostrazione (cenni): Se b1,…,bk è una soluzione ottima al problema di cambiare n mila lire, b2,…,bk deve essere una soluzione ottima al problema di cambiare n - b1v1 mila lire (la ban-conota 1 vale v1 mila lire).

La seconda parte (scelta greedy) si basa sul fatto che non è possibile che in una soluzione ottima non compaia la scelta greedy.

Page 9: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Problema del cambio di denaroTeorema: Il problema del cambio di denaro

precedente soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy.

Dimostrazione (cenni): Assumiamo b1,…,bk 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).

Page 10: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Problema del cambio di denaroTeorema: Il problema del cambio di denaro precedente

soddisfa sia la proprietà della sottostruttura ottima che la proprietà della scelta greedy.

Dimostrazione (cenni): Assumiamo b1,…,bk 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 b1,…,bk , il che è una contraddizione.

Page 11: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Problema dell’instradamento

Page 12: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Instradamento con collegamenti bloccati

Page 13: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Instradamento con collegamenti bloccati

Page 14: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Un semplice problema di Scheduling

01 43 61 4 8 14

1

4

3

6

14 360 54 11 14

Criterio: esegui il job più piccolo per primo

4+5+11+14 = 34

1+4+8+14 = 27

• n job e 1 macchina• Ogni job ha un tempo di esecuzione• Esegui i job sulla macchina• Minimizzare il tempo di comletamento

totale

Page 15: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

14 360 54 11 14

4+5+11+14 = 34

1 360 51 11 14

34+1-4 = 314

1 60 51 8 14

31+8-11 = 284 3

1 60 41 8 14

28+4-5 = 2743

Page 16: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

01 43 61 4 8 14

1

4

3

6

1+4+8+14 = 27

043 6

3 7 13

4

3

6

3+7+13 = 23

Sottoproblema

Page 17: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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!

Page 18: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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.

Page 19: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Proprietà della scelta greedy• Perché sia applicabile la tecnica greedy, il

problema deve esibire la proprietà della scelta greedy: per ogni sottoproblema, esiste una solu-zione 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.

• La scelta riduce il problema ad un sotto-problema analogo più piccolo

• L’induzione ci permette di completare la prova.

Dipende dal criterio greedy scelto.

Page 20: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

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.

Page 21: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Problema dello Zaino

• Ci sono n oggetti a disposizione.

• L’oggetto i-esimo pesa pi chili e vale ci 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 pi chili.

Page 22: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

30

10

25£125.000

£60.000

£120.000

3025

£6.000 per chilo

£5 .000 per chilo

£4.000 per chilo

10

2530

25 20/30

£125.000 + £120.000 = £245.000

55

£120.000 + £125.000 = £245.000

£60.000 + £120.000 + £80.000 = £260.000

Scegli per primo l’oggetto che ha il più alto valore

Scegli per primo l’oggetto che ha il magior peso

Scegli per primo l’oggetto che ha il più alto valore per chilo

Page 23: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

30

10

25

£6.000 per chilo

£5.000 per chilo

£4.000 per chilo

10 25 20/30

55

£60.000 + £120.000 + + £80.000 = £260.000

£125.000

£60.000

£120.000

25 20/30 £120.000 + £80.000 = £200.000

(45)

30

25

45

£5.000 per chilo

£4.000 per chilo

£125.000

£120.000

Sottoproblema

Page 24: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Sottostruttura ottimaTeorema: Il problema dello zaino frazionario

soddisfa la sottostruttura ottima.

Dimostrazione:

• Sia S = wi la soluzione ottima al problema W con n oggetti di peso massimo pi

• S associa ad ogni oggetto i un peso 0 wi pi

• Il costo di W sarà quindi wi ci /pi e W = wi

• Se rimuoviamo la quantità w dell’oggetto h da S otteniamo una sol. S’ per il sottoproblema W - w con n-1 oggetti più ph - w

• S’ deve essere ottima! Perché?

Page 25: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Scelta greedyTeorema: Il problema dello zaino frazionario

soddisfa la scelta greedy.

Dimostrazione (cenni): Possiamo dimostrare che: nella soluzione ottima

deve comparire la quantità massima dell’oggetto con il maggior rapporto costo/peso (ci /pi) (scelta greedy).

Successamente si può dimostrare che: la scelta greedy può sempre essere fatta per prima.

Page 26: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Scelta greedyTeorema: Il problema dello zaino frazionario

soddisfa la scelta greedy.

Dimostrazione (cenni): Nella soluzione ottima deve comparire la quantità massima

dell’oggetto con il maggior rapporto costo/peso (ci /pi) (scelta greedy).

Siano ch e ph valore e peso disponibile dell’oggetto col massimo rapporto ci /pi e wi il peso dell’i-esimo oggetto nella solu-zione.

C = i=1..n wi ci /pi

Se wj 0 e avanza p’h wj dell’oggetto h allora sostituendolo nella soluzione per j ci da una soluzione migliore, infatti

wj cj /pj wj ch /ph

Page 27: Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte II)

Scelta greedyTeorema: Il problema dello zaino frazionario

soddisfa la scelta greedy.

Dimostrazione (cenni): la scelta greedy può sempre essere fatta per prima

Caso 1: W ph allora wh = W e wi =0 per gli altri.

Caso 2: Se W ph e wi è la prima scelta e per la dimostrazione precedente tutto h deve comparire.

C = wi ci /pi + ph ch /ph + i 1,h wi ci /pi

Se scambiamo i con h, otteniamo una nuova soluzione con valore

C’ = ph ch /ph + wi ci /pi + i 1,h wi ci /pi

Ma se C è ottima, lo è anche C’, poiché C = C’