Tehnica Greedy
Realizat de catre Veronica Botnarenco
Descriere
Metoda Greedy este una dintre cele mai directe
tehnici de proiectare a algoritmilor care se aplica
la o varietate larga de probleme.
In general,aceasta metoda se aplica problemelor
de optimizare.Specificul acestei metode consta in
faptul ca se construieste solutia optima pas cu
pas,la fiecare pas fiind selectat(sau “inghitit”) in
solutie elementul care pare “cel mai bun”la
momentul respectiv,in speranta ca va duce la
solutie optima globala.
Prezentare
Se da o multime A cu n elemente si se cere sa se determine o submultime a sa(B) care
satisface anumite restrictii. Aceasta submultime se numeste solutie posibila. Se cere sa
se determine o solutie posibila care fie sa maximizeze fie sa minimizeze o anumita
functie obiectiv data. Aceasta solutie posibila se numeste solutie optima.
Metoda Greedy lucreaza in pasi astfel:
1. Multimea B este vida la inceput
2. Se alege un element din A care pare a fi solutia optima la pasul i
3. Se verifica daca elementul ales poate fi adaugat la multimea solutiilor, daca da
atunci va fi adaugat
4. Procedeul continua astfel, repetitiv, pana cand au fost determinate toate elementele
din multimea solutiilor
Observatie: Metoda Greedy nu cauta sa determine toate solutiile posibile ( care ar
putea fi prea numeroase) si apoi sa aleaga din ele pe cea optima, ci cauta sa introduca
direct un element x in solutia optima.Acest lucru duce la eficienta algorimilor
Greedy,insa nu conduc in mod necesar la la o solutie optima si nici nu este posibila
formularea unui criteriu general conform caruia sa putem stabili exact daca metoda
Greedy rezolva sau nu o anumita problema de optimizare.Acest motiv duce la insotirea
fiecarei rezolvari prin metoda Greedy a unei demonstratii matematice(in general prin
inductie).
Schema generala
Schema generala a unui algoritm bazat pe
metoda Greedy poate fi redata cu ajutorul unui
ciclu:
while ExistaElemente do
begin
AlegeUnElement(x);
IncludeElementul(x);
end;
Problema monedelor
S se determine num rul minim de monede de 100, 50, 20, 10, 5, 1 cu care seă ă
poate achita suma S.
Pentru achitarea sumei S=276, probabil, se gânde te astfel:ş
- cea mai mare moned ce intr în 276 este 100 i r mâne restul r=276-100=176;ă ă ş ă
- cea mai mare moned ce intr în acest rest este 100 i r mâne restul r=176-ă ă ş ă
100=76;
- cea mai mare moned ce intr în 76 este 50 i r mâne rest r=76-50=26;ă ă ş ă
- cea mai mare moned ce intr în 26 este 20 i r mâne rest r=26-20=6;ă ă ş ă
- cea mai mare moned ce intr în 6 este 5 i r mâne rest r=6-5=1;ă ă ş ă
- cea mai mare moned ce intr în 1 este 1 i r mâne rest r=1-1=0;ă ă ş ă
În acest caz, 276=2x100+1x50+1x20+1x5+1x1, adic num rul minim de monede este 2+1+1+1+1=6.ă ă
Orice alt combina ie va da un num r mai mare de monede decât 6.ă ţ ă
Se observ c schema caut s “înghit ” o parte cât mai mare din sum sau resturi.ă ă ă ă ă ă
În aplicarea metodei se vor folosi de la început monedele în ordinea descresc toare a valorii lor.ă
Problema rucsacului
Un hot neprev z tor are la dispozitie un singur rucsac cu care poate transporta oă ă
greutate maxim Gmax. Hotul are de ales din n≤50 obiecte i, evident,ă ş
intentioneaz s obtin un câ tig maxim în urma singurului transport pe care îlă ă ă ş
poate face. Cunoscând pentru fiecare obiect i greutatea gi i câ tigul ci pe careş ş
hotul l-ar obtine transportând obiectul respectiv în întregime, scrieti un program
care s determine o înc rcare optimal a rucsacului, în ipoteza c hotul poateă ă ă ă
înc rca în rucsac orice parte dintr-un obiect. De exemplu, pentru n=5, GMax=100ă
i câ tigurile-greut tile urm toare:ş ş ă ă
(1000 120)(500 20)(400 200)(1000 100)(25 1) se va afi a pe ecran:ş
2 100.00%
4 79.00%
5 100.00%
Aceasta tehnica este folosita intr-un mare numar de
probleme si aplicatii printre care putem aminti :
*Minimizarea timpului mediu de asteptare
*Interclasarea optima a sirurilor ordonate
*Coduri Huffman
*Cele mai scurte drumuri care pleaca din acelasi punct
*Problema comis-voiajorului
*Arbori partiali de cost minim
Surse informative
http://www.scribd.com/doc/43454385/Metoda-Greedy
http://adi.ro/pub/scoala/An%20III/Sem%20I/SD
https://www.worldit.info/articole/algoritmica-articole/
http://en.wikipedia.org/wiki/Greedy_algorithm

Informatica

  • 1.
    Tehnica Greedy Realizat decatre Veronica Botnarenco
  • 2.
    Descriere Metoda Greedy esteuna dintre cele mai directe tehnici de proiectare a algoritmilor care se aplica la o varietate larga de probleme. In general,aceasta metoda se aplica problemelor de optimizare.Specificul acestei metode consta in faptul ca se construieste solutia optima pas cu pas,la fiecare pas fiind selectat(sau “inghitit”) in solutie elementul care pare “cel mai bun”la momentul respectiv,in speranta ca va duce la solutie optima globala.
  • 3.
    Prezentare Se da omultime A cu n elemente si se cere sa se determine o submultime a sa(B) care satisface anumite restrictii. Aceasta submultime se numeste solutie posibila. Se cere sa se determine o solutie posibila care fie sa maximizeze fie sa minimizeze o anumita functie obiectiv data. Aceasta solutie posibila se numeste solutie optima. Metoda Greedy lucreaza in pasi astfel: 1. Multimea B este vida la inceput 2. Se alege un element din A care pare a fi solutia optima la pasul i 3. Se verifica daca elementul ales poate fi adaugat la multimea solutiilor, daca da atunci va fi adaugat 4. Procedeul continua astfel, repetitiv, pana cand au fost determinate toate elementele din multimea solutiilor Observatie: Metoda Greedy nu cauta sa determine toate solutiile posibile ( care ar putea fi prea numeroase) si apoi sa aleaga din ele pe cea optima, ci cauta sa introduca direct un element x in solutia optima.Acest lucru duce la eficienta algorimilor Greedy,insa nu conduc in mod necesar la la o solutie optima si nici nu este posibila formularea unui criteriu general conform caruia sa putem stabili exact daca metoda Greedy rezolva sau nu o anumita problema de optimizare.Acest motiv duce la insotirea fiecarei rezolvari prin metoda Greedy a unei demonstratii matematice(in general prin inductie).
  • 4.
    Schema generala Schema generalaa unui algoritm bazat pe metoda Greedy poate fi redata cu ajutorul unui ciclu: while ExistaElemente do begin AlegeUnElement(x); IncludeElementul(x); end;
  • 5.
    Problema monedelor S sedetermine num rul minim de monede de 100, 50, 20, 10, 5, 1 cu care seă ă poate achita suma S. Pentru achitarea sumei S=276, probabil, se gânde te astfel:ş - cea mai mare moned ce intr în 276 este 100 i r mâne restul r=276-100=176;ă ă ş ă - cea mai mare moned ce intr în acest rest este 100 i r mâne restul r=176-ă ă ş ă 100=76; - cea mai mare moned ce intr în 76 este 50 i r mâne rest r=76-50=26;ă ă ş ă - cea mai mare moned ce intr în 26 este 20 i r mâne rest r=26-20=6;ă ă ş ă - cea mai mare moned ce intr în 6 este 5 i r mâne rest r=6-5=1;ă ă ş ă - cea mai mare moned ce intr în 1 este 1 i r mâne rest r=1-1=0;ă ă ş ă În acest caz, 276=2x100+1x50+1x20+1x5+1x1, adic num rul minim de monede este 2+1+1+1+1=6.ă ă Orice alt combina ie va da un num r mai mare de monede decât 6.ă ţ ă Se observ c schema caut s “înghit ” o parte cât mai mare din sum sau resturi.ă ă ă ă ă ă În aplicarea metodei se vor folosi de la început monedele în ordinea descresc toare a valorii lor.ă
  • 6.
    Problema rucsacului Un hotneprev z tor are la dispozitie un singur rucsac cu care poate transporta oă ă greutate maxim Gmax. Hotul are de ales din n≤50 obiecte i, evident,ă ş intentioneaz s obtin un câ tig maxim în urma singurului transport pe care îlă ă ă ş poate face. Cunoscând pentru fiecare obiect i greutatea gi i câ tigul ci pe careş ş hotul l-ar obtine transportând obiectul respectiv în întregime, scrieti un program care s determine o înc rcare optimal a rucsacului, în ipoteza c hotul poateă ă ă ă înc rca în rucsac orice parte dintr-un obiect. De exemplu, pentru n=5, GMax=100ă i câ tigurile-greut tile urm toare:ş ş ă ă (1000 120)(500 20)(400 200)(1000 100)(25 1) se va afi a pe ecran:ş 2 100.00% 4 79.00% 5 100.00%
  • 7.
    Aceasta tehnica estefolosita intr-un mare numar de probleme si aplicatii printre care putem aminti : *Minimizarea timpului mediu de asteptare *Interclasarea optima a sirurilor ordonate *Coduri Huffman *Cele mai scurte drumuri care pleaca din acelasi punct *Problema comis-voiajorului *Arbori partiali de cost minim
  • 8.