Sunteți pe pagina 1din 3

Metoda Greedy

propune o strategie de rezolvare a problemelor de optim n care se poate obine optimul global prin alegeri succesive ale optimului local, ceea ce permite rezolvarea problemei fr nici o revenire la deciziile luate deja.

Descrierea metodei
Se d o mulime A cu n elemente i se cere s se determine o submulime a sa care s satisfac anumite restricii. Aceast submulime se numete soluie posibil. Se cere s se determine o soluie posibil care s maximizeze sau s minimizeze o anumit funcie obiectiv dat. Aceast soluie se numete soluie optim. Metoda Greedy lucreaz n pai astfel: 1. se consider la fiecare pas cte un element x A; 2. la fiecare pas se ia o decizie dac x face parte din soluia optim, acest lucru realizndu-se fie prin luarea elementelor din A ntr-o ordine determinat care depinde de problem, fie folosind o funcie care le selecteaz ntr-un anumit mod; 3. dac elementul x considerat mpreun cu elementele ce fac parte din soluia optim parial construit nu d o soluie posibil, atunci x nu este adugat la soluia optim. Forma general a procedurii, ntr-un limbaj algoritmic, este urmtoarea:

Subprogram GREEDY (A,n) Array a[1:n]; integer n,i; Solutie:=0 For i:=1 to n do X=select(a) If posibil(solutie,x) then solutie=solutie {x} Return solutie; End GREEDY

n acest context: a) funcia select(A) selecteaz un element din A, notat cu x, i-l terge din A;

b) funcia posibil determin dac x poate fi introdus sau nu n vectorul soluie. Dac da, atunci el este reunit soluiei. Observaie: Metoda Greedy nu caut s determine toate soluiile posibile (care ar fi poate prea numeroase) i apoi s aleag din ele pe cea optim, ci caut s introduc direct (s nghit) un element x din soluia posibil; Problemele de optimizare pot fi programate pe aceast cale. De exemplu, dac trebuie determinat maximul sau minimul unei funcii de cost depinznd de elementele a1, a2, ,an , atunci metoda Greedy alege la fiecare pas acel element care crete sau scade cel mai mult valoarea acestei funcii.

Problema monedelor
S se determine numrul minim de monede de 100, 50, 20, 10, 5, 1 cu care se poate achita suma S. Pentru achitarea sumei S=276, probabil, se gndete astfel: cea mai mare moned ce intr n 276 este 100 i rmne restul r=276-100=176; cea mai mare moned ce intr n acest rest este 100 i rmne restul r=176100=76; cea mai mare moned ce intr n 76 este 50 i rmne rest r=76-50=26; cea mai mare moned ce intr n 26 este 20 i rmne rest r=26-20=6; cea mai mare moned ce intr n 6 este 5 i rmne rest r=6-5=1; cea mai mare moned ce intr n 1 este 1 i rmne rest r=1-1=0;

n acest caz, 276=2x100+1x50+1x20+1x5+1x1, adic numrul minim de monede este 2+1+1+1+1=6. Orice alt combinaie va da un numr mai mare de monede dect 6. Se observ c schema caut s nghit o parte ct mai mare din sum sau resturi. n aplicarea metodei se vor folosi de la nceput monedele n ordinea descresctoare a valorii lor. Rezolvarea problemei n programul MONEDE.CPP.

Problema rucsacului
Se d un rucsac de capacitate C i n obiecte. Fiecare obiect i are o greutate gi i poate fi fracionat, fraciunile sale fiind notate cu xi, 0<=xi<=1. Fiecare obiect dac este plasat n rucsac aduce un profit (pondere) pi. S se plaseze obiectele n rucsac aa fel nct profitul s fie maxim. Rezolvare: n mod formal, problema cere de fapt s se maximizeze restriciiile
n

p x
i =1 i

supus la

g x
i =1 i

<=M, unde 0<=xi<=1 i 1<=i<=n. Profiturile i greutile sunt

numere reale pozitive. O soluie posibil (de ncrcare) este orice mulime (x1, x2,,xn) care care satisface condiiile
n

g x
i =1 i

<=M, 0<=xi<=1, 1<=i<=n, iar o soluie optim este o soluie

posibil pentru care

p x
i =1 i

este maxim.

Rezolvarea problemei n programul RUCSAC.CPP.

S-ar putea să vă placă și