Documente Academic
Documente Profesional
Documente Cultură
2
Plata in monezi
Scop. Date fiind urmatoarele monezi 1, 5, 10, 25, 100, sa se
Ex. 34 $
Ex. 2.89 $
3
Algoritmul casierului
La fiecare iteratie, adauga cea moneda cu cea mai mare
valoare, astfel incat sa nu se depaseasca suma totala
4
Proprietatile solutiei optime
Proprietate. Numarul de monezi cu valoare 1 <= 4
5
Analiza algoritmului casierului
Consideram modalitatea optima de a schimba ck<=x<ck+1: greedy ia moneda k
Tabelul urmator indica faptul ca nicio solutie optima poate sa realizeze acest
lucru
Problema se reduce la x-ck centime, care prin inductie se rezolva optim cu
algoritmul casierului In cazul in care avem alte
valori ale monezilor,
k ck algoritmul trebuie
Toate solutiile modificat
optime trebuie Valoarea
sa satisfaca maxima de
monezi
c1,..ck-1
1 1 P<= 4 -
2 5 N<=1 4
3 10 N+D<=2 4+5=9
4 25 Q<=3 20+4=24
6 5 100 No limit 75+24=99
Programarea intervalelor de timp
Task-ul j incepe la timpul sj si se termina la timpul fj
7
Algoritm greedy
Consideram task-urile intr-o ordine naturala
deja alese
Consideram task-urile in ordine crescatoare in functie sj
8
Algoritmul Finish-time-first
9
Analiza algoritmului
Sa presupunem ca algoritmul finish-time-first nu este optim
intampla
Fie i1,i2,...,ik task-urile alease de greedy
10
11
Partitionarea intervalelor
Cursul j incepe la ora sj si se termina la ora fj.
12
Partitionarea intervalelor
Cursul j incepe la ora sj si se termina la ora fj.
13
Algoritm greedy
Consideram cursurile intr-o ordine naturala
14
Algoritm start-time-first
15
Algoritm start-time-first
Algoritmul start-time-first poate fi implementat in O(nlogn).
Stocam clasele intr-o coada de prioritati (cheia-timpul de terminare a
ultimului curs)
Pentru a determina daca un curs j este compatibil cu o sala,
comparam sj cu cheia minima a salilor k din coada de prioritati
Pentru a adauga cursul j in sala k, crestem valoarea cheii lui k cu fj
16
Analiza algoritmului start-time-first
Algoritmul start-time-first nu va pune doua cursuri in aceeasi sala, in
acelasi timp
Algoritmul start-time-first este optim
Fie d numarul de sali pe care le aloca algoritmul
Sala d este libera pentru vroiam sa o alocam cursului j, care este incompatibil
cu restul salilor d-1
Toate aceste d sali se elibereaza dupa timpul sj
17
Problema rucsacului
Un hot intra intr-un magazin si vede urmatoarele obiecte
18
Problema rucsacului fractional
Hotul poate sa ia o parte dintr-un obiect
19
Problema rucsacului 0-1
Hotul poate sa ia obiectul doar intreg.
20
Solutia Greedy pentru problema
rucsacului fractional
Sortam obiectele descrescator in functie de cost/kg
Se calculeaza pentru
22
Fie k limita curenta a greutatii. Initial k=K.
23
24
25
Fractii egiptene
2/3 = 1/2 + 1/6
6/14 = 1/3 + 1/11 + 1/231
12/13 = 1/2 + 1/3 + 1/12 + 1/156
Algoritm greedy:
Pentru nr/dr unde dr > nr, gasim cea mai mare fractie posibila.
6/14 calculam 14/6, i.e., 3
Apoi calculam 6/14 - 1/3, i.e. 4/42
26
27
28
Pe saptamana viitoare!
29