1.Descriere
Metoda Greedy este
una din 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.
2.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
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
3. Problemă rezolvată prin metoda Greedy
rucsac.in
5 100
1000 120
500 20
400 200
1000 100
25 1
rucsac.out
500 20
400 200
1000 100
25 1
rucsac.out
2 100.00%
4 79.00%
5 100.00%
4 79.00%
5 100.00%
C.
Solutie :
Vom reprezenta o solutie a problemei ca un vector x cu n componente,in care retinem pentru fiecare obiect fractiunea incarcata in rucsac de hot.Deci vectorull x trebuie sa indeplineasca urmatoarele conditii :
1. Xi E [0,1], V i E { 1,2,…n }; //unde E = apartine si V = oricare ar fi
2. G1 * X1 + G2 * X2 + .. + Gn * Xn <= GMax;
3. f(x) = C1 * X1 + C2 * X2 + … + Cn * Xn este maxima.
Ordonam obiectele descrescator dupa castigul pe unitatea de greutate(valoare care constituie o masura a eficientei transportarii obiectelor). Cat timp este posibil (incap in rucsac),selectam obiectele in intregime.Completam rucsacul cu un fragment din urmatorul obiect ce nu a fost deja selectat.
Vom reprezenta o solutie a problemei ca un vector x cu n componente,in care retinem pentru fiecare obiect fractiunea incarcata in rucsac de hot.Deci vectorull x trebuie sa indeplineasca urmatoarele conditii :
1. Xi E [0,1], V i E { 1,2,…n }; //unde E = apartine si V = oricare ar fi
2. G1 * X1 + G2 * X2 + .. + Gn * Xn <= GMax;
3. f(x) = C1 * X1 + C2 * X2 + … + Cn * Xn este maxima.
Ordonam obiectele descrescator dupa castigul pe unitatea de greutate(valoare care constituie o masura a eficientei transportarii obiectelor). Cat timp este posibil (incap in rucsac),selectam obiectele in intregime.Completam rucsacul cu un fragment din urmatorul obiect ce nu a fost deja selectat.
Program Rucsac;
Var g:array [1..10] of integer;
i,n,Gm,R, aux : integer;
ok:boolean;
begin
writeln('nr obiecte'); readln(n);
writeln(‘capacitate rucsac');
readln(R);
writeln('
Obiectele de luat în rucsac:' );
for
i:=1 to n do
read (g[i]);
ok:=false;
while(ok=false) do
begin
ok:=true;
for i:=1 to n-1 do
if g[i]>g[i+1] then
begin
aux:=g[i];
g[i]:=g[i+1];
g[i+1]:=aux;
ok:=false;
end;
end;
writeln;
for i:=1 to n do
write( g[i], '*');
for i:=1 to n do
write( g[i], '*');
Gm:=0 ;
i:=1;
while ( Gm +g[i]<=R ) do
begin
Gm:=Gm+g[i];
i:=i+1;
end;
writeln('sunt‘ ,i-1,‘ obiecte cu greutate‘ ,
Gm,‘) ;
writeln ( ‘ a ramas‘ , R-Gm,‘
loc liber‘ ) ;
Utilizarea metodei Greedy în rezolvarea problemelor:
·
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
No comments:
Post a Comment