Il problema del camba-monete. ALGORITMI GREEDY camba-monete schedulng a mnmo l rtardo Scopo. Dat tagl dsponbl: c, c, 5c, 0c, 0c, 50c,, progettare un algortmo che data una certa somma la camb usando l mnmo numero d monete. Ex. cent. Algortmo del cassere. Ad ogn terazone, aggung una moneta del valore pù alto che non supera la somma rmanente da pagare. Ex..8. 7 Algortmo del cassere Propretà d una soluzone ottma Ad ogn terazone, aggung una moneta del valore pù alto possble che non supera la somma rmanente da pagare. ALGORITMO-DEL-CASSIERE (x, c, c,, cn) Tagl dsponbl: c, c, 5c, 0c, 0c, 50c,, Prop. Il numero d monete da c è. Dm. Se c fossero monete da c potremmo sostturle con una da c. ORDINA gl n tagl d moneta c < c < < cn S φ WHILE x > 0 k n nseeme d monete selezonate WHILE k > 0 IF ck x x x ck ; S S { k } Prop. Numero d monete da c. Prop. Number d monete da 5c. Prop. Number d monete da 0c. Prop. 5 Number d monete da 0c. Prop. 6 Number d monete da 50c. Prop. 7 Number d monete da. BREAK WHILE IF k = 0 RETURN "nessuna soluzone" END WHILE RETURN S Prop. Numero d c + numero d c. Dm. due c e un c possono essere sosttut da un 5c; Domanda. L algortmo del cassere fornsce sempre la soluzone ottma? 8 Prop. 0 Numero d 0c + number d 0c.
Anals dell algortmo del cassere (greedy) L algortmo del cassere per altr tagl d moneta Teorema. L algortmo è ottmo per le monete:,, 5, 0, 0, 50,,. Dm. [per nduzone su x (la somma da cambare)] Consderamo la soluzone ottma Opt per cambare una somma x tale che c k x < c k+ : Greedy scegle prma la moneta d valore c k. Se nella soluzone ottma Opt non c fosse la moneta d taglo c k Opt dovrebbe contenere monete c,, c k che sommano ad x c k dalla tabella s vede che tale collezone d monete non può esstere Qund Opt={c k } soluzone per x c k cents, che, per nduzone, è quella ottenuta dall algortmo del cassere. Domanda. L algortmo del cassere è ottmo per ogn nseme d monete? Rsposta. No. S consder l caso de francoboll: 0c, 70c, 85c, 0c,,.,.5,,.0,.80,. Algortmo del cassere:.80 =.5 + 0c + 0c + 0c. Ottmo:.80 = 0c + 0c. k ck ogn soluzone ottma soddsfa # c # c max valore con monete c,, ck n Opt 5 #c + #c + = 0 #5c + 5 = 5 0 #0c + 0 = 6 50 #0c + #0c +0+0 = 0 Importante. Infatt potrebbe addrttura portare a non dare una soluzone, dove ne esste una. Esempo, con tagl de francoboll senza quello da 0c: Per la somma.70 Casher's algorthm:.70 =.0 +???. Ottmo:.70 = + 70c. Camba-monete n Bonformatca Mass Decomposton Problem. Abbamo un frammento d DNA d massa par a 650±Da e nessun altra nformazone. Come possamo provare ad dentfcarlo? Passo. Qual combnazon d bas esstono con tale massa?. ALGORITMI GREEDY camba-monete schedulng a mnmo rtardo Rsposta. Esstono solo due possbl combnazon: 8 guanne: 6.Da + 8.0Da (una molecola d acqua) 7 ctosne e tmne: 6. Da + 8.0 Da (acqua) DNA Mass Decomposzone Problem = Problema del Cambamonete Pes molecolar de nucleotd = tagl d monete dsponbl molecola da dentfcare = somma da cambare
Schedulng che mnmzza l rtardo Mnmzzare l rtardo: possbl scelte greedy Il problema del mnmo rtardo. Un computer esegue un programma per volta. Job rchede t() untà d tempo e deve essere completato entro d(). Se comnca l esecuzone al tempo s(), termnerà al tempo f() = s() + t(). Rtardo: = max { 0, f() d() }. Scopo: ordne d esecuzone de obs che mnmzza l massmo rtardo L = max. t d 6 8 5 6 5 Lo schema Greedy. Ordna ob seguendo un crtero apparentemente [In ordne d lunghezza] Ordna obs n ordne d tempo d esecuzone crescente t. [In ordne d scadenza] Ordna ob n ordne crescente d scadenza d(). rtardo = rtardo = 0 max rtardo = 6 d = d = 8 d 6 = 5 d = 6 d 5 = d = 0 5 6 7 8 0 5 [In ordne d tempo rmanente] Ordna ob n ordne crescente della dfferenza tra la deadlne e la lunghezza del ob d t. 5 Mnmzzare l rtardo: scelte greedy Mnmzzare l rtardo: scelte greedy Schema Greedy. Ordna ob seguendo un crtero (apparentemente) Schema Greedy. Ordna ob seguendo un crtero (apparentemente) [In ordne d lunghezza] Ordna obs n ordne d tempo d esecuzone crescente t. [In ordne d tempo rmanente] Ordna ob n ordne crescente della dfferenza tra la deadlne e la lunghezza del ob d t. t 0 controesempo t 0 controesempo d 00 0 max rtardo = d 0 max rtardo = d = 00 d = 0 d = 0 d = 0 5 6 7 8 0 5 0 5 6 7 8 0 5 max rtardo = 0 max rtardo = d = 0 d = 00 d = d = 0 6 0 5 6 7 8 0 5 0 5 6 7 8 0 5 7
Mnmzzare l rtardo: n ordne d deadlne Mnmzzare l rtardo: nessun tempo morto EARLIEST-DEADLINE-FIRST (n, t, t,, tn, d, d,, dn) Osservazone. Esste un ordne d esecuzone ottmo senza temp mort. ORDINA n ob n modo che d d dn. d = d = 6 0 5 6 d = 7 8 0 t 0 FOR = TO n Assegna ob all ntervallo [t, t +t]. 5 6 d = d = 6 d = 0 5 6 7 8 0 s t ; f t + t t t t + t RETURN ntervall [s, f], [s, f],, [sn, fn]. d 6 8 5 Osservazone. La soluzone greedy n ordne d scadenza non ha temp mort. max lateness = d = 6 d = 8 d = d = d 5 = d 6 = 5 0 5 6 7 8 0 5 8 Mnmzzare l rtardo: nverson Mnmzzare l rtardo: nverson Def. Dato un ordne d esecuzone S, un nversone è una coppa d ob e tal che: () greedy schedula prma e po (qund d() d() ) () ma precede n S. nversone f() Def. Dato un ordne d esecuzone S, un nversone è una coppa d ob e tal che: d() < d() ma precede n S. nversone f() prma dello scambo [ assumamo che ob sano numerat con d d d n ] dopo lo scambo f '() Osservazone. La soluzone greedy n ordne d scadenza non ha nverson. Osservazone. Se un ordne d esecuzone (senza temp mort) presenta un nversone, allora ha un nversone costtuta da una coppa d ob consecutv. 0 Lemma. Scambando due ob adacent che formavano un nversone, rduce l numero d nverson d uno e non aumenta l max rtardo. Dm. Sa l rtardo prma dello scambo, e sa ' l rtardo dopo lo scambo. ' k = k per ogn k,. '. se è n rtardo, ' = f '() d()! = f() d()! (per defnzone) ( ora fnsce al tempo f() ) f() d()! (perché e formano un nversone).!! (per defnzone)
Mnmzzare l rtardo: anals d greedy Stratege per l anals d algortm Greedy Teorema. L ordne S fornto dall algortmo greedy per ordne d scadenza è ottmo. Dm. [per assurdo] Prendamo una soluzone ottma S* che ha l mnmo numero d nverson, e vedamo che succede. Possamo assumere che S* non abba temp mort. Se S* non ha nverson allora S = S* Se S* ha un nversone, sa una coppa adacente d ob n nversone. Scambando e non ncrementamo l max rtardo rducamo d uno l numero delle nverson Questo contraddce la defnzone d S* l nuovo ordne ha lo stesso rtardo massmo: è una soluzone ottma ha un nversone n meno rspetto ad S*, che doveva essere una soluzone ottma con l mnmo numero d nverson Greedy è pù avant. mostramo che dopo ogn scelta dell algortmo greedy, la sua soluzone è almeno tanto buona quanto quella d un qualsas altro algortmo. Anals strutturale. defnamo un bound "strutturale" garantendo che ogn possble soluzone deve avere almeno un certo valore. Qund mostramo che greedy soddsfa sempre quel bound. Argomento basato sullo scambo. Gradualmente transformamo una qualsas soluzone n quella trovata da greedy, mostrando che ogn passo d tale trasformazone non peggora la qualtà della soluzone. Altr algortm greedy. Gale-Shapley (vsto), Dkstra (cammn mnm n un grafo), Huffman (codc e compressone dat),