Sunteți pe pagina 1din 6

Tehnica Greedy

1. Problema Suma maxim (Greedy optim)


Se consider o mulime A cu n numere reale. Se cere o submulime S a sa un numr maxim de
elemente, astfel nct suma elementelor sale s fie maxim.
Exemplu. Pentru numerele 1 -5 6 2 -2 4 rspunsul este 1 6 2 4 (suma 13).
Soluie: Se aleg nuerele pozitive

2. Problema 2 suma maxim(Greedy optim)


Se consider o mulime de n numere reale. Se cere o submulime a sa cu m elemente, astfel
nct suma elementelor din submulimea S s fie maxim.
Soluie. Fie A=(a1>=a2>=>=an). Solutia greedy este (a1,,am).

3. Problema planificrii spectacolelor(Greedy optim)


Managerul artistic al unui festival trebuie s selecteze o multime ct mai mare de spectacole ce
pot fi jucate n singura sal pe care o are la dispozitie. Stiind c i s-au propus n<=100
spectacole si pentru fiecare spectacol k din cele n cunoaste intervalul de timp n care se poate
desfsura [sk, fk) (sk reprezint ora si minutul de nceput, iar fk ora si minutul de terminare al
spectacolului k)
Scrieti un program care s permit spectatorilor vizionarea unui numr ct mai mare de
spectacole n aceeasi zi.
De exemplu, dac vom citi n=5 si urmtorii timpi:
12 30 16 30
15 0 18 0
10 0 18 30
18 0 20 45
12 15 13 0
Spectacolele selectate sunt: 5 2 4.
Solutie
P1. Ordonm spectacolele cresctor dup ora terminrii lor.
P2. Selectm initial primul spectacol (deci cel care se termin cel mai devreme).
P3. Selectm primul spectacol neselectat, care nu se suprapune cu cele deja selectate (deci cel
care ncepe dup ce s-a terminat ultimul spectacol selectat)
P4. Dac nu se mai pot face alegeri, algoritmul se termin. Altfel, se selecteaz spectacolul
gsit si se reia algoritmul de la pasul P3.
Pag 1/6

sortare descrescatoare dupa terminare a spectacolelor (s[1..n])


sol[1]a[1]
k1
pentru i2,n execut
| dac s[i].inceput>=sol[k].terminare
| |
atunci kk+1; sol[k]s[i]
|

scrie sol[1..n]

4, Problema rucsacului cazul continuu (Greedy optim)


Se consider un set de n obiecte si un rucsac de capacitate dat GMax. Pentru fiecare obiect
k se cunoaste greutatea gk si cstigul ck care poate fi obtinut prin transportarea acestuia cu
rucsacul pn la o destinatie fixat.
S se determine o ncrcare optimal a rucsacului, n ipoteza n care orice obiect poate fi
ncrcat ntreg n rucsac sau partial.
De exemplu, pentru n=5, GMax=100 si cstigurile-greuttile urmtoare:
(1000120)(50020)(400200)(1000100)(251)se va afsa pe ecran:
2100.00%
479.00%
5100.00%
Solutie
Vom reprezenta o solutie a problemei ca un vector x, cu n componente, n care retinem pentru
fiecare obiect fractiunea ncrcat n rucsac. Deci vectorul x trebuie s ndeplineasc
urmtoarele conditii:
1). xi[0,1], i{1, 2, , n}.
2). g1x1+g2x2++gnxnGmax
3). f(x)=c1x1+c2x2++cnxneste maxim.
Algoritmul:
P1. Ordonm obiectele descresctor dup cstigul pe unitatea de greutate (valoare care
constituie o msur a eficientei transportrii obiectelor).
P2. Ct timp este posibil (ncap n rucsac), selectm n ordinea dat obiectele n ntregime.
P3. Completm rucsacul cu un fragment din urmtorul obiect ce nu a fost selectat

5. Problema 3 de maxim (Greedy optim)


Se consider multimea A cu m elemente numere ntregi nenule {a1,a2,..,am} si multimea B cu n
elemente numere ntregi nenule, n>=m. S se determine un sir cu melemente din B :
x1,x2,...,xm de elemente astfel nct suma urmtoare s fie maxim S=a1*x1+a2*x2+...
+am*xm.

6. Problema banilor
(Greedy euristic - soluie obinut nu este ntotdeauna optim)
Scriei un program, care afieaz modalitatea de plat, folosind un numr minim de bancnote, a
unei sume ntregi S de lei (S<20000). Plata se efectueaz folosind bancnote de n tipuri distincte cu
valorile b1=1 leu, b2,...bn, cu valoarea de lei. Din fiecare tip de bancnote avem la dispozi ie un numr
nelimitat.
Intrare: Fiierul text BANI.IN
67 (=S)

Pag 2/6

3 (=n )
1 5 10
Ieire: 6x10+1x5+2x1

7.Sritur calului pe tabla de ah (Greedy euristic)


Se d o tabl de ah cu dimensiunea nxn. Un cal se afl n pozi ia (1,1). Scriei un program care s
afieze un ir de mutri ale calului astfel nct acesta s acopere ntreaga tabl fr a trece printr-o
csu de dou ori.

8.Problema comisului voiajor (Greedy euristic)


Un comis voiajor pleac dintr-un anumit ora i trebuie s viziteze un numr de ora e i s se ntoarc n
oraul din care a plecat, cu un efort minim.
Orice ora i este legat de orice alt ora j printr-un drum de A[i][j] km. Se cere traseul pe care trebuie sa-l
parcurg comisul astfel nct s parcurg un numr minim de kilometri.
matricea A

0
1
5
5
3

1
0
2
4
1

5
2
0
6
1

5
4
6
0
9

3
1
1
9
0

O soluie: 1,2,5,3,4,1
lungime drum=14
OBS. Dac nu toate oraele sunt legate ntre ele printr-o osea putem considera c dintan a dintre ele
este un numr foarte mare ( km).

9. Colorarea hrilor (Greedy euristic pt numr minim de culori)


Sunt date N ri precizndu-se relaiile de vecintate. Se cere o posibilitate de colorare a hr ii celor N
ri astfel nct s nu existe ri vecine colorate la fel.

10. Depozit (Greedy)


Considerm un depozit cu n (n1000) camere, care contin respectiv cantittile de marf C1, C2,
, Cn, (numere naturale). Scrieti un program care s determine un grup de camere cu
proprietatea c suma cantittilor de marf pe care le contin se poate mprti exact la cele n
camioane care o transport.

11. Problema instructorului de schi (Greedy)


Un instructor de schi are la dispoziie n perechi de schiuri (n<50) pe care trebuie s le distribuie
la n elevi nceptori. Scriei un program care s distribuie cele n perechi de schiuri astfel nct
suma diferenelor absolute dintre nlimea elevului si lungimea schiurilor atribuite s fie minim.
Pag 3/6

12. Zig-zag (Greedy)


Din fsierul ZigZag.inse citesc Nnumere ntregi (N1000). Afsai pe prima linie a
fsierului ZigZag.out cel mai lung MZigZag care se poate construi din numerele
citite. Numim MZigZag o secven de numere a1, a2, ..., am astfel nct
a1a2a3a4a5... am1am.
De exemplu:
ZigZag.in
ZigZag.out
7
75014930937154

13. Interclasarea optimal a n iruri (Greedy optim)


Se consider n iruri de numere ordonate cresctor S1,S2,...,Sn, avnd lungimile L1, L2, ...,Ln.
S se interclaseze irurile date i s se obin un nou ir cu lungimea L1+L2+L3+...+Ln, astfel
nct numrul de comparaii ntre elementele irurilor date s fie minim.

14. Reactivi (Greedy optim)


ntr-un laborator de analize chimice se utilizeaz N reactivi. Se stie c, pentru a evita
accidentele sau deprecierea reactivilor, acestia trebuie s fie stocati n conditii de mediu
speciale. Mai exact, pentru fiecare reactiv x, se precizeaz intervalul de temperatur [minx,
maxx] n care trebuie s se ncadreze temperatura de stocare a acestuia. Reactivii vor fi plasati
n frigidere. Orice frigider are un dispozitiv cu ajutorul cruia putem stabili temperatura
(constant) care va fi in interiorul acelui frigider (exprimat ntr-un numr ntreg de grade
Celsius). Scrieti un program care s determine numrul minim de frigidere necesare
pentru stocarea reactivilor chimici.
Date de intrare
Fisierul de intrare react.in contine:
pe prima linie numrul natural N, care reprezint numrul de reactivi;
pe fecare dintre urmtoarele N linii se afl min max (dou numere ntregi
separate printr-un spatiu);
numerele de pe linia x+1 reprezint temperatura minim, respectiv temperatura
maxim de stocare a reactivului x.
Date de iesire
Fisierul de iesire react.outva contine o singur linie pe care este scris numrul
minim de frigidere necesar.
Restrictii
1N8000
100minxmaxx100(numere ntregi, reprezentnd grade Celsius), pentru
orice xde la 1la N
un frigider poate contine un numr nelimitat de reactivi
Exemple
Exemplul 1

Exemplul 2

Exemplul 3

reactivi.in reactivi.out reactivi.in reactivi.out reactivi.in

reactivi.out

3
-10 10
-2 5
20 50

5
-10 10
10 12
-20 10
7 10

Pag 4/6

4
2 5
5 7
10 20
30 40

7 8

15. Lungimi de interval (Greedy optim)


Se dau N intervale [Ai,Bi] (1 i N). Calculati suma lungimilor tuturor intervalelor. Intervalele
care se suprapun se vor lua in considerare o singura data.

Date de Intrare
Fisierul de intrare linterv.in va contine mai multe teste. Pe prima linie se va
afla T numarul de teste. Pe prima linie a fiecarui test se va afla N - numarul de intervale,
urmand N linii cu cate doua numere Ai si Bi - capetele intervalelor.
Date de Iesire
Fisierul de iesire linterv.out va contine T linii pe fiecare aflandu-se un singur numar x suma calculata.
Restrictii

1 N 5.000

-1.000.000 Ai Bi 1.000.000

1 T 75
Exemplu
linterv.in
1
6
-5 5
0 3
2 8
10 13
11 15
100 100

linterv.out
18

Lungimea intervalului [a,b] este b-a prin urmare avem:


[-5,5] -> 5-(-5) = 10
[0,3] - este inclus in [-5,5], nu il numaram
[2,8] - [2,5] este inclus in[-5,5], nu il numaram, mai ramane 8-5 = 3
[10,13] - nu e inclus nicaieri, 13-10 = 3
[11,15] - [11,13] este inclus in [10,13], mai ramane 15-13 = 2
[100,100] - are lungimea 0
Adunand obtinem 10+3+3+2 = 18

16.Reuniune de intervale (Greedy optim)


Se consider n intervale nchise [a,b] , a,b numere ntregi, n,a,b<100000. S se determine
reuniunea acestora. Exemplu: pentru n=5 si intervalele:
2 4
1 3
5 8
10 12
6 9

se va afisa:
1 4
5 9
10 12

Pag 5/6

Indicatie: se ordoneaz intervalele dup extremitatea stng. Printr-o parcurgere liniar a


sirului intervalelor, se actualizeaz pas cu pas capatul stng si cel drept al intervalului reuniune.

17.Eliminri de intervale

(Greedy optim)

Se consider un sir de n intervale [ai,bi], cu ai, bi numere ntregi. Un interval [c,d] poate fi
eliminat din sir dac exist un alt interval [x,y] din sir care s- includ: [c,d] [x,y].
Determinat numrul maxim de intervale care pot fi eliminate.
Restrictii:
n<16000
ai,bi<2000000000
Exemplu>
7
0
2
3
1
6
1
2

se va afisa:
4

10
9
8
15
20
7
5

Indicatie: se ordoneaz cresctor intervalele dup extremitatea stng si descresctor dup


extremitatea dreapt pt extremitti stngi egale. Printr-o parcurgere liniar a sirului intervalelor,
se actualizeaz pas cu pas capatul stng si cel drept al intervalului reuniune.
La parcurgerea sirului dublu-sortat se va actualiza cel mai mare capt din dreapta maxd (initial
maxd=extremitatea dreapta a primului interval). Un interval cu extremitatea dreapt
d < maxd este inclus intr-ul altul din sir, deci va fi eliminat, altfel maxd=d.

18. Problema cuielor (Greedy optim)


Fie N scnduri de lemn, descrise ca niste intervale nchise cu capete reale. Gsiti o multime
minim de cuie astfel nct fiecare scndur s fie btut de cel putin un cui. Se cere pozitia
cuielor.
Formulat matematic: gsiti o multime de puncte de cardinal minim M astfel nct pentru orice
interval [ai, bi] din cele N, s existe un punct x din M care s apartin intervalului [ai, bi].
Complexitate: O(N log N)
Exemplu:
intrare: N = 5, intervalele: [0, 2], [1, 7], [2, 6], [5, 14], [8, 16]
iesire: M = {2, 14}
explicatie: punctul 2 se afla n primele 3 intervale, iar punctul 14 n ultimele 2

Pag 6/6

S-ar putea să vă placă și