You are on page 1of 8

Metoda Greedy

Problema 1. (Submulime maxim). Se d o mulime X={x


1
, x
2
, ,x
n
} cu elemente reale. Se
cere s se determine o submulime Y a sa astfel incat suma elementelor acestei submulimi s fie
maxim.
Problema 2. (Problema rucsacului
*
). O persoan are un rucsac cu care pot transporta o
greutate maxim M. Persoana are la dispoziie n obiecte i cunoaste pentru fiecare obiect
greutatea i ctigul care se obine n urma transportului su la destinaie. Se cere s se precizeze
ce obiecte trebuie s transporte persoana n aa fel nct ctigul s fie maxim.
*
Dac obiectele pot fi divizate pentru a le transporta, atunci problema poart numele de problema continu a
rucsacului (deoarece valorile apar continuu). n acest fel se poate obine o ncrcare mai eficient a rucsacului.
Dac obiectele nu pot fi divizate pentru a le transporta, atunci problema poart numele de problema discret a
rucsacului (deoarece valorile apar discret). n acest caz s-ar putea ca rucsacul s nu fie ncrcat cu eficien maxim.
Problema 3. (Memorarea optima a textelor pe benzi). Fiind date n texte de lungimi L
1
, L
2
, ,
L
n
. i m benzi magnetice, se cere poziionarea optim a textelor pe aceste benzi, astfel nct
timpul de citire a unui text oarecare de pe benzi s fie minim (ori de cte ori este nevoie de un
text, sunt citite toate textele aflate naintea lui pe band i bineneles textul respectiv). Se
presupune c frecvena de citire a textelor este aceeai.
Problema 4. (Interclasarea optim a mai multor iruri ordonate).
Se dau n iruri S
1
,

S
2
,,S
n
de lungimi L
1
,L
2
,,L
n .
n cadrul fiecrui ir elementele sunt
ordonate cresctor, irul S coninnd exact elementele din cele n iruri. Acest lucru se va realiza
fcnd succesiv.
Problema 5. (Problema spectacolelor). ntr-o sal, ntr-o zi, trebuie planificate n spectacole.
Pentru fiecare spectacol se cunoate intervalul n care se desfoar: [st, sf]. Se cere s se
planifice un numr maxim de spectacole astfel nct s nu se suprapun.
Problema 6. (Maximizarea valorilor unei expresii). Se dau n numere ntregi nenule a
1
,
a
2
,...,a
n
i m numere ntregi nenule c
1
,c
2
,...,c
n
S se determine o submulime B a mulimii
A={a
1,
a
2,...,
a
n
}
Care s maximizeze valoarea expresiei:
E=c
1
x
1
+c
2
x
2
+...+c
n
x
n
,
,
tiind c nm i x
i


{ a
1,
a
2,
...
,
a
n
}


i { 1,2,...,n}.
Problema 7. (Staia de servire). O singur staie de servire (procesor, pomp de benzin etc.)
trebuie s satisfac

cererile a n clieni. Timpul de servire necesar fiecrui client este cunoscut n
prealabil: pentru clientul i este necesar un timp t
i
, i=1,2,...,n. Dorim s minimizm timpul total
de ateptare

n
i
T
1
( timpul de ateptare pentru clientul i )
ceea ce este acelai lucru cu a minimiza timpul mediu de ateptare, care este T/n. De exemplu;
dac trei clieni cu t
1
=5, t
2
=10, t
3
=3, sunt posibile ase ordini de servire date de tabelul
urmtor:
Ordinea
1 2 3 5+(5+10)+(5+10+3)=38
1 3 2 5+(5+3)+(5+3+10)=31
2 1 3 10+(10+5)+(10+5+3)=43
2 3 1 10+(10+3)+(10+3+5)=41
3 1 2 3+(3+5)+(3+5+10)=29 optim
3 2 1 3+ (3+10)+(3+10+5)=34
n primul caz, clientul 1 este servit primul, clientul 2 ateapt pn este servit clientul 1 i apoi
este servit, clientul 3 ateapt pn sunt servii clientul 1, 2 i apoi este servit. Timpul total de
ateptare al celor trei clieni este 38. Ordinea optim de servire este 3, 2, 1.
Metoda BACKTRACKING
Problema 1. (Generarea aranjamentelor/funciilor
*
injective). Se citesc n i k numere
naturale. Se cere s se genereze toate submulimile mulimii 1,2,...,n de k elemente. Dou
mulimi cu aceleai elemente, la care ordinea acestora difer, sunt considerate distincte.
*
Matematic, prin aranjamente de n luate cte k se nelege numrul aplicaiilor injective de la mulimea {1,2,...,k}
la mulimea {1,2,...,n}
Problema 2. (Generarea partiiilor unui numr natural). Se citete un numr natural n. Se
cere, s se tipreasc toate modurile de descompunere a sa ca sum de numere naturale.
Exemplu. Pentru n=4 avem: 4, 31, 22, 211, 13, 121, 112, 1111.
Observaie. Ordinea numerelor din sum este important. Astfel, se tiprete 112 dar i 211
precum i 121.
Problema 3. (Plata unei sume cu bancnote de valori date). Sunt disponibile n tipuri de
monezi. Pentru fiecare tip k=1,2,...,n, valoarea unei monezi este numrul natural a[k], iar
numrul de monezi de acest tip este nr[k]. Fiind dat o sum de mani p, se cer toate modalitile
n care ea poate fi achitat cu monezile disponibile.
Problema 4. (Metagrama). S se scrie un program care, citind un cuvnt i un numr natural
cuprins ntre 1 i lungimea , s afieze toate anagramrile obinute din cuvnt, dup eliminarea
literei de pe poziia citit.
Problema 5. (Generarea elementelor unui produs carterian). Fie date m mulimi
A
1
,A
2
,...,A
m
. unde pentru fiecare i{1,2,...,m} A
i
={ 1,2,...,n
i
} . Se pune problema generrii
tuturor celor n
1

*
n
2

*
...
*
n
m
elemente ale produsului cartezian A
1*
A
2*...*
A
m
.
Problema 6. (Problema cstoriilor stabile). Se consider n fete care urmeaz s se
cstoreasc cu n biei. Fetele i bieii i exprim preferinele unul fa de altul prin
numerele reale din intervalul [0, 1]. Preferina fetei i pentru biatul j este dat de fb[i,j], iar
preferina biatului i pentru fata j este dat de bf[i,j]; elementele matricilor fb i bf sunt
numere reale din intervalul [0, 1]. Biatul ales de fat i are numrul x[i] . Bineneles, vectorul x
va fi un vector permutare. Costul cstoriei fetei i cu biatul x[i] este fb[i, x[i]]*bf[x[i], i], iar
costul general (care trebuie minimizat) este suma dup i a acestor valori. Mai mult, se cere ca
cele n cstorii s fie stabile, adic s nu existe (i,j) cu ij astfel nct fata i s prefere biatul x[j]
biatului x[i], iar biatul x[j] s prefere fata i fetei j.
Problema 7. (Paranteze). Se d numrul natural n>0. S se determine toate irurile de n
paranteze care se nchid corect.
Exemplu. n=6 ((( ))), ( )( )( ), (( )( )), ( )(( )), (( ))( ).
Problema 8. (Generarea partiiilor unei mulimi
*
). Se consider mulimea {1,2,...,n}. Se cer
toate partiiile acestei mulimi.
*Submulimile A1 ,A2 , ..., Am ale unei mulimi A constituie o partiie a acesteia, dac sunt disjuncte ntre ele (nu au
elemente comune) i mulimea rezultat n urma reunirii lor este A.
Problema 9. (Generarea tuturor submulimilor unei mulimi).
S consider mulimea {1,2,...,n}. Se cer toate submulimile acestei mulimi.
Problema 10. (Generarea combinrilor). Se citesc n i k numere naturale, cu n mai mare sau
egal cu k. Se cere s se genereze toate submulimile cu k elemente ale mulimii {1,2,...,n}. Dou
mulimi se consider egale dac i numai dac au aceleai elemente, indiferent de ordinea n care
acestea apar.
Problema 11. (Generarea permutrilor*). Se consider un numr natural n. Se cere s se
genereze toate permutrile mulimii {1,2,...,n}

. Dou muli se consider egale dac i numai
dac au aceleai elemente, indiferent de ordinea n care acestea apar.
*
Menionm c orice permutare este alctuit din toate elementele distincte ale mulimii iniiale aezate eventual
ntr-o alt ordine. De fapt, o permutare a unei mulimi A este o funcie bijectiv definit pe A cu valori n A.
Problema 12. (Colorarea hrilor). Fiind dat o hart cu n ri, se cer toate soluiile de colorare
a hrii, utiliznd cel mult 4 culori, astfel nct dou ri cu frontier comun s fie colorate
diferit. Faptul c sunt suficiente numai 4 culori pentru orice hart s poat fi colorat a fost
demonstrat.
Problema 13. (Problema comis-voiajorului). Un comis-voiajor trebuie s viziteze un numr de
n orae. Iniial, acesta se afl ntr-unul din ele, notat cu 1. Comis-voiajorul dorete s viziteze
toate oraele fr s treac de dou ori prin acelai oral iar la ntoarcere s revin n oraul 1.
Cunoscnd legturile dintre orae, se cere s se tipreasc toate drumurile posibile pe care le
poate efectua comis-voiajorul.
Problema 14. (Umplerea unei suprafee nchise). Se d o matrice binar (elementele ei au
numai valorile 0 sau 1). Valorile 1 delimiteaz o anumit suprafa nchis n cadrul matricei
(elementele aparinnd acestei suprafee sunt marcate cu 0). Se dau de asemenea coordonatele
x i y ale unui element al matricei semnificnd un punct din interiorul acestei suprafee. Se cere
schimbarea valorilor 0 din suprafaa nchis cu o alt valoare (colorarea suprafeei nchise).
Problema 15. (Problema fotografiei). O fotografie alb-negru este prezentat sub forma unei
matrice binare. Ea nfieaz unul sau mai multe obiecte.
Problema 16. (Problema canibalilor i misionarilor). Pe malul unei ape se gsesc c canibali i
m misionari. Ei urmeaz s treac apa, avnd la dispoziie o barc cu dou locuri. Se tie c,
dac att pe un mal ct i pe cellalt, avem mai muli canibali dect misionari, misionarii sunt
mncai de canibali. Se cere s se scrie un program care s furnizeze toate variantele de trecere a
apei, n care misionarii s nu fie mncai.
Probleme 17. (Drapele). Avem la dispoziie 6 culori: alb, galben, rou, verde, albastru, negru.
S se precizeze toate drapelele tricolore care se pot proiecta, innd c trebuie respectate
urmtoarele reguli:
orice drapel are culoarea din mijloc galben sau verde;
cele trei culori de pe drapel sunt distincte.
Problema 18. (Attila i regele). Un cal i un rege se afl pe o tabl de ah. Unele cmpuri sunt
arse, poziiile lor fiind cunoscute. Calul nu poate clca pe cmpuri arse, iar orice micare a
calului face ca respectivul cmp s devin ars. S se afle dac exist o succesiune de mutri
permise (cu restriciile de mai sus) prin care calul s poat ajunge la rege i s revin la poziia
iniial. Poziia iniial a calului precum i poziia regelui sunt considerate nearse.
Problema 19. (Problema discret a rucsacului). Cu ajutorul unui rucsac avnd
Capacitatea maxim admisibil G trebuie s se transporte o serie de obiecte din n disponibile,
avnd greutile g
1
,g
2
, ..., g
n
, aceste obiecte fiind de utilitile c
1
,c
2
, ... ,c
n
. Presupunnd c
obiectele nu por fi luate dect n ntregime (neputndu-se diviza), s se gseasc o modalitate de
umple optim rucsacul.
Problema 20. (Labirint). Se d un labirint sub forma unei matrice binare n care unitile
corespund spaiilor pe unde se poate trece, iar zerourile corespund zidurilor. Un oricel pus ntr-o
anumit csu a labirintului va trebui s ajung ntr-o alt csu a labirintului, unde se afl o
bucic de cacaval. El se poate mica doar ortogonal, nu i diagonal.
Problema 21.(Puncte albe i negru). Se dau n puncte albe i n puncte negru n plan, de
coordonate ntregi. Fiecare punct alb se unete cu cte un punct negru, astfel nct din fiecare
punct, fie alb sau negru, pleac exact un segment.
S se determine o astfel de configuraie de segmente aa nct oricare dou segmente s nu se
intersecteze. Se citesc n perechi de coordonate corespunznd punctelor albe i n perechi de
coordonate corespunznd punctelor negre.
Problema 22. Fiind dat un numr natural pozitiv n, se cere s se produc la ieire toate
descompunerile sale ca sum de numere prime.
Problema 23. (Colorarea hrilor). Fie dat hart cu n ri. Presupunnd c dispunem de un
numr de s culori, se cere s se determine toate variantele de colorare a hrii, care s respecte
condiia ca orice dou ri vecine (care au frontier comun) s fie colorate diferit. Se cere
varianta iterativ a algoritmului.
Problema 24. (Figuri conexe). Se consider un caroiaj dreptunghiular cu m linii i n coloane, n
care anumite celule sunt ocupate. Dou celule libere sunt considerate ca fcnd parte din aceeai
component conex dac exist ntre ele un drum format numai din celule libere i n care dou
celule consecutive sunt vecine pe orizontal sau pe vertical. Se cere s se afle componentele
conexe i numrul lor.
Problema 25. se consider un caroiaj dreptunghiular cu m linii i n coloane, n care anumite
poziii sunt ocupate (interzise), precum i o poziie iniial (i0, j0), considerat liber. Se cere s
se determine pentru toate poziiile la care poate ajunge un mobil ce pleac din pleac din punctul
iniial (i0, j0), distana lor fa de acest punct, msurat n deplasri elementare. Se precizeaz
c o deplasare elementar a mobilului const n repoziionarea sa:
- cu o poziie la dreapta pe aceeai linie;
- cu o poziie la stng pe aceeai linie;
- cu o poziie n jos pe aceeai coloan,
bineneles dac noua poziie este liber.
Metoda programrii dinamice
Problema 26. (Subir cresctor de lungime maxim). Se consider un vector de n elemente
ntregi. Se cere s se tipreasc cel mai lung subir cresctor al acestuia.
Problema 27. (Determinarea drumurilor de cost minim ntr-un graf). Se consider un graf
orientat dat printr-o matrice A, numit matricea costurilor ataat grafului, astfel:
( )

'


>

. int ,
, , 0
; 0 cos ,
) , (
muchie o r pr unite sunt nu j i i vrfurile dac
coincid j i i vrfurile dac
c c t de muchie o cu unite sunt j i i vrfurile dac c
j i A
Se cere ca pentru fiecare pereche de vrfuri (i, j) s se tipreasc lungimea drumului minim de la
i la j.
Problema 28. (nmulirea optim a unui ir de matrice). S presupunem c vrem s calculm
produsul A
1 *
A
2
*...*A
n
unde pentru fiecare i {1,2,...,n}, A
1
este o matrice de dimensiuni
(d
1
, d
i+1
). Asociativitatea nmulirii a dou matrici ne ofer mai multe posibiliti de a calcula
produsul A
1
* A
2
* ...* A
n
, posibiliti care nu necesit ns acelai numr de operaii. Se pune
problema de a determina o posibilitate de asociere a nmulirii matricilor astfel nct numrul de
operaii s fie minim.
Problema 29. (Investiii). Se consider un numr natural s semnificnd o sum de bani. Aceast
sum poate fi investit n k secii aparinnd aceleiai firme. Beneficiile anuale care se pot
obine sunt date de tabelul urmtor:
Suma Secia 1 2 ... k
0 b
01
b
02
... b
0k
1 b
11
b
12
... b
1k
2 b
21
b
22
... b
2k
... ... ... ... ...
s b
s1
b
s2
... b
sk
Se cere s se precizeze beneficiul maxim care se poate obine, precum i repartiia pe secii a
sumei.
Problema 30. Pentru suma de 3 milioane lei ce se poate investi n trei secii cu un beneficiu
anual dat de tabelul urmtor (unde sumele sunt exprimate n milioane lei):
Suma Secia 1 2 3
0 0 0 0
1 0.1 0.2 0.3
2 0.2 0.3 0.4
3 0.3 0.4 0.5
Soluia optim const n a investi 0 milioane n secia 1, i milion n secia 2 i 2 milioane n
secia 3. n acest mod se obine un beneficiu anual de 0,6 milioane lei.
Problema 31. (Problema patronului). Un patron a cumprat un calculator i dorete s nvee
s lucreze pe el. Pentru aceasta va umple un raft de cri din colecia Informatica n lecii de 9
minute i 60 secunde. Raftul are lungimea L cm (L este numr natural). Seria dispune de n
titluri 1, 2, ... ,n avnd grosimile g
1
,g
2
, ... , g
n
cm (numere naturale).
S se selecteze titlurile pe care le va cumpra patronul, astfel nct raftul s fie umplut complet
(suma grosimilor crilor cumprate s fie egal cu lungimea raftului) i numrul crilor
achiziionate s fie maxim.
Observaii: 1) ntr-un raft crile pot fi aezate doar vertical.
2) 1 n 60 1 L 200.
Date de intrare: Fiierul de intrare (cu numele citi de la tastatur), are urmtoarea structur:
n linia 1 : L
n linia 2: g
1
,g
2
, ... ,g
n.
Date de ieire: rezultatele se vor gsi n fiierul OUTPUT.TXT care va conine dou linii:
n linia 1: numrul de cri cumprate;
n linia 2: grosimile lor.
Observaii. 1) dac problema nu are soluie se va scrie n OUTPUT.TXT mesajul: NU.
2) Dac problema are mai multe soluii optime, fiierul OUTPUT.TXT va conine una dintre ele.
3) datele coninute n fiierul de intrare sunt corecte.
Exemple: 1) Dac fiierul INPUT.TXT conine:
10
3 7 1 1 1 1 1 1 1
Fiierul OUTPUT.TXT va conine:
8
3 1 1 1 1 1 1 1
2) Dac fiierul INPUT.TXT conine:
7
3 5 6
Fiierul OUTPUT.TXT va conine:
NU
Metoda divide et Impera.
Problema 32. (Maxim). Se citete un vector cu n componente, numere naturale. Se cere s se
tipreasc valoarea maxim utiliznd strategia Divide et impera.
Problema 33. (Quicksort). Fie vectorul v cu n componente numere ntregi (sau reale). Se cere
ca vectorul s fie sortat cresctor utiliznd metoda sortrii rapide.
Problema 34. (Problema tieturilor). Se d o bucat de tabl de form dreptunghiular cu
lungimea l i nlimea h, avnd pe suprafaa ei n guri de coordonate numere ntregi. Se cere s
se decupeze din ea o bucat de arie maxim care nu prezint guri. Sunt permise numai tieturi
orizontale i verticale.
Problema 35. Scriei un program n care calculatorul s ghiceasc un numr natural ales de
dumneavoastr( numrul este cuprins ntre 1 i 30.000). Atunci cnd calculatorul v propune un
numr i vei rspunde prin:
1, dac numrul este prea mare;
2, dac numrul este prea mic;
0, dac numrul a fost ghicit.
Problema 36. (Plieri). Se consider un vector cu n componente, numere naturale. Definim
plierea vectorului ca fiind suprafaa unei jumti, numit donatoare, peste o alta, numit
receptoare. n cazul n care vectorul are un numr impar de componente, cea din mijloc este
eliminat. n acest fel se ajunge la un vector ale crui elemente au numerotarea jumtii
receptoare.
Exemplu: Vectorul 1, 2, 3,4, 5 se poate plia n dou moduri: 1,2 i 4,5. Plierea se aplic n mod
repetat pn se ajunge la un vector cu o singur component, iar coninutul ei se numete
element final. S se precizeze care sunt elementele finale i care este irul de plieri prin care se
poate ajunge la ele.
Problema 37. Se d un vector cn n componente la nceput nule. O seciune pe poziia k va
incrementa toate elementele aflate n zona de secionare anterioar situate ntre poziia 1 i k.
Exemplu.
0 0 0 0 0 0 0 se secioneaz pe poziia 4;
1 1 1 1 0 0 0 se secioneaz pe poziia 1;
2 1 1 1 0 0 0 se secioneaz pe poziia 3;
3 2 2 1 0 0 0 etc.
S se determine o ordine de secionare a unui vector cu n elemente astfel nct suma elementelor
sale s fie s. Valorile n i s se citesc.
Metoda BRANCH and BOUND.
Problema 38. (Problema mutrilor). Se consider un vector cu 2x(n-1) cifre. Primele n poziii
sunt ocupate cu cifre de 1, poziia n+1 conine cifra 0 i ultimele n poziii sunt ocupate cu cifre
de 2. tiind c cifra 0 i poate schimba locul cu orice cifr aflat la cel mult dou poziii
distana de ea, se cere s se plaseze pe primele n poziii cifrele 2 i pe ultimele n poziii cifrele 1.
Problema 39. (Problema ptratului). Se consider un ptrat cu nxn csue. Fiecare csu
conine un numr natural ntre 1 i nx(n-2). Dou csue sunt ocupate cu numrul 0. Fiecare
numr natural, diferit de 0, apare o singur dat n cadrul ptratului. tiind c 0 i poate schimba
locul cu orice numr natural aflat deasupra, la dreapta, la stnga sau jos, n raport cu poziia n
care se afl numrul 0, se cere s se precizeze irul de mutri prin care se poate ajunge de la o
configuraie iniial la o configuraie final. Se cere de asemenea ca acest ir de mutri s fie
optim, n sensul c trebuie s se ajung la configuraia final print-un numr minim de mutri.
Exemplu. Pentru n=3 se d configuraia iniial

,
_

6 7 5
4 0 1
0 2 3
I
; se
Cere configuraia final

,
_

0 0 7
6 5 4
3 2 1
F
.
Algoritmi probabilistici.
Problema 40. Artai cun poate fi aplicat stilul Sherwood de aproximare probabilistic pentru
sortarea rapid.
Problema 41. (Eliminarea tuturor vrfurilor unui graf). Fie dat un graf neorientat. Prin
mutare nelegem eliminarea din graf a unui vrf mpreun cu toi vecinii si. Se cere s se
furnizeze o secven cu numr minim de mutri care are drept rezultat eliminarea tuturor
vrfurilor grafului.
Algoritmi genetici.
Problema 42. Rezolvai problema comis-voiajorului folosind algoritmi genetici (vezi problema
Problema 43. Rezolvai problema planificrii lucrrilor pe mai multe procesoare utiliznd
algoritmi genetici (vezi problema )
Problema 44. (Problema orarului). S se elaboreze orarul unei coli folosind algoritmi
genetici.

You might also like