Documente Academic
Documente Profesional
Documente Cultură
Metoda Greedy
Prezentare [1]
Metoda Greedy (greedy=lacom) este aplicabil problemelor de optim.
Cadru: Se d o mulime finit A.
S se determine o submulime finit BA care satisface anumite condiii (este soluie
posibil) + ndeplinete un criteriu de optim (este soluie optim).
Soluiile posibile au proprietile
este soluie posibil
Dac B este soluie posibil i C B, atunci C este soluie posibil
Formal: Considerm mulimea finit A={a1,...,an} i o proprietate p definit pe mulimea
submulimilor lui A (notat P(A)):
p() 1
p:P(A){0,1} cu
p(X) p(Y), Y X
O submulime S A se numete soluie dac p(S)=1.
Dintre soluii dorim s alegem una care optimizeaz o funcie f:P(A)R dat.
Metoda urmrete evitarea parcurgerii tuturor submulimilor (ceea ce ar necesita un
timp de calcul exponenial), mergndu-se "direct" spre soluia optim. Se ncearc o
construire direct a unei soluii optime, element cu element (elementul ales la un pas pentru a
se aduga n soluie este cel care pare cel mai bun la acel pas, conform criteriului de
optim). Nu este ns garantat obinerea unei soluii optime; de aceea aplicarea metodei
Greedy trebuie nsoit neaprat de o demonstraie.
Distingem dou variante generale de aplicare a metodei Greedy:
fr prelucrare iniial - elementul care se adaug la soluie se stabilete la fiecare pas,
n funcie de alegerile anterioare
cu prelucrare iniial - ordinea n care sunt considerate elementele se stabilete de la
nceput
Observaii:
- n algoritm nu apare funcia f
- dificultatea const n a concepe procedurile alege, respectiv prel, n care este
"ascuns" funcia f.
O:
g1 gk-1 ok ok+1 op
O':
g1 gk-1 gk ok+1 op
Variant de enun: Care este ordinea de execuie a unor comenzi cu durate de execuie
cunoscute astfel nct s se minimizeze timpul total de ateptare al clienilor pentru finalizarea
execuiei tuturor comenzilor ( = suma timpilor de ateptare pentru finalizarea fiecrui
proiect/activitate)
p'=( pj pi )
Atunci, folosind formulele pentru T(p) i T(p) i reducnd termenii n diferena T(p)-
T(p) obinem
n[T(p)-T(p)] = (n-i+1)L(pi) + (n-j+1)L(pj) -
- (n-i+1)L(pj) - (n-j+1)L(pi) =
= (j-i)[L(pi)-L(pj)]>0,
Contradicie.
Dac suma greutilor obiectelor este mai mic dect G, atunci ncrcm toate
obiectele: x=(1,...,1). De aceea presupunem n continuare c g1+...+gn>G.
Conform strategiei Greedy, ordonm obiectele descresctor dup ctigul la unitatea
de greutate, deci lucrm n situaia:
c1 c2 c
... n (*)
g1 g2 gn
Corectitudine [1]. vezi curs. Idee: Artm c soluia astfel obinut este optim.
Fie y soluia optim care are o subsecven iniial maxim n comun cu x:
n
giy i G
i1
y=(...,yk,...) cu
n
c y maxim
i1 i i
Dac yx, fie k prima poziie pe care ykxk. Atunci avem
kj: pentru k>j se depete G.
yk<xk
Considerm soluia: y=(y1,...,yk-1,xk,yk+1,..., yn) cu <1
(primele k-1 componente coincid cu cele din x). Pstrm greutatea total G, deci:
gk(xk-yk)=(1-)(gk+1yk+1++gnyn) (**)
gk g j g g
Din alegerea Greedy pentru j>k . nlocuind k cu j pentru j>k i folosind (**)
ck c j ck cj
rezult f(y)-f(y) 0, deci f(y') f(y). Deoarece y este optim, rezult c f(y') =
f(y). Contradicie, y are mai multe elemente iniiale n comun cu x dect y .
Variante. Generalizri
Problema discret a rucsacului difer de cea continu prin faptul c fiecare obiect
poate fi ncrcat numai n ntregime n rucsac.
S observm c aplicarea metodei Greedy eueaz n acest caz. ntr-adevr, aplicarea
ei pentru: G=5, n=3 i g=(4,3,2), c=(6,4,2.5)
are ca rezultat ncrcarea primul obiect; ctigul obinut este 6. Dar ncrcarea ultimelor dou
obiecte conduce la ctigul superior 6.5.
Bibliografie
1. Horia Georgescu. Tehnici de programare. Editura Universitii din Bucureti 2005
2. Jon Kleinberg, va Tardos - Algorithm Design, 2005 Addison-Wesley Professional
http://www.cs.princeton.edu/~wayne/kleinberg-tardos