Presentation is loading. Please wait.

Presentation is loading. Please wait.

Problema rucsacului lacom

Similar presentations


Presentation on theme: "Problema rucsacului lacom"— Presentation transcript:

1 Problema rucsacului lacom

2 Enunţ capacitate, greutate și un numar de n
Se dă un rucsac de o anumită capacitate, greutate și un numar de n obiecte specificandu-se masa obiectelor. Se cere un program care să determine variantă de introducere a obiectelor în rucsac astfel încât să încapă cât mai multe obiecte. Problema rucsacului

3 Exemplu 3kg 2kg 5kg 7kg 4kg N = 5; Greutatea disponibilă = 15 kg; 1 2
Obiect 1 2 3 4 5 Greutatea obiectelor 3kg 2kg 5kg 7kg 4kg Problema rucsacului

4 Metoda Greedy Propune o strategie de rezolvare a problemelor de optim în care se poate obţine optimul global prin alegeri succesive ale optimului local, ceea ce permite rezolvarea problemei fără a mai reveni la deciziile deja luate. Specificul acestei metode constă în faptul că se construiește soluția optimă pas cu pas, la fiecare pas fiind selectat în soluție elementul care pare "cel mai bun" la momentul respectiv, în speranța că această va duce către soluția optimă globală. Problema rucsacului

5 Sortarea obiectelor 7kg 5kg 2kg 4kg 3kg 1 2 3 4 5 Obiect Greutatea
Problema rucsacului

6 Metoda Greedy: se iniţializează mulţimea soluţiilor (B) la mulţimea vidă (B=Φ) se consideră la fiecare pas câte un element x ∈ A; la fiecare pas se ia o decizie: dacă elementul x face parte din soluţia optimă, elementul este adăugat la mulțimea soluțiilor (B=B∪{x}). dacă elementul x considerat, împreună cu elementele ce fac parte din soluţia optimă parţială construită nu dă o soluţie posibilă, atunci x nu este adăugat la soluţia optimă. adăugarea elementului x la mulțimea soluțiilor se realizează fie prin luarea elementelor din A într-o ordine determinată care depinde de problemă, în ordine crescătoare; procedeul continuă astfel, repetitiv, până când au fost determinate toate elementele din mulţimea soluţiilor. Problema rucsacului

7 15 13 10 6 1 Greutatea disponibilă a rucsacului este:
Obiect1 3 kg Obiect2 2 kg Obiect3 5 kg Obiect4 7 kg Obiect5 4kg Greutatea disponibilă a rucsacului este: 15 13 10 6 1 Greutatea obiectului este prea mare Problema rucsacului

8 Algoritm de rezolvare:
Pas 1: Citirea greutății fiecarui obiect, Citirea capacității rucsacului. Pas 2: Iniţializăm obiectele. Pas 3: Se ordonează obiectele crescător în funcție de greutatea lor. Pas 4: Se inţializează volumul disponibil cu volumul obiectului. Pas5 : Se verifică dacă fiecare obiect încape în rucsac astfel: Dacă volumul obiectului e mai mic sau egal decât volumul disponibil al rucsacului atunci acesta încape în rucsac și din volumul disponibil al rucsacului scădem volumul obiectului. Pas 6: Dacă a rămas o zonă din rucsac neocupată atunci afişăm volumul rămas neocupat, în caz contrar înseamnă că nu am putut introduce nici un obiect în rucsac. Problema rucsacului

9 Implementare max_ob – numărul maxim de obiecte care pot fi puse în rucsac N - numărul de obiecte disponibile. v_dis - volumul rămas disponibil din rucsac. O - obiectele pe care vreau să le iau. Greutate - greutatea fiecarui obiect. Problema rucsacului

10 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

11 { 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 aux:=g[i]; g[i]:=g[i+1]; g[i+1]:=aux; end; Problema rucsacului

12 { verifică dacă fiecare obiect încape în rucsac }
writeln; 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‘ ) ; Problema rucsacului

13 Bibliografie: Nicolesco, Basarab, “ Transdisciplinaritatea”, Polirom, Iaşi, 2001, p.72. Mioara, Gheoghe, “ Elemente de programare”, Corint, București, 2003, p. 80 Problema rucsacului


Download ppt "Problema rucsacului lacom"

Similar presentations


Ads by Google