Documente Academic
Documente Profesional
Documente Cultură
Tehnica Greedy
Metoda Greedy este una din cele mai directe tehnici de proiectare a
algoritmilor care se aplic la o varietate larg de probleme. n general, aceasta
metod se aplic problemelor de optimizare. Specificul acestei metode const n
faptul ca se construiete soluia optim pas cu pas, la fiecare pas fiind selectat (sau
inghiit) n soluie elementul care pare cel mai bun la momentul respectiv, n
sperana c va duce la soluie optim global.
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.
function greedy(C)
{C este mulimea candidailor}
S {S este mulimea n care construim soluia}
while not solutie(S) and C do
x un element din C care maximizeaz/minimizeaz select(x)
C C \ {x}
if fezabil(S {x}) then S S {x}
if solutie(S) then return S
else return nu exist soluie
Este de neles acum de ce un astfel de algoritm se numete lacom (am putea s-i
spunem i nechibzuit). La fiecare pas, procedura alege cel mai bun candidat la
momentul respectiv, far s-i pese de viitor i fr s se rzgndeasc. Dac un
candidat este inclus n soluie, el rmne acolo; dac un candidat este exclus din
soluie, el nu va mai fi niciodat reconsiderat. Asemenea unui intreprinztor
rudimentar care urmarete ctigul imediat n dauna celui de perspectiv, un
algoritm greedy acioneaz simplist. Totui, ca i n afaceri, o astfel de metod
poate da rezultate foarte bune tocmai datorit simplitii ei.
Funcia select este de obicei derivat din funcia obiectiv; uneori aceste dou
funcii sunt chiar identice.
Un exemplu simplu de algoritm greedy este algoritmul folosit pentru rezolvarea
urmtoarei probleme. Sa presupunem c dorim s dm restul unui client, folosind
un numr ct mai mic de monezi. In acest caz, elementele problemei sunt:
Se poate demonstra c algoritmul greedy va gsi n acest caz mereu soluia optim
(restul cu un numr minim de monezi). Pe de alta parte, presupunnd c exist i
monezi de 12 uniti sau c unele din tipurile de monezi lipsesc din mulimea
iniial de candidai, se pot gsi contra exemple pentru care algoritmul nu gsete
soluia optim, sau nu gasete nici o soluie cu toate c exist soluie.