Sunteți pe pagina 1din 3

Prof.

Negrilescu Nicolae
Colegiul National Vlaicu Voda
Curtea de Arges

Metoda Greedy
Metoda Greedy este una din cele mai directe tehnici de proiectare a algoritmilor care
se aplic la o varietate larg de probleme.
1. Descrierea metodei
Se d o mulime A cu n elemente i se cere s se determine o submulime a sa(B) care
satisface anumite restricii. Aceast submulime se numete soluie posibil. Se cere s
se determine o soluie posibil care fie s maximizeze fie s minimizeze o anumit
funcie obiectiv dat. Aceast soluie posibil se numete soluie optim.
Metoda Greedy lucreaz n pai astfel:
1. se iniializeaz mulimea soluiilor (B) la mulimea vid (B=)
2. se alege un anumit element x A
3. se verific dac elementul ales poate fi adugat la mulimea soluiilor, dac da
atunci va fi adugat (B=B{x})
4. procedeul continu astfel, repetitiv, pn cnd au fost determinate toate elementele
din mulimea soluiilor
Observaie. Metoda Greedy nu caut s determine toate soluiile posibile ( care ar
putea fi prea numeroase) i apoi s aleag din ele pe cea optim, ci caut s introduc
direct un element x n soluia optim.
2. Probleme pentru care metoda Greedy determin soluia optim
2.1 Determinarea arborelui parial de cost minim
Se d un graf G. Se cere determinarea arborelui parial de cost minim
Algoritmul de rezolvare pe care l folosim se bazeaz pe tehnica Greedy:
1. La nceput nu avem un arbore (avem mai muli arbori, fiecare dintre acetia fiind
format dintr-un singur nod), sortm muchiile n ordine cresctoare a costurilor
2. Se alege o muchie x (muchiile se aleg de la cea mai mic la cea mai mare)
3. Verificm dac muchia poate fi adugat (dac nu se produc cicluri)
4. Continum pn cnd avem n-1 muchii (n = numrul de noduri)
2.2 Problema rucsacului
Se d un rucsac de volum V i mai multe obiecte de greuti G 1, G2,, Gn ce au
volumele V1, V2,, Vn. Se cere s se ncarce rucsacul la greutatea maxim utiliznd
cte un obiect din fiecare tip.
Se observ c cea mai bun metod de ncrcare a rucsacului ar fi s introducem
obiectele n ordine descresctoare a densitii acestora. Deci vom calcula densitile
obiectelor 1=G1/V1, 2=G2/V2, ,n=Gn/Vn i vom sorta obiectele n ordine
descresctoare a densitii. Acestea fiind realizate aplicm metoda Greedy:
1. La nceput volumul obiectelor adugate Vo=0

2. Se alege un obiect (n ordine descresctoare a densitii)


3. Verificm dac putem aduga obiectul ( dac prin adugare nu se depete
volumul admis)
4. Repetm pn cnd s-au terminat obiectele sau s-a atins volumul dorit
3. Probleme pentru care metoda Greedy nu determin soluia optim
3.1 Problema determinrii drumului minim
Se d un graf G i se cere s se determine drumul minim ntre dou noduri ale sale.
Metoda Greedy se poate aplica astfel:
1. Pornim din nodul de start x.
2. Alegem cel mai scurt drum spre nodul urmtor.
3. Repetm pn cnd se ajunge n nodul destinaie
Pentru exemplele urmtoare metoda gsete drumul optim ntre 1 i 4 ca fiind
1
2
3
4,
n acest caz soluia este corect.
1
1

1
4

Dar n cazul de mai jos metoda d gre.

4
4

1
5

3.2 Problema plii unei sume cu bancnote(monezi) de valoare dat


S se efectueze plata unei sume S utiliznd un numr minim de monezi. Valorile
monezilor se cunosc.
Metoda Greedy se poate aplica astfel:
1. Fie suma care a mai rmas de pltit X=S
2. Se alege moneda de valoare maxim Mi (astfel nct Mi<=X)
3. Se calculeaz nr. maxim de monezi Mi ce pot fi date (n = X div Mi )
4. Repetm pn cnd restul sumei de plat e zero
Presupunem c avem 5 monezi de valori : 100, 50, 20, 3.
Dac suma care trebuie pltit este 370
atunci avem evoluia :
Suma curent de
plat
370
70
20

Monede selectate
valoare
numr
100
3
50
1
10
2

Dac suma care trebuie pltit este 365


atunci avem evoluia:
Suma curent de
plat
365
65
15
5

Monede selectate
valoare
numr
100
3
50
1
10
1
3
1
2

Se observ c n al doilea caz nu s-a ajuns la o soluie ( soluia corect era


3x100+1x50+5x3=365). Aceast soluie ar fi fost gsit dac , n caz de insucces, s-ar
fi fcut o revenire modificnd una din seleciile anterioare, dar aceasta e backtracking.