2. Metoda Greedy este una dintre cele mai directe tehnici
de proiectare a algoritmilor care poate fi aplicată la
o gamă largă de probleme. În general, această
metodă se aplică problemelor de
optimizare.Majoritatea acestor probleme constau
în determinarea unei submulţimi B, a unei mulţimi A
cu n elemente care să îndeplinească anumite
condiţii pentru a fi acceptată. Orice astfel de
submulţime care respect aceste restricţii se numeşte
soluţie posibilă. Din mulţimea tuturor soluţiilor posibile
se doreşte determinarea unei soluţii care
maximizează sau minimizează o funcţie de cost. O
soluţie posibilă care
realizează acest lucru se numeşte soluţie optimă.
Considerăm că soluţiile posibile au următoarea pro-
prietate: dacă B este o soluţie posibilă, atunci orice
submulţime a sa este soluţie posibilă.
3. Se dă o mulţime A cu n elemente şi se cere
să se determine o submulţime a sa B
care satisface anumite restricţii. Această
submulţime se numeşte soluţie posibilă.
Se cere să se determine o soluţie posibilă
care fie să maximizeze fie să minimizeze
o anumită funcţie obiectiv dată.
Această soluţie posibilă se
numeşte soluţie optimă.
4. se iniţializează mulţimea soluţiilor (B) la mulţimea vidă
(B=Φ)
la fiecare pas se alege un anumit element x ∈ A (cel
mai promiţător element la momentul respectiv) care
poate conduce la o solutie optimă la pasul i ;
se verifică dacă elementul ales poate fi adăugat la
mulţimea soluţiilor; dacă da atunci va fiadăugat şi
mulţimea soluţiilor devine B=B ∪{x }. Dacă un element
se introduce în mulţimea B, el nu va finiciodată
eliminat de acolo. Dacă se alege un element din A
care nu se poate adăuga mulţimii B, el nu semai
testează ulterior;
procedeul continuă astfel, repetitiv, până când au
fost determinate toate elementele dinmulţimea
soluţiilor
5. Un hoț neprevăzător are la dispoziție un singur rucsac cu care poate
transporta o
greutate maximă Gmax. Hoțul are de ales din n≤50 obiecte şi, evident,
Intenționează să obțină 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
Hoțul l-ar obține transportând obiectul respectiv în întregime, scrieți un
program
care să determine o încărcare optimală a rucsacului, în ipoteza că hoțul
poate
încărca în rucsac orice parte dintr-un obiect. De exemplu, pentru n=5,
GMax=100
şi câştigurile-greutăŃile 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%
6. Vom reprezenta o soluție a problemei ca un vector x, cu n
componente, în care reținem pentru fiecare obiect
fracțiunea încărcată în rucsac de hoț. Deci vectorul x
trebuie să îndeplinească următoarele condiții:
1. xi∈[0, 1], ∀i∈{1, 2, …, n}.
2. g1 ⋅ x1 + g2 ⋅ x2 + … + gn ⋅ xn ≤ Gmax
3. f(x) = c1 ⋅ x1 + c2 ⋅ x2 + … + cn ⋅ xn este maximă.
Ordonăm obiectele descrescător după câştigul pe unitatea
de greutate (valoare
care constituie o măsură a eficienței transportării
obiectelor). Cât timp este posibil
(încap în rucsac), selectăm obiectele în întregime.
Completăm rucsacul cu un
fragment din următorul obiect ce nu a fost selectat.