Documente Academic
Documente Profesional
Documente Cultură
Realizatori: Chiril Snziana Simion Andra Prof. coordonator: Vrg Liliana Maftei Ionel
Enun
Se d un rucsac de o anumit
capacitate, greutate i un numar de n
Exemplu
N = 5; Greutatea disponibil = 15 kg;
1
Obiect
Greutatea obiectelor
Problema rucsacului
3kg
2kg
5kg
7kg 4kg
Metoda Greedy
Propune o strategie de rezolvare a problemelor de optim n care se poate obine optimul global prin alegeri succesive ale optimului local, ceea ce permite rezolvarea problemei fr a mai reveni la deciziile deja luate. Specificul acestei metode const n faptul c se construiete soluia optim pas cu pas, la fiecare pas fiind selectat n soluie elementul care pare "cel mai bun" la momentul respectiv, n sperana c aceast va duce ctre soluia optim global.
Problema rucsacului
Sortarea obiectelor
1
Obiect
Greutatea obiectelor
3kg
2kg
5kg
7kg
4kg
Problema rucsacului
Metoda Greedy:
se iniializeaz mulimea soluiilor (B) la mulimea vid (B=) se consider la fiecare pas cte un element x A; la fiecare pas se ia o decizie:
dac elementul x face parte din soluia optim, elementul este adugat la mulimea soluiilor (B=B{x}). dac elementul x considerat, mpreun cu elementele ce fac parte din soluia optim parial construit nu d o soluie posibil, atunci x nu este adugat la soluia optim.
Problema rucsacului
adugarea elementului x la mulimea soluiilor se realizeaz fie prin luarea elementelor din A ntr-o ordine determinat care depinde de problem, n ordine cresctoare; procedeul continu astfel, repetitiv, pn cnd au fost determinate toate elementele din mulimea soluiilor.
Obiect1 3 kg
Obiect2 2 kg
Obiect3 5 kg
Obiect4 7 kg
Obiect5 4kg
Problema rucsacului
Algoritm de rezolvare:
Pas 1: Citirea greutii fiecarui obiect, Citirea capacitii rucsacului. Pas 2: Iniializm obiectele. Pas 3: Se ordoneaz obiectele cresctor n funcie de greutatea lor. Pas 4: Se inializeaz volumul disponibil cu volumul obiectului. Pas5 : Se verific dac fiecare obiect ncape n rucsac astfel: Dac volumul obiectului e mai mic sau egal dect volumul disponibil al rucsacului atunci acesta ncape n rucsac i din volumul disponibil al rucsacului scdem volumul obiectului. Pas 6: Dac a rmas o zon din rucsac neocupat atunci afim volumul rmas neocupat, n caz contrar nseamn c nu am putut introduce nici un obiect n rucsac. Problema rucsacului
Implementare
max_ob numrul maxim de obiecte care pot fi puse n rucsac N - numrul de obiecte disponibile. v_dis - volumul rmas disponibil din rucsac. O - obiectele pe care vreau s le iau. Greutate - greutatea fiecarui obiect.
Problema rucsacului
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]);
Problema rucsacului
{ sortarea vectorului }
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; Problema rucsacului end;
Bibliografie:
Nicolesco, Basarab, Transdisciplinaritatea, Polirom, Iai, 2001, p.72. Mioara, Gheoghe, Elemente de programare, Corint, Bucureti, 2003, p. 80
Problema rucsacului