Sunteți pe pagina 1din 104

Probleme de matematici manageriale

Ioana Taşcu
Ioana Zelina

04.03.05
Cuprins

1 Programare liniară 6
1.1 Probleme rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 Probleme de transport 32
2.1 Probleme rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3 Teoria grafelor 66
3.1 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

ii
Prefaţă

Această lucrare se adresează studenţilor de la secţiile economice, de la mate-


matică şi de la secţiile inginereşti, oferindu-le elementele de bază pentru ı̂nsuşirea
programării liniare şi a teoriei grafelor.
Programarea matematică este unul din cele mai importante capitole ale
teoriei operaţionale. Problemele prezentate sunt axate pe aspecte din activităţile
economice ale intreprinderilor şi arată cum putem face o analiză a indicatorilor
economici importanţi, cum ar fi preţul de cost, productivitatea sau beneficiul.
Analiza se face rezolvând modelele matematice prin care se transpun problemele
economice.
Prima parte a lucrării conţine probleme de programare liniară rezolvate şi
propuse, arătând modul ı̂n care se pun şi se rezolvă aceste probleme, modelate
după cele practice din industrie sau agricultură.
Problemele de transport, cuprinse ı̂n cel de-al doilea capitol, ne arată cum
putem optimiza transporturile de marfă de la distribuitori la beneficiari sau cum
putem organiza optim distribuirea sarcinilor de lucru.
Partea a treia prezintă probleme din teoria grafelor cu aplicaţii ı̂n probleme
de optimizare şi reţele de transport.

Autorii

5
CAPITOLUL 1

Programare liniară

1.1 Probleme rezolvate


1 Să se scrie modelele matematice corespunzătoare următoarelor probleme eco-
nomice:
a) O intreprindere fabrică două feluri de produse, notate P1 şi P2 , folosind
trei materii prime M1 , M2 şi M2 . Din fiecare materie primă intreprinderea are
ı̂n stoc 7 t, 5 t şi 6 t. Consumurile specifice (ı̂n kg) ale produselor P1 şi P2 din
aceste materii prime sunt 4, 3, 0 şi respectiv 2, 5, 3. Beneficiul adus de o unitate
de produs P1 este 3 mii lei, iar cel adus de produsul P2 este 6 mii lei. Să se scrie
modelul matematic pentru stabilirea cantităţilor ce trebuie produse din P1 şi P2 ,
cu scopul de a obţine un beneficiu total maxim.
Soluţie:
Pentru a scrie modelul matematic ataşat, notăm cu x1 şi x2 cantităţile din
produsele P1 şi P2 ce urmează a fi fabricate, iar datele problemei pot fi organizate
ı̂n tabelul următor:

6
1.1. Probleme rezolvate 7

Funcţia de scop reprezintă beneficiul total realizat, deci se cere să se determine

max f = 3x1 + 6x2



 4x1 + 2x2 ≤ 7000

cu condiţiile 3x1 + 5x2 ≤ 5000 x1 , x2 ≥ 0.

 3x ≤ 6000
2

b) O unitate agricolă dispune de 1000 ha teren arabil, pe care trebuie să se


cultive grâu, orz şi porumb. Se cunosc producţiile medii la ha şi cheltuielile de
producţie calculate pe ha, ele fiind cuprinse ı̂n tabelul următor:

Din grâu trebuie să se producă cel puţin 4000 q, din orz cel puţin 3000 q, iar
din porumb 8000 q. Se cere modelul matematic corespunzător optimizării pentru
minimizarea cheltuielilor de producţie globale.

Soluţie:
Notăm cu x1 suprafaţa cultivată cu grâu, x2 cu orz şi x3 cu porumb. Se cere
să se determine

min f = 2000x1 + 1600x2 + 2500x3




 x1 + x2 + x3 = 1000

 25x ≥ 4000
1
cu condiţiile x1 , x2 , x3 ≥ 0.

 20x2 ≥ 3000

30x3 ≥ 8000

c) O dietă cere ca alimentaţia să conţină 600 unităţi de calorii şi 500 unităţi
de vitamine, care se pot obţine din patru elemente, notate A1 , A2 , A3 şi A4 .
Cantităţile de calorii şi vitamine conţinute de o unitate din fiecare aliment, pre-
cum şi costul unitar al fiecărui aliment, sunt sistematizate ı̂n următorul tabel:
8 1. PROGRAMARE LINIARĂ

Se cer cantităţile din fiecare aliment ce trebuie folosite pentru a se respecta raţia
din dietă, iar costul să fie minim.

Soluţie:
Notăm cu x1 , x2 , x3 şi x4 cantităţile din alimentele A1 , A2 , A3 şi A4 care
trebuie consumate. Din punct de vedere matematic, se cere să se determine
valoarea minimă a funcţiei

min f = 4x1 + 2x2 + 3x3 + x4

iar respectarea dietei conduce la sistemul de restricţii


(
2x1 + x2 + 2x3 + x4 ≥ 600
x1 , x2 , x3 , x4 ≥ 0.
x1 + x2 + 2x3 + 2x4 ≥ 500

d) Într-un atelier de producţie sunt trei strunguri de tipuri diferite A, B şi


C care pot fi folosite timp de 150 ore, 110 ore şi 100 ore ı̂n cursul unei luni.
Aceste strunguri pot produce patru tipuri de piese P1 , P2 , P3 şi P4 . Timpul de
solicitare a strungurilor pentru un lot de 1000 de piese din fiecare tip este dat ı̂n
tabelul următor:
1.1. Probleme rezolvate 9

Să se planifice timpul disponibil al fiecărui strung, astfel ı̂ncât beneficiul re-
alizat să fie minim, iar strungurile A şi C să nu aibă timpi morţi.
Soluţie:
Notăm cu x1 , x2 , x3 şi x4 numărul de piese din cele patru tipuri care se
vor realiza ı̂n condiţiile thenice ale problemei. Deoarece timpii disponibili sunt
limitaţi, iar strungurile A şi C nu au timpi morţi, avem restricţiile:

 9x1 + 5x2 + 6x3 + 7x4 = 150

4x1 + 3x2 + 7x3 + 5x4 ≤ 110 x1 , x2 , x3 , x4 ≥ 0

 7x + 4x + 5x + 6x = 100
1 2 3 4

şi funcţia de eficienţă este

max f = 60x1 + 80x2 + 50x3 + 70x4 .

e) În tabelul de mai sus sunt sintetizate datele referitoare la costul forajului
unei sonde, producţia anuală pe sondă şi posibilităţile de amplasare a sondelor
pe trei structuri geologice S1 , S2 şi S3 .

Ştiind că producţia anuală planificată este de 100.000 t, să se determine numărul
de sonde ce se pot fora pe fiecare structură, astfel ı̂ncât investiţiile totale să fie
minime.

Soluţie:
Notăm cu x1 , x2 şi x3 numărul de sonde de pe fiecare structură. Modelul
matematic este
min f = 3000x1 + 2000x2 + 5000x3


 x1 ≤ 20

 x ≤ 10
2
cu condiţiile x1 , x2 , x3 ≥ 0.

 x3 ≤ 30

3000x1 + 5000x2 + 7000x3 ≥ 100000

10 1. PROGRAMARE LINIARĂ

2 Să se rezolve următoarele probleme de programare liniară date prin modelele


lor matematice, ı̂n forma canonică, folosind algoritmul simplex:
a) max f = 2x1 + x2 + 3x3 + 4x4 ,

 2x1 + x2 − x3 + 3x4 = 6

x1 + x2 + 2x3 = 5 x1 , x2 , x3 , x4 ≥ 0.

 −x + 2x + 2x + x = 7
1 2 3 4

b) max f = 10x1 + 3x2 + 6x3 + x4 + 2x5 ,


(
5x1 + x2 + x4 = 3
x1 , x2 , x3 , x4 , x5 ≥ 0.
4x1 + 6x2 − 3x3 + x4 + x5 = 4

Soluţie:
Algoritmul simplex se sintetizează ı̂ntr-un tabel ı̂n care b este coloana terme-
nilor liberi din restricţii, vi (i = 1, 4) sunt coloanele coeficienţilor necunoscutelor
xi (i = 1, 4) din sistem, B este coloana necunoscutelor aflate ı̂n soluţia de bază,
CB coloana coeficienţilor din funcţia de scop a necunoscutelor din B, iar cj
coeficienţii funcţiei de scop. În soluţia iniţială de bază B intră necunoscutele
care au pe coloană vectorii bazei canonice. Dacă nu avem astfel de necunoscute,
ı̂n B intră vectorii bazei canonice e1 , e2 , e3 . Etapele algoritmului simplex pentru
determinarea maximului funcţiei f sunt:
1) Se determină o soluţie iniţială de bază prin metoda eliminării complete a
lui Gauss, ı̂nlocuind vectorii bazei canonice cu vectorii coloană din matricea A,
elementul pivot alegându-se astfel ı̂ncât raportul Θ dintre coloana b şi elementele
de pe coloana pivot vp să fie minim.
2) Pentru soluţia de bază admisibilă se calculează produsele scalare
fj = i(CB , vj ) pentru fiecare j = 1, n.
3) Se calculează diferenţele ∆j = cj − fj , j = 1, n. Pentru vectorii bazei avem
∆j = 0.
4) Dacă toţi ∆j sunt negativi sau zero, atunci soluţia este optimă. Dacă
există diferenţe ∆j > 0, atunci soluţia nu este optimă şi se ı̂mbunătăţeşte alegând
coloana pivot cea corespunzătoare diferenţei pozitive maxime şi linia pivot cea
corespunzătoare raportului Θ minim. Rapoartele Θ se calculează ı̂ntre elementele
coloanei b şi elementele strict pozitive ale coloanei pivot.
La intersecţia dintre linia pivot şi coloana pivot se determină elementul pivot.
5) Elementul pivot ne indică ce necunoscută intră ı̂n noua bază B şi ı̂n
locul cui, apoi scriem ı̂n coloana B noua bază şi completăm coloana CB cu noi
1.1. Probleme rezolvate 11

coeficienţi ai variabilelor bazice. Utilizăm metoda eliminării complete pentru a


completa un nou tabel simplex: ı̂n loc de pivot se scrie f , linia pivot se ı̂mparte
la pivot, coloana pivot se completează cu 0 şi se calculează restul elementelor din
tabel cu regula dreptunghiului (pivot × element - diagonală / pivot).
6) Se respectă paşii 2, 3, 4, 5 până când toate diferenţele sunt negative
(∆j ≤ 0), adică soluţia este optimă.
Componentele soluţiei optime, adică variabilele bazice din B iau valori egale
cu cele scrise ı̂n coloana b, iar variabilele secundare iau valoarea zero. Se cal-
culează max f = CB · B −1 · b, unde B −1 este inversa matricei formate din vectorii
coloană a vectorilor ce intră ı̂nbaza soluţiei optime. Dacă diferenţele ∆j sunt zero
doar ı̂n dreptul vectorilor din baza B, atunci soluţia optimă este unică. Dacă
nu, atunci soluţia este multiplă, iar celelalte soluţii optime se obţin introducând
pe rând ı̂n bază toţi vectorii coloană care au ∆j = 0.
a)

cj 2 1 3 4
CB B b v1 v2 v3 v4 Θ = b/vp
e1 6 2 1 −1 3 3∗
e2 5 1 1 2 0 5
e3 7 −1 2 2 1
2 v1 3 1 1/2 −1/2 3/2
e2 2 0 1/2 5/2 −3/2 4∗
e3 10 0 5/2 3/2 5/2 4
2 v1 1 1 0 −3 3
1 v2 4 0 1 5 −3
e3 0 0 0 −11 10
2 v1 1 1 0 3/10 0 10/3
1 v2 4 0 1 17/10 0 40/17∗
4 v4 0 0 0 −11/10 1
fj 2 1 −21/10 4
∆j 0 0 51/10∗ 0
2 v1 5/17 1 −3/17 0 0
3 v3 40/17 0 10/17 1 0
4 v4 44/17 0 11/17 0 1
fj 2 4 3 4
∆j 0 −3 0 0
12 1. PROGRAMARE LINIARĂ

5 40 44
Soluţia optimă este x1 = , x3 = , x4 = , x2 = 0 iar
17 17 17
5 40 44 306
fmax = 2 · +3· +4· = .
17 17 17 17

b) Deoarece pe coloana vj avem vectorul (0, 1), această variabilă intră ı̂n
soluţia iniţială de bază B pe poziţia a doua, iar pe prima poziţie (lipsind vectorul
(1, 0)) scriem vectorul e1 din baza canonică.
Se observă că ı̂n ultimul tabel simplex, linia ∆j indică introducerea vectorului
v5 ı̂n bază. Deoarece nici o componentă a acestui vector nu poate fi aleasă element
pivot (una este negativă, cealaltă zero), problema nu admite soluţie optimă finită,
ci infinită.

cj 10 3 6 1 2
CB B b v1 v2 v3 v4 v5 Θ
e1 3 5 1 0 1 0 3∗
2 v5 4 4 6 −3 1 1 4
1 v4 3 5 1 0 1 0 3
2 v5 1 −1 5 −3 0 1 1/5∗
fj 3 −9 −6 1 2
∆j 7 12∗ 12 0 0
1 v4 14/5 26/5 0 3/5 1 −1/5 0
3 v2 1/5 −1/5 1 −3/5 0 1/5
fj 23/5 3 −6/5 1 2/5
∆j −27/5 0 36/5∗ 0 8/5
6 v3 14/3 26/3 0 1 5/3 −1/3
3 v2 3 5 1 0 1 0
fj 67 3 6 13 −2
∆j −57 0 0 −12 4

3 Să se rezolve problemele de programare liniară date prin modelele lor matem-
atice ı̂n formă canonică:
a) min f = 3x1 + 2x2 + 4x3 + 2x4 cu condiţiile

 2x1 + 3x2 + x3 + 2x4 = 15

x1 + 2x2 + x3 + x4 = 10 x1 , x2 , x3 , x4 ≥ 0.

 x + x + 2x + 2x = 11
1 2 3 4
1.1. Probleme rezolvate 13

b) min f = 2x1 − x2 + 2x3 − x4 + x5 + 2x6 cu condiţiile



 x1 + x2 + 2x3 + 3x5 = 15

2x2 + x3 + x4 + 5x5 = 20 x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.

 x + 2x + x + x = 10
2 3 5 6

Soluţie:
Aplicăm algoritmul simplex corespunzător unei probleme de minim, adică
la criteriul de optim toate diferenţele ∆j trebuie să fie pozitive sau zero. Dacă
avem ∆j < 0, soluţia nu este optimă şi pentru determinarea elementului pivot
se alege coloana corespunzătoare diferenţei ∆j < 0 cea mai mică, iar la raportul
Θ dintre elementele coloanei b şi ale coloanei pivot, cea mai mică valoare.
a) Deoarece ı̂n matricea A nu avem vectorii bazei canonice ı̂n soluţia iniţială
de bază B, se scrie e1 , e2 şi e3 . Căutăm să introducem ı̂n bază acei vectori care
ı̂ndeplinesc condiţia pentru coloana Θ, adică dacă facem raportul dintre coloana
b şi elementele coloanei alese, ı̂n dreptul pivotului să fie valoarea minimă.
cj 3 2 4 2
CB B b v1 v2 v3 v4 Θ
e1 15 2 3 1 2 15/2∗
e2 10 1 2 1 1 10
e3 11 1 1 2 2 11
3 v1 15/2 1 3/2 1/2 1 5
e2 5/2 0 1/2 1/2 0 5∗
e3 7/2 0 −1/2 3/2 1
3 v1 0 1 0 −1 1
2 v2 5 0 1 1 0 5
e3 6 0 0 2 1 3∗
3 v1 3 1 0 0 3/2 2∗
2 v2 2 0 1 0 −1/2
4 v3 3 0 0 1 1/2 6
fj 3 2 4 11/2
∆j 0 0 0 −7/2∗
2 v4 2 2/3 0 0 1
2 v2 3 1/3 1 0 0
4 v3 2 −1/3 0 1 0
fj 2/3 2 4 2
∆j 7/3 0 0 0
14 1. PROGRAMARE LINIARĂ

Soluţia optimă este x4 = 2, x2 = 3, x3 = 2, x1 = 0, iar fmin = 18.


b) Deoarece ı̂n matricea A avem vectorii bazei canonice la v1 , v4 şi v6 , aceştia
intră ı̂n soluţia iniţială de bază şi verificăm optimalitatea ei, apoi o ı̂mbunătăţim
conform algoritmului simplex pentru minimizare.

cj 2 −1 2 −1 1 2
CB B b v1 v2 v3 v4 v5 v6 Θ
2 v1 15 1 1 2 0 3 0 15/2
−1 v4 20 0 2 1 1 5 0 20
2 v6 10 0 1 2 0 1 1 5∗
fj 2 2 7 −1 3 2
∆j 0 −3 −5∗ 0 −2 0
2 v1 5 1 0 0 0 2 −1
−1 v4 15 0 3/2 0 1 9/2 −1/2 10
2 v3 5 0 1/2 1 0 1/2 1/2 10
fj 2 −1/2 2 −1 1/2 −1/2
∆j 0 −1/2∗ 0 0 1/2 5/2
2 v1 5 1 0 0 0 2 −1
−1 v2 10 0 1 0 2/3 3 = 1/3
2 v3 0 0 0 1 −1/3 −1 2/3
fj 2 −1 2 4/3 −1 −1/3
∆j 0 0 0 1/3 2 7/3

Soluţia optimă este x1 = 5, x2 = 10, x3 = x4 = x5 = x6 = 0, iar fmin = 0.


Datorită faptului că la pasul II există două rapoarte Θ egale, am putea alege şi
alt pivot pe coloana v2 astfel ı̂ncât să iasă din soluţia de bază v3 , deci mai putem
obţine o soluţie cu componentele v1 , v4 şi v5 dar care este de fapt aceeaşi.
cj 2 −1 2 −1 1 2
CB B b v1 v2 v3 v4 v5 v6 Θ
2 v1 5 1 0 0 0 2 −1
−1 v4 0 0 0 −3 1 3 −2
−1 v2 10 0 1 2 0 1 1
fj 2 −1 1 −1 0 −1 Soluţia
∆j 0 0 1 0 1 1 optimă

4 Să se rezolve problemele de programare liniară, aducându-le iniţial la forma


canonică:
1.1. Probleme rezolvate 15

a) max f = x1 + x2 + 2x3 cu condiţiile



 x1 + x2 − x3 ≤ 5

−x1 + x2 + x3 ≤ 8 x1 , x2 , x3 ≥ 0.

 x + 2x ≤ 6
1 2

b) min f = 2x1 + x2 + 2x3 cu condiţiile


(
2x1 + x2 + 2x3 ≥ 2
x1 , x2 , x3 ≥ 0.
4x1 + 2x2 + x3 ≥ 2

Soluţie:
În aceste modele matematice condiţiile sunt inecuaţii. Pentru a transforma
inecuaţiile ı̂n ecuaţii pentru forma canonică, se introduc variabilele de compen-
sare εi care ı̂n funcţia de scop f au coeficienţii 0.
a) Sistemul de condiţii se compensează cu ε1 , ε2 şi ε3 :

 x1 + x2 − x3 + ε1 = 5

−x1 + x2 + x3 + ε2 = 8 x1 , x2 , x3 , ε1 , ε2 , ε3 ≥ 0

 x + 2x + ε = 6
1 2 3

max f = x1 + x2 + 2x3 + 0 · ε1 + 0 · ε2 + 0 · ε3 .
cj 1 1 1 0 0 0
CB B b v1 v2 v3 ε1 ε2 ε3 Θ
0 ε1 5 1 1 −1 1 0 0
0 ε2 8 −1 1 1 0 1 0
0 ε3 6 1 2 0 0 0 1
fj 0 0 0 0 0 0
∆j 1 1 2∗ 0 0 0
0 ε1 13 0 2 0 1 1 0
2 v3 8 −1 1 1 0 1 0
0 ε3 6 1 2 0 0 0 1
fj −2 2 2 0 2 0
∆j 3∗ −1 0 0 −2 0
0 ε1 13 0 2 0 1 1 0
2 v3 14 0 3 1 0 1 1
1 v1 6 1 2 0 0 0 1
fj 1 8 2 0 2 3
∆j 0 −7 0 0 −2 −3
16 1. PROGRAMARE LINIARĂ

Soluţia optimă este x1 = 6, x3 = 14, ε1 = 13, x2 = ε2 = ε3 = 0 iar fmax = 34.


b) Aducem la forma canonică introducând variabilele de compensare ε1 şi ε2 .
Obţinem
(
2x1 + x2 + 2x3 − ε1 = 2
x1 , x2 , x3 , ε1 , ε2 ≥ 0
4x1 + 2x2 + x3 − ε2 = 2

min f = 2x1 + x2 + 2x3 + 0 · ε1 + 0 · ε2 .


Deoarece ı̂n matricea sistemului nu avem vectorii bazei canonice, ı̂n soluţia
iniţială de bază B introducem e1 şi e2 şi cu criteriul ”Θ minim” determinăm
soluţia admisibilă, apoi aplicăm criteriul de optim.

cj 2 1 2 0 0
CB B b v1 v2 v3 ε1 ε2 Θ
e1 2 2 1 2 −1 0 1
e2 2 4 2 1 0 -1 1/2∗
e1 1 0 0 3/2 −1 1/2 2/3∗
2 v1 1/2 1 1/2 1/4 0 −1/4 2
2 v3 2/3 0 0 1 −2/3 1/3
2 v1 1/3 1 1/2 0 1/6 −1/3
fj 2 1 2 −1 0
∆j 0 0 0 1 0

2 1
Toţi ∆j ≥ 0, deci soluţia optimă este x3 = , x1 = , x2 = ε1 = ε2 = 0 şi
3 3
fmin = 2. Deoarece există ∆j = 0 nu doar pentru variabilele din soluţie, avem
soluţii multiple. Pentru a găsi soluţia generală, introducem ı̂n bază pe rând aceşti
vectori. Dorim să introducem v2 , ar trebui să căutăm Θ minim, dar o singură
componentă poate fi pivot şi anume 1/2. Obţinem tabelul simplex:

cj 2 1 2 0 0
CB B b v1 v2 v3 ε1 ε2 Θ
2 v3 2/3 0 0 1 −2/3 1/3
2 v1 1/3 1 1/2 0 1/6 −1/3
2 v3 2/3 0 0 1 −2/3 1/3
1 v2 2/3 2 1 0 1/3 −2/3
fj 2 1 2 −1 0
∆j 0 0 0 1 0
1.1. Probleme rezolvate 17

2 2
O altă soluţie optimă este x3 = , x2 = , x1 = ε1 = ε2 = 0. La fel procedăm cu
3 3
vectorul ε2 şi mai obţinem altă soluţie optimă. Soluţia generală este o combinaţie
convexă a acestor soluţii.

5 Să se rezolve problemele de programare liniară:


a) max f = 2x1 + x2 + 3x3 cu condiţiile


 x1 + 2x2 + 3x3 ≤ 15

2x1 + x2 + 5x3 ≥ 20 x1 , x2 , x3 ≥ 0.

 x + 2x + x ≤ 5
1 2 3

b) max f = 6x1 + x2 + 7x3 cu condiţiile

(
2x1 + x2 + x3 = 6
x1 , x2 , x3 ≥ 0.
x1 + 2x2 + 4x3 ≤ 5

c) min f = 2x1 + 2x2 + x4 cu condiţiile


 x1 + x2 + x3 + x4 = 5

2x1 + x2 + 2x3 ≥ 3 x1 , x2 , x3 , x4 ≥ 0.

 2x − x = 4
2 3

Soluţie:
a) Introducem variabilele de compensare pentru a transforma inecuaţiile ı̂n
ecuaţii. Obţinem restricţiile:


 x1 + 2x2 + 3x3 + ε1 = 15

2x1 + x2 + 5x3 − ε2 = 20 x1 , x2 , x3 , ε1 , ε2 , ε3 ≥ 0

 x + 2x + x + ε = 5
1 2 3 3

max f = 2x1 + x2 + 3x3 + 0 · ε1 + 0 · ε2 + 0 · ε3 .


18 1. PROGRAMARE LINIARĂ

cj 2 1 3 0 0 0
CB B b v1 v2 v3 ε1 ε2 ε3
0 ε1 15 1 2 3 1 0 0 5
e2 20 2 1 5 0 −1 0 4∗
0 ε3 5 1 2 1 0 0 1 5
0 ε1 3 −1/5 7/5 0 1 3/5 0
3 v3 4 2/5 1/5 1 0 −1/5 0 10
0 ε3 1 3/5 9/5 0 0 1/5 1 5/3∗
fj 6/5 3/5 3 0 −3/5 0
∆j 4/5∗ 2/5 0 0 3/5 0
0 ε1 10/3 0 2 0 1 2/3 1/3 5∗
3 v3 10/3 0 −1 1 0 −1/3 −2/3
2 v1 5/3 1 3 0 0 1/3 5/3 5
fj 2 3 3 0 −1/3 4/3 Soluţia
∆j 0 −2 0 0 1/3∗ −4/3 este de-
generată
0 e2 5 0 3 0 3/2 1 2
3 v3 5 0 0 1 1/2 0 −1/2
2 v1 0 1 2/3 0 −1/2 0 3/2
fj 2 4/3 3 1/2 0 3/2
∆j 0 −1/3 0 −1/2 0 −3/2

Soluţia optimă este x3 = 5, ε2 = 5, x1 = x2 = ε1 = ε3 = 0 şi fmax = 15.

b) Trebuie introdusă variabilă de compensare doar ı̂n ultima relaţie, doar


aceasta fiind inecuaţie.
(
2x1 + x2 + x3 = 6
x1 , x2 , x3 , ε1 ≥ 0,
x1 + 2x2 + 4x3 + ε1 = 5

max f = 6x1 + x2 + 7x3 + 0 · ε1 .


1.1. Probleme rezolvate 19

cj 6 1 7 0
CB B b v1 v2 v3 ε1 Θ
e1 6 2 1 1 0 3∗
0 ε1 5 1 2 4 1 5
6 v1 3 1 1/2 1/2 0 6
0 ε1 2 0 3/2 7/2 1 4/7∗
fj 6 3 3 0
∆j 0 −2 4∗ 0
6 v1 19/7 1 2/7 0 −1/7
7 v3 4/7 0 3/7 1 2/7
fj 6 33/7 7 8/7
∆j 0 −26/7 0 −8/7

19 4 142
Soluţia optimă este x1 = , x3 = , x2 = ε1 = 0 şi fmax = .
7 7 7
c) Întroducem variabila de compensare ı̂n inecuaţia a doua, iar ı̂n soluţia
iniţială de bază intră variabila x4 pe prima poziţie, având vectorul (1, 0, 0), vari-
abila ε1 pe a doua poziţie şi lipseşte e3 .

cj 2 2 0 1 0
CB B b v1 v2 v3 v4 ε1 Θ
1 v4 5 1 1 1 1 0 5
0 ε1 3 2 1 2 0 1 3
e3 4 0 2 −1 0 0 2∗
1 v4 3 1 0 3/2 1 0 2
0 ε1 1 2 0 5/2 0 1 2/5∗
2 v2 2 0 1 −1/2 0 0
fj 1 2 1/2 1 0
∆j 1 0 −1/2∗ 0 0
1 v4 12/5 −1/5 0 0 1 −3/5
0 v3 2/5 4/5 0 1 0 2/5
2 v2 11/5 2/5 1 0 0 1/5
fj 3/5 2 0 1 −1/5
∆j 7/5 0 0 0 1/5
20 1. PROGRAMARE LINIARĂ

6 Să se scrie şi să se rezolve problemele duale ale problemelor de programare
liniară următoare, apoi să se citească soluţia optimă a problemei primale.
a) min f = 2x1 + 3x2 + x3
(
x1 + x2 + x3 = 5
x1 , x2 , x3 ≥ 0
2x1 − x2 + 3x3 = 7

b) min f = 2x1 + x2
(
4x1 + x2 ≥ 4
x1 , x2 ≥ 0
2x1 + 3x2 ≥ 6
Soluţie:
a) Problema primală are formă standard. Pentru a scrie duala, să scriem ma-
tricea A a sistemului şi transpusa sa, pe care o ı̂nmulţim cu vectorul coloană al
variabilelor duale
 
! 1 2
1 1 1
A= At = 1 −1
 
2 −1 3
1 3
   
1 2 ! y1 + 2y2
 y1
At · y = 1 −1 =  y1 − y 2 
  
y2
1 3 y1 + 3y2
Sistemul de inecuaţii este At ·y ≤ c, unde c este vectorul coeficienţilor din funcţia
de scop, adică (2, 3, 1), deci obţinem

 y1 + 2y2 ≤ 2

y1 − y 2 ≤ 3

 y + 3y ≤ 1
1 2

Variabilele y1 şi y2 nu sunt supuse condiţiei de nenegativitate, deoarece corespund


unor ecuaţii din restricţiile primale.
Pentru a scrie funcţia de scop g folosim vectorul b, adică termenii liberi din
restricţiile problemei primale şi minimizarea se transformă ı̂n maximizare, deci
avem
max g = 5y1 + 7y2 .
În concluzie, problema duală a problemei primale este

 y1 + 2y2 ≤ 2

max g = 5y1 + 7y2 cu restricţiile y1 − y 2 ≤ 3

 y + 3y ≤ 1
1 2
1.1. Probleme rezolvate 21

Rezolvăm această problemă şi vom obţine şi soluţia problemei primale. Intro-
ducem variabilele de compensare ε1 , ε2 şi ε3 şi avem

 y1 + 2y2 + ε1 = 2

y1 − y 2 + ε 2 = 3 ε1 , ε2 , ε3 ≥ 0

 y + 3y + ε = 1
1 2 3

cj 5 7 0 0 0
CB B b v1 v2 ε1 ε2 ε3 Θ
0 ε1 2 1 2 1 0 0 1
0 ε2 3 1 −1 0 1 0
0 ε3 1 1 3 0 0 1 2/3∗
fj 0 0 0 0 0
∆j 5 7∗ 0 0 0
0 ε1 4/3 1/3 0 1 0 −2/3 4
0 ε2 10/3 4/3 0 0 1 1/3 5/2
7 v2 1/3 1/3 1 0 00 1/3 1∗
fj 7/3 7 0 0 7/3
∆j 8/3∗ 0 0 0 −7/3
0 ε1 1 0 −1 1 0 −1
0 ε2 2 0 −4 0 1 −1
5 v1 1 1 3 0 0 1
fj 5 15 0 0 5
∆j 0 −8 0 0 −5

Soluţia problemei duale este y1 = 1 şi y2 = 0, gmax = 5. Din linia fj a ultimului


tabel simplex, sub coloanele vectorilor unitari ε1 , ε2 şi ε3 se citesc valorile optime
ale variabilelor primale

x1 = 0, x2 = 0, x3 = 5 şi fmin = 5.
! !
4 1 4 2
b) Matricea A este , deci transpusa este .
2 3 1 3
Coloana termenilor liberi a problemei duale este vectorul c de la funcţia de scop
f , scris transpus. Sistemul de restricţii este
(
4y1 + 2y2 ≤ 2
y1 , y2 ≥ 0.
y1 + 3y2 ≤ 1
22 1. PROGRAMARE LINIARĂ

Variabilele duale y1 şi y2 sunt supuse condiţiilor de nenegativitate, deoarece


corespund unor restricţii primale cu inecuaţii.
Pentru funcţia de scop g a problemei duale, coeficienţii sunt termeni liberi din
restricţiile din problema primală

max g = 4y1 + 6y2 .

Aplicăm problemei duale metoda simplex, deci introducem variabilele de com-


pensare ε1 şi ε2 pentru a transforma inecuaţiile ı̂n ecuaţii
(
4y1 + 2y2 + ε1 = 2
y1 , y2 , ε1 , ε2 ≥ 0.
y1 + 3y2 + ε2 = 1

cj 4 6 0 0
CB B b v1 v2 ε1 ε2 Θ
0 ε1 2 4 2 1 0 1
0 ε2 1 1 3 0 1 1/3∗
fj 0 0 0 0
∆j 4 6∗ 0 0
0 ε1 4/3 10/3 0 1 −2/3 2/5∗
6 v2 1/3 1/3 1 0 1/3 1
fj 2 6 0 2
∆j 2∗ 0 0 −2
4 v1 2/5 1 0 3/10 −1/5
6 v2 1/5 0 1 −1/10 2/5
fj 4 6 3/5 8/5
∆j 0 0 −3/5 −8/5

2 1 14
Soluţia optimă a problemei duale este y1 = şi y2 = , iar gmax = . Din
5 5 5
ultima linie fj a tabelului simplex, sub coloanele corespunzătoare vectorilor bazei
canonice ε1 şi ε2 , se citesc valorile optime ale variabilelor din problema primală,
3 8 14
deci x1 = , x2 = şi, evident, fmin = . Variabilele de compensare sunt nule,
5 5 5
atât ı̂n problema duală cât şi ı̂n cea primală. Întotdeauna valorile funcţiilor de
scop din problema duală şi problema primală sunt egale.

7 Să se rezolve problemele de programare liniară şi apoi să se reoptimizeze pen-
tru cazurile specificate:
1.1. Probleme rezolvate 23

a) max f = 3x1 + x2 + x3 + 2x4



 x1 + x4 ≤ 6

2x2 − x3 + 3x4 ≤ 12 x1 , x2 , x3 , x4 ≥ 0.

 x + 4x ≤ 8
1 3

Vectorul c se modifică ı̂n c∗ = 


(−5,8, −16, 5).
24
Vectorul b se modifică ı̂n b∗ = 60.
 
8
b) max f = 3x1 + x2 + 2x3 + 4x4

 x1 + 2x2 + 5x3 + x4 ≤ 10

2x1 + x2 + 2x4 ≤ 15 x1 , x2 , x3 , x4 ≥ 0.

 2x + 2x + x ≤ 8
1 3 4

Vectorul c se modifică ı̂n c∗ = 


(5, 3,4, 2).
12

Vectorul b se modifică ı̂n b = 16.
 
8

Soluţie:
a) Reoptimizările au ca scop determinarea soluţiei optime a unei probleme
de programare liniară, care se obţine dintr-o altă problemă prin modificarea
unor date, cum ar fi vectorul c sau vectorul b. Rezolvarea noii probleme se
face pornind de la ultimul pas din tabelul simplex al problemei iniţiale, deci nu
se rezolvă noua problemă de la ı̂nceput. Modificarea vectorului c are influenţă
asupra liniilor fj şi ∆j din tabelul de optim al problemei iniţiale. Reoptimizarea
se face scriind noile valori c∗ deasupra tabelului şi recalculând valorile fj∗ şi ∆∗j .
Dacă toate valorile ∆∗j satisfac criteriul de optimalitate, atunci soluţia optimă a
problemei iniţiale este soluţia optimă şi pentru problema modificată. Dacă nu,
se aplică ı̂n continuare metoda simplex obişnuită până la ı̂ndeplinirea criteriului
de optimalitate, calculele făcându-se cu c∗j de deasupra tabelului şi c∗B din stânga
tabelului.
Dacă se modifică vectorul b, se influenţează elementele cuprinse ı̂n coloana b
din tabelul de optim al problemei iniţiale. Se calculează B −1 · b∗ , unde b∗ este
vectorul modificat, iar B −1 este matricea inversă a matricei de bază din tabelul
de optim şi se poate citi la pasul final sub coloanele vectorilor bazei canonice din
pasul iniţial. Dacă B −1 · b∗ ≥ 0, atunci soluţia optimă a problemei modificate
24 1. PROGRAMARE LINIARĂ

este aceeaşi cu cea de la problema iniţială, deoarece prin modificarea vectorului b


linia ∆j nu s-a schimbat. Dacă B −1 · b∗ conţine şi elemente negative, se aplică ı̂n
continuare algoritmul simplex ı̂nmulţind cu −1 liniile ce corespund elementelor
negative, soluţia devenind admisibilă.
Rezolvăm problema iniţială, introducând variabilele de compensare şi aplicând
algoritmul simplex.

c∗j −5 8 −16 5 0 0 0
cj 3 1 1 2 0 0 0
CB B b v1 v2 v3 v4 ε1 ε2 ε3 Θ
0 ε1 6 1 0 0 1 1 0 0 6∗
0 ε2 12 0 2 −1 3 0 1 0
0 ε3 8 1 0 4 0 0 0 1 8
fj 0 0 0 0 0 0 0
∆j 3∗ 1 1 2 0 0 0
3 v1 6 1 0 0 1 1 0 0
0 ε2 12 0 2 −1 3 0 1 0
0 ε3 2 0 0 4 −1 −1 0 1
fj 3 0 0 3 3 0 0
∆j 0 1∗ 1 −1 −3 0 0
3 v1 6 1 0 0 1 1 0 0
1 v2 6 0 1 −1/2 3/2 0 1/2 0
0 ε3 2 0 0 4 −1 −1 0 1
fj 3 1 −1/2 9/2 3 1/2 0
CB∗
∆j 0 0 3/2∗ −5/2 −3 −1/2 0
−5 3 v1 6 1 0 0 1 1 0 0
8 1 v2 25/4 0 1 0 11/8 −1/8 1/2 1/8 50 (∗)
−16 1 v3 1/2 0 0 1 −1/4 −1/4 0 1/4 2 ∗

fj 3 1 1 33/8 21/8 1/2 3/8


∆j 0 0 0 −17/8 −21/8 −1/2 −3/8
fj∗ −5 8 −16 10 −2 4 −3
∆∗j 0 0 0 −10 2 −4 3∗
−5 v1 6 1 0 0 1 1 0 0
8 v2 6 0 1 −1/2 3/2 0 1/2 0
0 ε3 2 0 0 4 −1 −1 0 1
fj∗ −5 8 −4 7 −5 4 0
∆∗j 0 0 −12 −2 5∗ −4 0
0 ε1 6 1 0 0 1 1 0 0
8 v2 6 0 1 −1/2 3/2 0 1/2 0 (∗∗)
0 ε3 8 1 0 4 0 0 0 1
∆∗j −5 0 −12 −7 0 −4 0

Soluţia optimă a problemei iniţiale se citeşte din tabelul (∗) şi avem x1 = 6,
1.1. Probleme rezolvate 25

25 99
x2 = , x4 = 0, fmax = .
4 4
Din tabelul (∗∗) se citeşte soluţia optimă pentru problema modificată x∗1 = 0,
x∗2 = 6, x∗3 = x∗4 = 0, ε1 = 6, ε2 = 0, ε3 = 8, fmax∗ = 48.
Pentru reoptimizarea problemei ı̂n cazul modificării vectorului b, calculăm
B −1 · b∗ , unde B −1 se citeşte ı̂n tabelul (*) sub vectorii ε1 , ε2 şi ε3 .

    
1 0 0 24 24
B −1 · b∗ = −1/8 1/2 1/8 60 =  28 
    
−1/4 0 1/4 8 −4

Aceste elemente se scriu pe coloana b.


Pe poziţia a treia avem componentă negativă şi ı̂nmulţim ı̂n tabelul (∗) linia
a treia cu −1, apoi continuăm simplexul.

cj 3 1 1 2 0 0 0
CB B b v1 v2 v3 v4 ε1 ε2 ε3 Θ
3 v1 24 1 0 0 1 1 0 0 24
1 v2 28 0 1 0 11/8 −1/8 1/2 1/8 224/11
1 v3 4 0 0 −1 1/4 1/4 0 −1/4 8
fj 3 1 1 33/8 21/8 1/2 3/8
∆j 0 0 0 17/8∗ −21/8 −1/2 −3/8
3 v1 8 1 0 4 0 0 0 1
1 v2 6 0 1 11/2 0 −3/2 1/2 3/2
2 v4 16 0 0 −4 1 1 0 −1
fj 3 1 19/2 2 1/2 1/2 5/2
∆j 0 0 −17/2 0 −1/2 −1/2 −5/2

Soluţia optimă a problemei modificate este x∗1 = 8, x∗2 = 6, x∗3 = 0, x∗4 = 16,

fmax = 62.

b) Rezolvăm problema iniţială, iar apoi ı̂n tabelul simplex ce conţine soluţia
optimă, recalculăm fj∗ şi ∆∗j cu noul vector c∗ .
26 1. PROGRAMARE LINIARĂ

c∗j 5 3 4 2 0 0 0
cj 3 1 2 4 0 0 0
CB B b v1 v2 v3 v4 ε1 ε2 ε3 Θ
0 ε1 10 1 2 5 1 1 0 0 10
0 ε2 15 2 1 0 2 0 1 0 15/2∗
0 ε3 8 2 0 2 1 0 0 1 8
fj 0 0 0 0 0 0 0
∆j 3 1 2 4∗ 0 0 0
0 ε1 5/2 0 3/2 5 0 1 −1/2 0 1/2
4 v4 15/2 1 1/2 0 1 0 1/2 0
0 ε3 1/2 1 −1/2 2 0 0 −1/2 1 1/4∗
fj 4 2 0 4 0 2 0
∆j −1 −1 2∗ 0 0 −2 0
0 ε1 5/4 −5/2 11/4 0 0 1 3/4 −5/2 5/11
4 v4 15/2 1 1/2 0 1 0 1/2 0 15(∗)
2 v3 1/4 1/2 −1/4 1 0 0 −1/4 1/2
fj 5 3/2 2 4 0 3/2 1
∆j −2 −1/2 0 0 0 −3/2 −1
fj∗ 4 0 4 2 0 0 2
∆∗j 1 3∗ 0 0 0 0 −2
3 v2 5/11 −10/11 1 0 0 4/11 3/11 −10/11
2 v4 80/11 16/11 0 0 1 −2/11 4/11 5/11 5
4 v3 4/11 3/11 0 1 0 1/11 −2/11 3/11 4/3∗
fj∗ 14/11 3 4 2 12/11 9/11 −8/11
∆∗j 41/11∗ 0 0 0 −12/11 −9/11 8/11
3 v2 5/3 0 1 10/3 0 2/3 −1/3 0
2 v4 16/3 0 0 −16/3 1 −2/3 4/3 −1
5 v1 4/3 1 0 11/3 0 1/3 −2/3 1
fj∗ 5 3 57/3 2 7/3 −5/3 3
∆∗j 0 0 15 0 −7/3 5/3∗ −3

Cj∗ 5 3 4 2 0 0 0

CB B b v1 v2 v3 v4 ε1 ε2 ε3 Θ
3 v2 3 0 1 2 1/4 1/2 0 −1/4
0 ε2 4 0 0 −4 3/4 −1/2 1 −3/4
5 v1 4 1 0 1 1/2 0 0 1/2
fj∗ 5 3 11 13/4 3/2 0 7/4
∆∗j 0 0 -7 −5/4 −3/2 0 −7/4

Soluţia optimă a problemei iniţiale este

1 15 61
x1 = x2 = 0, x3 = , x4 = , fmax = .
4 2 2
1.2. Probleme propuse 27

Soluţia optimă a problemei modificate cu c∗ este

x∗2 = 3, x∗1 = 4, x∗3 = x∗4 = 0, ∗


fmax = 29.

Pentru reoptimizarea cu b∗ , citim B −1 ı̂n tabelul (∗), pe coloanele ε1 , ε2 şi


ε3 care au fost iniţial ı̂n bază.
    
1 3/4 −5/2 12 4
−1 ∗
B · b = 0 1/2 0  16 = 8 .
    
0 −1/4 1/2 8 0

Deoarece toate componentele soluţiei noi sunt nenegative, soluţia este admisibilă
şi optimă.

1.2 Probleme propuse


1 Să se scrie modelele matematice ataşate următoarelor probleme de optimizare
cu formulă economică:
a) La o secţie a unei intreprinderi metalurgice se fabrică trei feluri de produse
P1 , P2 şi P3 , folosind trei feluri de materii prime A1 , A2 şi A3 . Coeficienţii
tehnologici, disponibilul de materie primă şi beneficiile nete aduse de o unitate
de produs sunt date ı̂n tabelul următor:

Să se determine cantitatea de produse ce trebuie fabricată ı̂n aceste condiţii, astfel
ı̂ncât beneficiul total să fie maxim.
b) Un animal trebuie să consume zilnic cel puţin 0, 4 kg din substanţa nu-
tritivă A; 0, 6 kg din substanţa nutritivă B; 0, 8 kg din substanţa C şi 1, 7 kg
din substanţa D, care sunt conţinute ı̂n alimentele M şi N cu care este hrănit.
Ştiind că alimentul M conţine la kilogram 0, 1 kg din substanţa A; 0, 1 kg din C
şi 0, 2 kg din D, iar alimentul N conţine la kilogram 0, 1 kg din B; 0, 2 kg din C
28 Programare liniară

şi 0, 1 kg din D şi ştiind că preţul de cost al alimentului M este 1000 lei/kg, iar
cel al alimentului N 4000 lei/kg, să se stabilească cantităţile optime din M şi N
care ar trebui folosite zilnic, astfel ı̂ncât costul hranei animalului să fie minim.
c) Trei alimente A1 , A2 şi A3 conţin două substanţe nutritive S1 , S2 . Repar-
tizarea substanţelor nutritive şi costurile unitare ale acestora sunt date ı̂n tabelul
următor:

Să se determine raţia alimentară, astfel ı̂ncât să se asigure cel puţin 6 unităţi
din substanţa S1 şi cel puţin 5 unităţi din substanţa S2 şi costul total al raţiei să
fie minim.
d) Cultivarea a patru plante Pi (i = 1, 4) necesită trei operaţii succesive.
Primele două operaţii se efectuează de către echipele I şi II ale unităţii agri-
cole, iar operaţia a treia ı̂n felul următor: pentru plantele P1 şi P2 lucrează
echipa a III-a, pentru plantele P3 şi P4 lucrează echipa a IV -a. Timpul de lucru
ı̂n om-ore pe ha necesar fiecărei echipe pentru efectuarea operaţiei ce-i revine,
timpul disponibil fiecărei echipe şi beneficiul realizat după producţia pe ha sunt
cuprinse ı̂n tabelul următor:

Se cere organizarea producţiei astfel ı̂ncât beneficiul total realizat să fie maxim.
Probleme propuse 29

2 Să se rezolve următoarele probleme de programare liniară date prin mo- delele
matematice:
a) max f = x2 + 2x2 + x3
(
5x1 + 4x3 = 5
x4 , x2 , x3 ≥ 0
2x1 + x2 + 2x3 = 3

b) max f = 3x1 + 4x2 + 6x3


(
x1 + 2x2 + x3 = 3
x1 , x2 , x3 ≥ 0
x2 + 4x3 = 2

c) max f = x1 + x2 + 2x3
(
2x1 + 3x3 = 5
x1 , x2 , x3 ≥ 0
x1 + x2 + 2x3 = 3

d) max f = 3x1 + 4x2 + x3


(
x1 + 2x2 + x3 ≤ 5
x1 , x2 , x3 ≥ 0
2x1 − x2 + x3 ≤ 2

e) max f = 6x1 + 2x2 + 2x3 + 4x4


(
x1 + 2x2 + 3x3 + 4x4 ≤ 7
x1 , x2 , x3 , x4 ≥ 0
2x1 + x2 + x3 + 2x4 ≤ 3

f ) min f = 2x1 − x2 + x3
(
x1 + 2x2 ≥ 10
x1 , x2 , x3 ≥ 0
x1 + 3x2 + x3 = 6

g) max f = 3x1 + 2x2 + 4x3 + 5x4



 3x1 + 2x2 + x3 + 4x4 ≤ 5

x2 + 2x4 ≤ 1 x1 , x2 , x3 , x4 ≥ 0

 x + x + 2x + x ≤ 3
1 2 3 4

h) min f = 2x1 + x2 + x3

 5x1 + x2 − 5x3 = 1

4x1 + x2 − x3 ≥ 4 x1 , x2 , x3 ≥ 0

 x −x +x ≥2
1 2 3
30 Programare liniară

i) min f = 5x1 + 6x2 − x3


(
x1 + x2 + 3x3 ≥ 6
x1 , x2 , x3 ≥ 0
2x1 − x2 + x3 ≥ 4

3 Să se scrie dualele problemelor la punctele g), h) şi i) din problema de mai
sus şi să se citească soluţiile problemelor duale şi primale.

4 Să se rezolve următoarele probleme şi să se reoptimizeze pentru cazurile spec-
ificate:
a) max f = 3x1 + 2x2 + 4x3 + 5x4


 3x1 + 2x2 + x3 + 4x4 ≤ 5

 x + 2x + x ≤ 2
1 2 4
c 7→ c∗ = (1, 3, 5, 2)
 x1 + x2 + x3 + 2x4 ≤ 3


x1 , x2 , x3 , x4 ≥ 0

b) max f = 3x1 + 4x2 + 6x3



 x1 + 2x2 + x3 ≤ 3
 !
2
x1 + x2 + 4x3 ≤ 2 b 7→ b∗ =

 x ,x ,x ≥ 0 8
1 2 3

c) max f = 5x1 + 7x2 + 4x3



 2x1 + 4x2 + x3 ≤ 10

3x1 + x2 + 3x3 ≤ 20 c 7→ c∗ = (6, 7, 4)

 x ,x ,x ≥ 0
1 2 3

d) max f = 6x1 + 7x2 + x3



 2x1 + x2 + 3x3 ≤ 13

x1 − x2 + x3 = 7 c 7→ c∗ = (5, 2, 1)

 x ,x ,x ≥ 0
1 2 3

e) max f = 2x1 + 3x2 + 5x3



 x1 + 2x2 + x3 ≤ 50
 !
∗ 60
2x1 + x2 + 3x3 ≤ 60 b 7→ b =

 x ,x ,x ≥ 0 50
1 2 3
Probleme propuse 31

f ) max f = 2x1 + 3x2 + 4x3 + 3x4




 x1 + x2 + 2x3 + x4 ≤ 3

 3x + 2x + x + 4x ≤ 5
1 2 3 4
c 7→ c∗ = (4, 3, 0, 1)

 x2 + 2x 4 ≤ 1

x1 , x2 , x3 , x4 ≥ 0

g) max f = x1 + 2x2 + x3

 5x1 + 4x3 = 5

2x1 + x2 + 3x3 = 3 c 7→ c∗ = (3, 4, 5)

 x ,x ,x ≥ 0
1 2 3
CAPITOLUL 2

Probleme de transport

2.1 Probleme rezolvate


1 Producţia a trei mine M1 , M2 şi M3 trebuie livrată la trei consumatori C1 ,
C2 şi C3 . Cunoscând cheltuielile de transport pe unitate marfă de la M1 la D1 ,
15 mii lei/t; de la M1 la D2 , 12 mii lei/t; de la M1 la D3 , 18 mii lei/t; de la
M2 la D1 , 10 mii lei/t; de la M2 la D2 , 14 mii lei/t; de la M2 la D3 , 10 mii
lei/t; de la M3 la D1 , 11 mii lei/t; de la M3 la D2 , 9 mii lei/t; de la M3 la D3 ,
10 mii lei/t, se cere să se stabilească un program de livrare a mărfii, astfel ı̂ncât
cheltuielile totale de transport să fie minime. Se ştie că producţia minei M1 este
700 t, a minei M2 este 450 t şi a minei M3 este 600 t, iar la consumatorul C1
trebuie să ajungă necesarul de 600 t, la C2 , 500 t şi la C3 , 650 t, raportat la
aceeaşi perioadă de timp. Să se scrie modelul matematic al problemei.

Soluţie:
Notăm cu xij (i = 1, 3; j = 1, 3) cantitatea ce trebuie transportată de la mina
Mi (i = 1, 3) la consumatorul Cj (j = 1, 3), iar de la fiecare mină se ia ı̂ntreaga
cantitate de marfă disponibilă şi la fiecare consumator se duce ı̂ntreaga cantitate
de marfă necesară. Se cere

min f = 15x11 + 12x12 + 18x13 + 10x21 + 14x22 + 10x23


+ 11x31 + 9x32 + 10x33 ; i = 1, 3, j = 1, 3.

32
Probleme rezolvate 33

Condiţiile ce trebuie ı̂ndeplinite sunt:




 x11 + x12 + x13 = 700
x21 + x22 + x23 = 450





 x +x +x
31 32 33 = 600

 x 11 + x21 + x31 = 600

x12 + x22 + x32 = 500




x13 + x23 + x33 = 650

2 Două fabrici de ciment F1 şi F2 livrează marfă la patru şantiere de construcţie


S1 , S2 , S3 şi S4 . Costurile de transport pe unitate marfă, necesarul şi disponibilul
sunt cuprinse ı̂n tabelul de mai jos:

Să se verifice dacă problema este echilibrată şi să se scrie modelul matematic
corespunzător acestei probleme de transport.

Soluţie:
Problema este echilibrată dacă suma disponibilului este egală cu suma nece-
sarului. Verificând, reiese că problema este echilibrată, suma fiind 250.
Trebuie determinat minimul funcţiei

min f = 2x11 + 5x12 + x13 + 3x14 + x21 + 3x22 + 2x23 + 4x24




 x11 + x12 + x13 + x14 = 100
x 21 + x22 + x23 + x24 = 150





 x + x = 50
11 21

 x 12 + x22 = 75

x13 + x23 = 65




x14 + x24 = 60

3 Există probleme economice al căror model matematic coincide cu modelul


matematic al unei probleme de transport, ı̂nsă se cere maximizarea funcţiei de
scop.
34 Probleme de transport

De exemplu, ı̂ntr-o intreprindere se găsesc două maşini care produc inde-


pendent trei tipuri de piese. Cunoscând capacitatea de producţie a maşinii M1 ,
adică numărul de piese de orice tip ce se pot fabrica pe această maşină, de 80
de piese şi a maşinii M2 de 120 piese, precum şi numărul pieselor de tipul P1 ,
P2 şi P3 planificate a fi fabricate pe schimb, respectiv de 50, 90 şi 60 de piese
şi beneficiile realizate pentru o piesă de tipul Pj (j = 1, 3) fabricată de maşina
Mi (i = 1, 2) fiind de respectiv 5, 3, 4, 2, 1, 3 lei, se cere organizarea procesului de
producţie pe schimb, astfel ı̂ncât beneficiul total realizat să fie maxim. Să se scrie
modelul matematic.

Soluţie:
Soluţia unei asemenea probleme economice se obţine procedând ca ı̂n cazul
unei probleme standard de transport, iar modelul matematic este asemănător.
Notând cu xij numărul pieselor de tipul Pj (j = 1, 3) ce trebuie fabricate de
maşina Mi (i = 1, 2) se cere

max f = 5x11 + 3x12 + 4x13 + 2x21 + x22 + 3x23

cu condiţiile


 x11 + x12 + x13 = 80

 x21 + x22 + x23 = 120


x11 + x21 = 50




 x12 + x22 = 90
x13 + x23 = 60

Tabelul corespunzător problemei este

4 Fie problema de transport dată prin tabelul de mai jos. Să se determine o
soluţie iniţială de bază cu metoda N-V, metoda minim pe linie şi metoda minim
ı̂n tabel.
Probleme rezolvate 35

Soluţie:
a) Stabilim o soluţie iniţială folosind metoda N-V. Avem x11 = min(100, 50) =
50, atunci x21 = 0 şi x31 = 0 şi scădem pe prima linie 100 − 50 = 50. Apoi x12 =
min(50, 100) = 50, deci x13 = 0, x14 = 0 şi scădem a doua coloană 100 − 50 = 50.
Mai departe x22 = min(150, 50) = 50, deci x32 = 0 şi scădem pe linia a doua
150 − 50 = 100. Continuăm cu x23 = min(100, 100) = 100, deci x24 = 0 şi
scădem pe coloana a treia 200 − 100 = 100. Apoi x33 = min(250, 100) = 100,
scădem pe linia a treia 250 − 100 = 150 şi atribuim x34 = 150. Determinarea
soluţiei ı̂n tabel se realizează micşorându-se disponibilul şi necesarul respectiv la
fiecare pas, marcând acest fapt prin tăiere. În tabel avem:

Pentru a distinge căsuţele care sunt ı̂n soluţie (adică cele care au cantităţi
nenule) se haşurează, iar numărul lor este m + n − 1 = 4 + 3 − 1 = 6. Costul
transportului pentru această soluţie este fmin = 1950.
b) Folosind metoda ”minim pe linie” alegem costul minim de pe prima linie
şi atribuim x14 = min(100, 150) = 100, completăm x11 = x12 = x13 = 0 şi
scădem pe a patra coloană 150 − 100 = 50. Pe a doua linie avem costul minim ı̂n
36 Probleme de transport

căsuţa (2, 2), deci x22 = min(150, 100) = 100, completăm x32 = 0 şi scădem pe
linia a doua 150 − 100 = 50. Linia a doua nu s-a completat, atribuim x21 = 50
şi completăm x23 = x24 = x31 = 0. Pe linia a treia costul minim este 3, deci
x34 = min(250, 50) = 50 şi scădem 250 − 50 = 200, iar x33 = 200. Soluţia astfel
obţinută nu e admisibilă deoarece nu are m + n − 1 = 4 + 3 − 1 = 6 căsuţe nenule,
ci doar 5. În tabel avem:

c) Aplicăm metoda ”minim ı̂n tabel” şi alegem căsuţa având costul minim din
ı̂ntreg tabelul, deci atribuim x22 = min(150, 100) = 100, completăm x12 = x32 =
0 şi scădem pe linia a doua 150 − 100 = 50. Următorul cost minim este 2 şi
atribuim x31 = min(250, 50) = 50, apoi x11 = x21 = 0 şi scădem pe linia a treia
250 − 50 = 200. Acum costul minim este 2, deci x14 = min(100, 150) = 100,
x13 = 0 şi scădem pe coloana a patra 150 − 100 = 50. Următoarea căsuţă
necompletată cu cost minim este (3, 4), deci x34 = min(250, 50) = 50, x24 = 0
şi scădem 200 − 50 = 150. Apoi x33 = min(150, 200) = 150 şi 200 − 150 = 50.
Ultima căsuţă este x23 = 50.

În tabel scriem ı̂n felul următor:


Probleme rezolvate 37

Soluţia este admisibilă având m + n − 1 = 6 căsuţe nenule (haşurate).


Costul transportului pentru această soluţie este fmin = 1400 şi observăm că este
o soluţie mai bună decât cea obţinută cu metoda N-V.

5 Trei şantiere forestiere expediază lemnul la patru fabrici de mobilă. Necesarul,


disponibilul şi costurile unitare de transport sunt trecute ı̂n tabelul de mai jos.
Să se determine soluţia optimă a acestei probleme de transport (cantităţile de
marfă xij transportată de la Fi la Mj astfel ı̂ncât costul total să fie minim).

Soluţie:
Problema de transport este echilibrată, deoarece suma necesarului este egală
cu suma disponibilului, ea fiind 150.
Alegem o soluţie iniţială de bază cu metoda N-V.
38 Probleme de transport

Pentru a verifica optimalitatea acestei soluţii aplicăm algoritmul distributiv.


Fiecăruia din costurile cij corespunzătoare valorilor xij > 0 din soluţia admis-
ibilă de bază, i se asociază câte o pereche (ui , vj ) astfel ı̂ncât ui + vj = cij .
Deoarece obţinem un sistem de m + n − 1 ecuaţii cu m + n necunoscute şi dorim
determinarea unei soluţii unice, atribuim uneia din necunoscute o valoare arbi-
trară, de exemplu u1 = 0 şi rezolvăm apoi sistemul. Cu ajutorul soluţiei astfel
obţinute, se calculează costurile c′ij corespunzătoare valorilor xij = 0 din soluţia
de bază, astfel ı̂ncât c′ij = ui + vj . Aceste calcule se pot efectua sistematizat
ı̂ntr-un tabel ı̂n care haşurăm căsuţele din soluţia iniţială de bază, cu ajutorul
lor determinând ui şi vj apoi completând celelalte căsuţe şi calculăm c′ij ı̂n colţul
de jos. Punem u1 = 0 şi avem


 u 1 + v1 = 4 ⇒ v1 = 4
 u 1 + v2 = 2 ⇒ v2 = 2



u 2 + v2 = 3 ⇒ u 2 = 1




 u 2 + v3 = 4 ⇒ v3 = 3
u 3 + v3 = 3 ⇒ u 3 = 0

Probleme rezolvate 39

Verificarea optimalităţii se face comparând cij şi c′ij . Dacă cij > c′ij pentru
căsuţele ı̂n care xij = 0 şi cij = c′ij , pentru cele ı̂n care xij > 0, atunci soluţia
este optimă şi unică. Dacă cij = c′ij ı̂n căsuţe ı̂n care xij = 0, atunci problema
admite mai multe soluţii optime ce conduc la aceeaşi valoare minimă a funcţiei
de scop. Dacă pentru unele căsuţe ı̂n care xij = 0 avem cij < c′ij soluţia nu
este optimă şi poate fi ı̂mbunătăţită. În concluzie, calculăm toate diferenţele
sij = cij − c′ij (colţul de sus al căsuţei minus colţul de jos), le scriem ı̂n centrul
fiecărei căsuţe şi analizăm semnul lor. Pentru ı̂mbunătăţire alegem diferenţele
sij negative, iar cea mai mică dintre ele, adică si0 j0 = min sij ne arată căsuţa din
i,j
care se porneşte un ciclu, care trece numai prin elementele xij nenule. În căsuţa
iniţială adunăm numărul t, apoi scădem şi adunăm alternativ acest număr la
componentele soluţiei iniţiale care sunt ı̂n ciclu. Pentru t se ia ca valoare minimul
componentei xij din expresiile xij − t, acestea fiind valoarea maximă ce poate fi
dată lui t astfel ca xij − t ≥ 0. Se obţine o nouă soluţie care se va verifica dacă
este optimă şi eventual se va ı̂mbunătăţi. După un număr finit de paşi (iteraţii
succesive) se ajunge la soluţia optimă.

(
60 − t ≥ 0
⇒ t = 10
10 − t ≥ 0

Noua soluţie este:


40 Probleme de transport

Verificăm optimalitatea acestei soluţii. Punem u1 = 0 şi avem u1 + v1 = 4 ⇒


v1 = 4.

u 1 + v2 = 2 ⇒ v2 = 2
u 2 + v1 = 2 ⇒ u2 = −2
u 2 + v3 = 4 ⇒ v3 = 6
u 3 + v3 = 3 ⇒ u3 = −3
(
50 − t ≥ 0
15 − 7 ≥ 0 ⇒ t = 15

Din căsuţa (1, 3) cu diferenţă negativă se porneşte ciclul (1, 1), (2, 1), (2, 3) şi
redistribuim cantităţile scăzând şi adunând alternativ t = 15. Noua soluţie este:
Probleme rezolvate 41

Verificăm optimalitatea noii soluţii după aceeaşi metodă:


 35 − t ≥ 0

5−t≥0

 ⇒ t = 5.

Soluţia este optimă, dar nu este unică deoarece ı̂n căsuţa nehaşurată (3, 1) avem
s31 = 0. Din această căsuţă pornim un ciclu pentru a obţine şi altă soluţie
optimă.
42 Probleme de transport

Pot exista mai multe soluţii optime. Valorile componentelor soluţiei optime se
citesc din căsuţele haşurate.
6 Alcătuiţi tabelul corespunzător unei probleme de transport care să sistem-
atizeze distribuţia mărfii de la trei depozite D1 , D2 , D3 la trei consumatori
C1 , C2 , C3 , cunoscând disponibilele 13, 26, 9, necesarele 16, 15, 17 şi costurile de
transport pe unitate marfă de la Di la Cj (i = 1, 3, j = 1, 3) fiind de 8, 4, 2, 6, 3, 1, 10, 7, 5.
Optimizaţi acestă problemă.
Soluţie:
Datele problemei se pot ı̂nscrie ı̂n tabelul:

Problema este echilibrată, suma necesarelor fiind egală cu suma disponibilelor,


adică 48.
Determinăm ı̂n tabel o soluţie iniţială de bază cu metoda ”minim ı̂n tabel”,
pornind din căsuţa (2, 3) cu costul minim 1.
Atribuim x23 = min(26, 17) = 17 şi x13 = x33 = 0, apoi x22 = min(9, 15) = 9,
x21 = 0, x12 = min(13, 6) = 6, x32 = 0, x11 = min(7, 16) = 7, x31 = 9. Pentru
această soluţie valoarea funcţiei de scop este f = 8·7+4·6+3·9+1·17+10·9 = 214.
Verificăm optimalitatea soluţiei, folosind pentru calculul valorilor ui şi vj
doar căsuţele haşurate, punem u1 = 0 şi
u 1 + v1 = 8 ⇒ v1 = 8
u 1 + v2 = 4 ⇒ v2 = 4
u 2 + v2 = 3 ⇒ u2 = −1
u 2 + v3 = 1 ⇒ v3 = 2
u 3 + v1 = 10 ⇒ u3 = 2.
Probleme rezolvate 43

Calculăm c′ij = ui + vj şi le scriem ı̂n colţul de jos, apoi facem diferenţele
cij − cij (colţul de sus minus colţul de jos). În căsuţele haşurate trebuie să fie
0, iar dintre diferenţele negative se alege cea mai mică. Din acea căsuţă pornim
ciclul care să treacă doar prin căsuţe haşurate, căsuţei ı̂i atribuim cantitatea t
care alternativ o scădem şi o adunăm ı̂n celelalte căsuţe ale ciclului. Cantităţile
fiind pozitive, valoarea lui t este 7. În tabel operăm astfel:


 7−t≥0

9−t≥0⇒

 ⇒t=7

Noua soluţie este

Valoarea funcţiei de scop este f = 4 · 13 + 6 · 7 + 3 · 2 + 1 · 17 + 10 · 9 = 207, mai


mică decât la soluţia iniţială. Verificăm optimalitatea acestei soluţii:


 u1 = 0
u 1 + v2 = 4 ⇒ v2 = 4





 u +v
2 2 = 3 ⇒ u2 = −1

 u 2 + v 1 = 6 ⇒ v1 = 7

u 2 + v3 = 1 ⇒ v3 = 2




u 3 + v1 = 10 ⇒ u3 = 3

44 Probleme de transport

)
13 − t ≥ 0
⇒ t = 13
17 − t ≥ 0

Soluţia este optimă, toate diferenţele cij − c′ij fiind pozitive sau zero, dar nu este
unică deoarece există diferenţe egale cu 0 ı̂n căsuţe nehaşurate.
Iniţiem un ciclu din căsuţa (1, 3) prin (1, 2), (2, 2), (2, 3), atribuim cantitatea t
ı̂n această căsuţă şi scădem - adunăm alternativ t ı̂n celelalte. Noua soluţie este
optimă, valoarea minimă a funcţiei f fiind tot 207.

Se mai pot obţine şi alte soluţii optime, pornind de la celelalte căsuţe nehaşurate
având 0 la verificarea criteriului optim.
Probleme rezolvate 45

7 Să se scrie modelul matematic ataşat şi să se rezolve următoarea problemă
de transport, soluţia iniţială găsindu-se cu metoda ”minim ı̂n tabel”.

Soluţie:
Notăm cu xij cantitatea de marfă ce trebuie transportată de la Ci la Dj
(i = 1, 2, j = 1, 3). Modelul matematic ataşat este

min f = 7x11 + 2x12 + x13 + 3x21 + 4x22 + 2x23




 x11 + x12 + x13 = 14

 x21 + x22 + x23 = 16


cu condiţiile x11 + x21 = 5

 x12 + x22 = 12



x13 + x23 = 13.

Determinăm o soluţie iniţială de bază cu metoda ”minim ı̂n tabel”, deci alegem
căsuţele cu costul minim din ı̂ntreg tabelul atribuindu-le minimul dintre necesar
şi disponibil, până la completarea tuturor căsuţelor.
46 Probleme de transport

În soluţia iniţială de bază intră căsuţele cu cantităţi nenule (haşurate), soluţia
fiind admisibilă deoarece are m + n − 1 = 2 + 3 − 1 = 4 componente.
Verificăm optimalitatea soluţiei şi o ı̂mbunătăţim, alcătuind un ciclu de redis-
tribuire a cantităţilor, pornind din căsuţa ı̂n care diferenţa cij − cij este negativă
(se calculează colţul de sus minus colţul de jos).


 13 − t ≥ 0

11 − t ≥ 0

 ⇒ t = 11

Prin redistribuirea cantităţilor obţinem noua soluţie:

Observăm că valoarea funcţiei de scop a costului total de transport a scăzut,


deci noua soluţie este mai bună şi verificăm dacă este cea mai bună soluţie.
Probleme rezolvate 47

Toate diferenţele cij − c′ij sunt pozitive ı̂n căsuţele nehaşurate şi 0 ı̂n căsuţele
haşurate, deci soluţia este optimă şi unică, având componentele

x11 = 0, x12 = 12, x13 = 2, x21 = 5, x22 = 0 şi x23 = 11.

Valoarea minimă a costului total de transport este

fmin = 2 · 12 + 1 · 2 + 3 · 5 + 2 · 11 = 63.

8 Să se determine o soluţie iniţială de bază cu metoda N-V şi să se rezolve
problema de transport din tabelul următor:

Soluţie:
Problema este echilibrată, suma fiind 80. Aplicând metoda N-V atribuim căsuţei
de sus-stânga valoarea maximă dintre disponibil şi necesar, x11 = min(55, 24) =
24, x21 = 0 şi 55 − 24 = 31. Următoarea căsuţă sus-stânga necompletată este
(1, 2), deci x12 = min(31, 36) = 31, x13 = 0 şi 36 − 31 = 5. Apoi x22 =
min(25, 5) = 5, 25 − 5 = 20 şi x23 = 20. Pe tabel procedăm astfel:
48 Probleme de transport

Soluţia este admisibilă având m + n − 1 = 2 + 3 − 1 componente nenule, iar


f = 4 · 24 + 1 · 31 + 3 · 5 + 5 · 20 = 242. Aplicăm criteriul de optim, calculând
valorile marginale ui şi vj :


 u1 = 0
= 4 ⇒ v1

 1 + v1
u =4


u 1 + v2 = 1 ⇒ v2 =1




 u 2 + v2 = 3 ⇒ v2 =2
u 2 + v3 = 5 ⇒ v3 =3

Calculând c′ij şi făcând diferenţele cij − c′ij găsim două diferenţe negative, deci
soluţia nu este optimă. Pentru a o ı̂mbunătăţi, alegem cs̆uţa cu diferenţa negativă
cea mai mică (2, 1). De aici pornim ciclul (1, 1), (1, 2), (2, 2) şi redistribuim
cantitatea t, scăzând-o din x11 = 24, adunând-o la x12 = 31 şi scăzând-o din
x22 = 5. Impunând condiţiile de pozitivitate 24 − t ≥ 0 şi 5 − t ≥ 0 rezultă că
t = 5. Noua soluţie este:

Valoarea funcţiei de scop este f = 4 · 19 + 1 · 36 + 1 · 5 + 5 · 20 = 217, mai bună


decât prima.
Verificăm optimalitatea acestei soluţii:
Probleme rezolvate 49

(
19 − 7 ≥ 0
⇒ t = 19.
20 − t ≥ 0

După noua redistribuire a cantităţilor avem:

Funcţia de scop are valoarea f = 1 · 36 + 2 · 19 + 1 · 24 + 5 · 1 = 103, mai mică


decât precedenta, deci avem o soluţie mai bună.

(
36 − t ≥ 0
⇒ t = 1.
1−t≥0
50 Probleme de transport

În urma verificării optimalităţii, soluţia x12 = 35, x13 = 20, x21 = 24, x22 = 1
este optimă şi fmin = 102. Soluţia este unică.
9 Să se rezolve problema de transport dată prin tabelul de mai jos, care cuprinde
datele de la trei furnizori şi trei beneficiari.

Soluţie:
Stabilim o soluţie iniţială cu metoda ”minim ı̂n tabel”:
Probleme rezolvate 51

Soluţia astfel obţinută are patru componente nenule, iar m+n−1 = 3+3−1 = 5,
deci este degenerată. În acest caz verificarea optimalităţii cu ajutorul valorilor
marginale ui şi vj conduce la mai puţin de m+n −1 ecuaţii de tipul ui +vj = cij ,
neajuns care se ı̂nlătură considerând o anumită căsuţă liberă ca fiind ocupată cu
xij = 0, numită ”zero esenţial”. Alegerea acestui zero se face ı̂n căsuţa de cost
minim care nu formează cicluri cu căsuţele deja ocupate. Alegem zero esenţial
ı̂n căsuţa (1, 1) şi punem u1 = 0, obţinând v1 = 3, v2 = 2, v3 = 0, u2 = −2 şi
u3 = −3.

Din tabelul valorilor marginale se vede că soluţia este optimă, degenerată şi
unică. Pentru ea avem fmin = 2 · 3 + 1 · 20 = 26.

10 Considerăm patru depozite având capacităţile de depozitare cunoscute şi


trei fabrici având capacităţile de producţie cunoscute. Cunoscând cheltuielile de
producţie pe unitate de produs, să se determine cantităţile ce trebuie expediate,
astfel ı̂ncât costul să fie minim.

Soluţie:
Calculând sumele capacităţilor obţinem 31, respectiv 29, deci problema nu
este echilibrată. În acest caz se introduce o fabrică fictivă F4 ı̂n care avem
52 Probleme de transport

capacitatea de producţie 31 − 29 = 2, de la care costurile unitare de expediere


la fiecare depozit sunt 0. Alcătuim un nou tabel şi determinăm soluţia iniţială
de bază cu metoda ”minim ı̂n tabel”.

Această soluţie are 7 componente nenule, deci este nedegerată, iar costul este f =
66. Verificăm optimalitatea cu ajutorul valorilor marginale pe care le calculăm
ı̂n tabelul de mai jos:

Toate diferenţele cij − c′ij sunt negative sau zero, soluţia este optimă şi unică.
Dacă nu ar fi optimă, se aplică algoritmul distributiv. În mod analog s-ar proceda
dacă ar trebui introdus un depozit fictiv.

11 Să se rezolve problema de transport din  tabelulde mai jos şi să se reopti-
3 2
mizeze dacă matricea costurilor devine C ∗ = 4 2.
 
2 4
Probleme rezolvate 53

Soluţie:
Problema reoptimizării constă ı̂n aflarea soluţiei unei probleme, dacă s-au
modificat anumite condiţii ale problemei iniţiale, fără a aplica algoritmul dis-
tributiv de la ı̂nceput, ci pornind de la soluţia problemei iniţiale. Dacă costurile
unitare de transport cij se ı̂nlocuiesc cu c∗ij , pentru determinarea noii valori min-
ime a funcţiei de scop f este suficient ca, pornind de la soluţia optimă a problemei
iniţiale, să calculăm noile valori marginale u∗i şi vj∗ pentru costurile c∗ij modificate
şi să verificăm optimalitatea ei.
Soluţia iniţială o obţinem cu metoda ”minim ı̂n tabel”:
x11 = min(100, 75) = 75, x22 = x32 = 0, x31 = min(50, 125) = 50, x11 =
min(25, 75) = 25, x21 = 50.

Verificăm optimalitatea soluţiei:

Soluţia optimă este x11 = 25, x12 = 75, x21 = 50, x31 = 50 iar

fmin = 2 · 25 + 1 · 75 + 3 · 50 + 1 · 50 = 325.
54 Probleme de transport

Schimbând costurile unitare cij , facem un nou tabel de valori marginale şi verificăm
criteriul de optim.

Pentru problema modificată soluţia nu mai este optimă şi pornim un ciclu din
căsuţa (2, 2) cu diferenţa c∗ij − c′ij negativă. Redistribuim cantităţile atribuind
ı̂n căsuţa (2, 2) valoarea t, ı̂n (1, 2) valoarea 75 − t, În (1, 1) valoarea 25 + t şi ı̂n
(2, 1) valoarea 50 − t. Din condiţiile de pozitivitate 75 − t ≥ 0 şi 50 − t ≥ 0 avem
t = 50, deci noua soluţie este:

Soluţia optimă a problemei modificate este x11 = 75, x12 = 25, x22 = 50,
x31 = 50 şi fmin = 475.

12 Să se rezolve problema de distribuire a sarcinilor pe maşinile M1 , M2 şi


M3 , care au timpii disponibili de 10 ore, 8 ore şi 10 ore, dacă produsele ce se
prelucrează sunt P1 , P2 , P3 şi P4 ı̂n cantităţile 30, 32, 16, 20 bucăţi, cunoscând
cheltuielile unitare (orare) de prelucrare: 2, 3, 4, 4 pentru maşina M1 , 2, 3, 3, 3
pentru maşina M2 , respectiv 2, 4, 5, 2 pentru maşina M3 . Se cere ca cheltuielile
de prelucrare să fie minime.
Probleme rezolvate 55

Soluţie:
Pentru a scrie modelul matematic al acestei probleme vom nota cu xij numărul
de ore ı̂n care maşina Mi prelucrează produsul Pj . Există două categorii de
restricţii. Prima arată că la fiecare maşină Mi nu se depăşeşte disponibilul de
timp existent (ı̂n general notat cu ai ), iar a doua categorie arată faptul că toată
cantitatea din produsul Pj (notată bj ) este prelucrată. Notăm cu pij randamen-
tul orar al maşinii Mi la produsul Pj şi cu cij cheltuielile orare de producţie
la maşina Mi pentru prelucrarea produsului Pj . Dorim să determinăm o dis-
tribuire a sarcinilor de lucru, adică numărul de ore ı̂n care maşina Mi prelucrează
produsul Pj , astfel ı̂ncât cheltuielile totale să fie minime. Problema distribuirii
cij
sarcinilor poate fi sistematizată ı̂ntr-un tabel ı̂n care căsuţele au forma .
pij xij
Vom scrie modelul matematic al problemei.

min f = 2x11 + 3x12 + 4x13 + 4x14 + 2x21 + 3x22 + 3x23 +


+ 4x24 + 2x31 + 4x32 + 5x33 + 2x34

cu restricţiile


 x11 + x12 + x13 + x14 ≤ 10

x21 + x22 + x23 + x24 ≤ 8




 x31 + x32 + x33 + x34 ≤ 10



3x11 + 4x21 + 4x31 = 30

 4x12 + 2x22 + 3x32 = 32



5x13 + 4x23 + 5x33 = 16





 5x + 4x + 4x = 20
14 24 34

În tabelul de pornire, considerăm o coloană cu costuri nule, care ne poate ajuta
la determinarea soluţiei de bază iniţială (deoarece inegalităţile se transformă ı̂n
egalităţi prin introducerea variabilelor de compensare x1 , x2 şi x3 ) şi pij = 1.
56 Probleme de transport

Pentru determinarea unei soluţii iniţiale de bază se procedează ca la prob-


lemele de transport. Ocuparea unei căsuţe (i, j) se face atribuind valoarea
bj
 
xij = min ai , . Dacă acest minim este ai , atunci se taie limita i, iar pe
pij
bj
coloană rămâne cantitatea bj − pij ai , iar dacă minimul este , atunci se taie
pij
bj
coloana j şi pe linie rămâne cantitatea ai − .
pij
30
 
Aplicăm metoda ”minim ı̂n tabel”. În căsuţa (2, 1) atribuim x21 = min 8, =
4
15 20
 
şi tăiem coloana ı̂ntâi. Apoi x34 = min 10, = 5 şi se taie coloana a
2 4
32
 
patra. Ocupăm căsuţa (1, 2) cu x12 = min 10, = 8 şi tăiem coloana a doua.
4
15 16 1
 
În căsuţa (2, 3) avem x23 = min 8 − , = şi tăiem linia a doua. Apoi
2 4 2
16 − 4 · 0, 5 16 − 5 · 2 − 4 · 0, 5
   
x13 = min 10−8, = 2 şi x33 = min 10−5, =
2 5
4
. Pentru echilibrare, ı̂n coloana suplimentară, ı̂n căsuţa (3, 5) se repartizează
5
21
.
5

Condiţiile de optimalitate la problema distribuirii sarcinilor sunt ca variabilele


marginale ui şi vj , obţinute ca soluţii ale sistemului ui + pij vj = cij (i şi j fiind
indicii variabilelor din soluţia de bază), să verifice inegalităţile ui + pij vj ≤ cij
ı̂n toate căsuţele libere care nu sunt ı̂n soluţie. Este necesar să se pună ı̂n plus
ui = 0 când variabila de compensare xi 6= 0. Îmbunătaţirea soluţiei se face prin
Probleme rezolvate 57

modificarea valorilor variabilelor situate ı̂ntr-un ciclu obişnuit al unei căsuţe care
nu ı̂ndeplineşte condiţia de optim. Modificarea acestor valori nu se face cu aceeaşi
cantitate, deoarece trebuie ţinut cont de ponderile pij .
Fie u3 = 0. Avem sistemul 

 u1 + 4v2 = 3

u 1 + 5v3 = 4





 u2 + 4v1 = 2


u2 + 4v3 = 3




 u 3 + 5v3 = 5
u3 + 4v4 = 2





 u +v =0
3 5

3 1
şi obţinem u1 = −1, u2 = −1, u3 = 0, v1 = , v2 = 1, v3 = 1, v4 = , v5 = 0.
4 2
Calculăm c′ij = ui + pij vj şi observăm că c′31 > c31 , deci pentru ı̂mbunătăţirea
soluţiei pornim un ciclu din căsuţa (3, 1). Ciclul este format din căsuţele (3, 1),
(2, 1), (2, 3), (3, 3), la care, pentru echilibrare se ataşează un braţ ce duce la
coloana suplimentară. Notăm cu θ cantitatea atribuită ı̂n (3, 1) şi ţinând cont
de coeficienţii pij , transformările din ciclu sunt ı̂n desenul alăturat tabelului.

15 4 21 θ
Din condiţiile de nenegativitate a cantităţilor avem −θ ≥ 0, ≥ 0, − ≥ 0
2 5 5 5
⇒ θ = 1.
Soluţia ı̂mbunătăţită este:
58 Probleme de transport

În mod analog procedeului descris, verificăm optimalitatea acestei noi soluţii,
punând u3 = 0.

Soluţia nu este optimă deoarece c′15 > c15 , deci ı̂mbunătăţirea soluţiei se face cu
un ciclu format din (1, 5), (1, 3), (2, 3), (2, 1), (3, 2), (3, 5). Acum nu este nevoie
de braţ de echilibrare deoarece ciclul conţine căsuţe din coloana suplimentară.
Ciclul este:

Valoarea lui θ din condiţiile de nenegativitate este 2, iar soluţia ı̂mbunătăţită


este:
Probleme rezolvate 59

Această soluţie este optimă şi valoarea minimă a costurilor totale este

7
fmin = 3 · 8 + 2 · 4 + 3 · 4 + 2 · + 2 · 5 = 61.
2
Observaţie. Pot să existe probleme cu următorul model

min f = 7x11 + 3x12 + x13 + 2x21 + x22 + 5x23 + 5x31 + 4x32 + x33


 x11 + x12 + x13 = 30
x21 + x22 + x23 = 40





 x + x + x = 100
31 32 33

 2x 11 + x21 + 3x 31 ≤ 60

x12 + 4x22 + 2x32 ≤ 160




x13 + x23 + 4x33 ≤ 400

Datorită echilibrării inecuaţiilor, prin introducerea variabilelor de compensare,


ı̂n tabel apare o linie ı̂n plus, având costurile nule şi parametrii pij cu valoare 1.

Rezolvarea este analogă cu a problemei 11.


60 Probleme de transport

2.2 Probleme propuse

1 Să se scrie tabelul şi modelul matematic corespunzător următoarelor pro-


bleme economice care se ı̂ncadrează ı̂n problema transporturilor:
a) În trei baze de desfacere se află o anumită marfă ce trebuie transportată
ı̂n patru localităţi. Cantităţile depozitate la bază (adică disponibilele) sunt 15,
10, 25 mii tone, necesarele sunt 10, 15, 5, respectiv 20 mii tone şi cheltuielile de
transport ale unei unităţi de marfă de la fiecare bază la fiecare localitate sunt 7,
3, 5, 2, 4, 2, 7, 5, 1, 6, 4 şi 3 sute de lei. Se cere să se ı̂ntocmească programul
de transport astfel ı̂ncât cheltuielile totale să fie minime.
b) În trei autogări se află disponibile 20, 10 şi 25 maşini care trebuie trimise
ı̂n patru localităţi care au necesarele de 5, 15, 20 şi 15 maşini. Timpul pe care
ı̂l face o maşină din autogara i(i = 1, 3) până ı̂n localitatea j(j = 1, 4) este de
5, 2, 6, 3; 4, 2, 5, 6 şi respectiv 5, 8, 3, 2 ore. Să se ı̂ntocmească programul de
transport astfel ı̂ncât timpul total de transport să fie minim.

2 Trei depozite de minereu ale unei mine alimentează două uzine metalurgice.
Ştiind că necesarele uzinelor sunt 130 t şi 170 t, disponibilele celor trei depozite
sunt 50 t, 120 t şi 130 t, iar costurile unitare de transport de la fiecare depozit
la fiecare uzină sunt 7, 2, 1 şi repsectiv 3, 4, 5, să se scrie modelul matematic al
acestei probleme de transport precum şi tabelul ce sintetizează aceste date.

3 O intreprindere are 4 puncte de producţie Pi (i = 1, 4) ı̂n care se realizează


350, 450, 200 şi 400 unităţi dintr-un produs. Produsele sunt transportate la trei
magazine Mj (j = 1, 3), având capacităţile 500, 600 şi 300 unităţi de produs.
Cunoscându-se costurile transportului unei unităţi de produs de la centrul Di la
magazinul Mj , respectiv 3, 2, 3, 1, 1, 2, 3 , 4, 5, 2, 4, 3, să se scrie tabelul
datelor acestei probleme de transport şi modelul matematic corespunzător.

4 Pentru problema de transport formulată la 2, să se determine o soluţie iniţială


de bază, folosind metoda N-V, metoda ”minim pe linie” şi metoda ”minim ı̂n
tabel”.

5 Să se rezolve problemele de transport date prin tabelele următoare:


2.2. Probleme propuse 61

a)

b)

c)

d)
62 Probleme de transport

e)

f)

g)

h)
2.2. Probleme propuse 63

i)

j)

6 Să se rezolve problemele de transport neechilibrate date prin tabelele:

a)

b)

7 Să se rezolve următoarele probleme de transport şi să se reoptimizeze, dacă


matricea costurilor se modifică (la fiecare tabel se specifică noua matrice a cos-
turilor ).
64 Probleme de transport

a)

 
5 3 4 3
C ∗ = 6 2 4 5
 
4 7 5 2

!
5 2 4
b) C∗ =
3 4 4

c)

8 Să se rezolve problemele de distribuire a sarcinilor date prin următoarele mod-


ele matematice:
a) min f = 4x11 + 2x12 + 3x13 + x21 + 2x22 + 2x23 + 5x31 + 3x32 + x33 dacă


 x11 + x12 + x13 ≤ 10
x21 + x22 + x23 ≤ 12





 x +x +x ≤8
31 32 33

 2x11 + 3x21 + x31 = 50

3x12 + 4x22 + 2x32 = 80




x13 + 3x23 + 4x33 = 70

2.2. Probleme propuse 65

b) min f = 3x11 + 4x12 + 5x13 + 2x21 + 6x22 + 8x23 + 4x31 + 2x32 + x33 dacă


 x11 + x12 + x13 = 40
x21 + x22 + x23 = 60





 x + x + x = 50
31 32 33

 2x11 + 3x21 + x31 ≤ 30

x12 + 4x22 + 5x32 ≤ 45




x13 + 2x23 + x33 ≤ 20

CAPITOLUL 3

Teoria grafelor

3.1 Probleme propuse


1 Fie graful orientat G descris prin reprezentarea geometrică (sagital):

x1 x2

x6
x3

x5
x4

a) Să se descrie graful prin vârfuri şi arce, G = (X, U ).

b) Să se descrie graful analitic, G = (X, Γ).

c) Să se scrie 4 perechi de vârfuri adiacente.

d) Să se scrie 4 perechi de arce adiacente.

e) Să se scrie mulţimea arcelor incidente exterior respectiv interior vârfului x2 .

f ) Să se precizeze ordinul şi dimensiunea grafului dat.

66
3.1. Probleme propuse 67

Soluţie:
a) Graful se descrie precizând mulţimea vârfurilor X prin enumerarea etichetelor
asociate şi mulţimea arcelor U ce conţine perechi de vârfuri din X astfel:
X = {x1 , x2 , x3 , x4 , x5 , x6 }

U = {(x1 , x2 ) , (x1 , x3 ), (x1 , x4 ), (x2 , x5 ), (x2 , x6 ), (x3 , x2 ), (x4 , x3 ), (x4 , x6 ),


(x5 , x4 ), (x5 , x6 )} .

b) Graful se descrie prin mulţimea vârfurilor X şi prin funcţia multivocă


Γ : X → ℘(X) care indică pentru fiecare vârf mulţimea succesorilor săi:
X = {x1 , x2 , x3 , x4 , x5 , x6 }
Γx1 = {x2 , x3 , x4 }, Γx2 = {x5 , x6 }, Γx3 = {x2 },
Γx4 = {x3 , x6 }, Γx5 = {x4 , x6 }, Γx6 = ∅.

c) Două vârfuri sunt adiacente dacă ı̂ntre ele există un arc. Perechile de
vârfuri adiacente sunt:

(x1 , x2 ), (x1 , x4 ), (x4 , x3 ), (x5 , x6 ).

d) Două arce sunt adiacente dacă au o extremitate comună, indiferent de


tipul ei, iniţială sau finală. Perechi de arce adiacente sunt următoarele:

((x1 , x2 ), (x1 , x3 )), ((x1 , x2 ) , (x3 , x2 )) , ((x1 , x2 ) , (x2 , x6 )) , ((x4 , x5 ) , (x1 , x4 )) .

e) Mulţimea arcelor incidente exterior vârfului x2 este mulţimea arcelor ce


au pe x2 extremitate iniţială, adică

Ux+2 = {(x2 , x5 ) , (x2 , x6 )} .

Mulţimea arcelor incidente interior vârfului x2 este mulţimea arcelor ce au


pe x2 extremitate finală, adică

Ux−2 = {(x1 , x2 ) , (x3 , x2 }) .

f) Ordinul unui graf se defineşte ca fiind numărul vârfurilor grafului, adică


n = |X| = 6.
Dimensiunea unui graf este numărul arcelor acelui graf, m = |U | = 10.

2 Fie graful G = (X, U ) descris prin mulţimea vârfurilor şi a arcelor astfel:
X = {x1 , x2 , x3 , x4 , x5 }
U = {(x1 , x2 ), (x1 , x3 ), (x2 , x1 ), (x3 , x4 ), (x2 , x5 ), (x4 , x1 ), (x4 , x4 ), (x5 , x1 )}.
68 3. TEORIA GRAFELOR

a) Să se descrie graful geometric.

b) Să se dea un exemplu de subgraf al grafului G.

c) Să se dea un exemplu de graf parţial al grafului G.

Soluţie:
a) Graful sub formă geometrică se reprezintă astfel:

x1 x2

x3

x5
x4

b) Un subgraf al grafului G se obţine prin eliminarea din graful G a unor


vârfuri şi a tuturor arcelor adiacente vârfurilor eliminate, adică este subgraf
al grafului G graful definit prin G(A) = (A, V ), A ⊂ X, V = U ∩ (A × A).
Un exemplu de subgraf este cel obţinut prin eliminarea vârfului x3 şi a arcelor
adiacente lui (x1 , x3 ) şi (x3 , x4 ) şi care se reprezintă astfel:

x1 x2

x5
x4

În acest caz A = {x1 , x2 , x4 , x5 } şi


V = {(x1 , x2 ), (x2 , x1 ), (x3 , x4 ), (x4 , x1 ), (x4 , x4 ), (x5 , x1 )} .
c) Un graf parţial al grafului G se obţine din graful G prin păstrarea tuturor
vârfurilor şi eliminarea unor arce, adică G1 = (X, V ), V ⊂ U este graf parţial
al lui G. De exemplu prin eliminarea arcelor (x3 , x4 ), şi (x4 , x1 ) se obţine graful
parţial reprezentat astfel:
3.1. Probleme propuse 69

x1 x2

x3

x5
x4

Se observă ı̂n acest exemplu că există un arc pentru care extremitatea iniţială
coincide cu cea finală. Un astfel de arc poartă numele de buclă. Deci arcul
(x4 , x4 ) este o buclă.

3 Să se dea exemple de grafe simple, simetrice cu trei vârfuri. Câte asemenea
grafe există?

Soluţie:
Un graf G = (X, U ) este simetric dacă (xi , xj ) ∈ U ⇒ (xj , xi ) ∈ U , adică
dacă există arc de la vârful xi la xj atunci există arc şi de la vârful xj la vârful
xi .
Un graf este simplu dacă nu conţine bucle.
Grafe simple simetrice cu 3 vârfuri sunt următoarele:

x1 x2 x1 x2

x3 x3

Există 8 grafe simetrice simple cu 3 vârfuri: 1 graf fară arce, 3 grafuri cu câte
2
2 arce, 3 grafuri cu câte 4 arce şi un graf cu 6 arce. În general există 2Cn grafe
simple, simetrice cu n vârfuri.

4 Să se dea exemple de graf antisimetric cu 4 vârfuri. Un graf care nu este


simetric este antisimetric?

Soluţie:
Un graf G = (X, U ) este antisimetric dacă (xi , xj ) ∈ U ⇒ (xj , xi ) ∈/ U , adică
dacă există arc de la vârful xi la xj atunci nu există arc de la vârful xj la vârful
xi . Grafe antisimetrice cu 4 vârfuri sunt următoarele:
70 3. TEORIA GRAFELOR

x1 x2
x1 x2

x3

x3
x4
x4

Un graf care nu este simetric nu este neapărat antisimetric. De exemplu,


grafele următoare nu sunt simetrice şi nu sunt nici antisimetrice:

x1 x2
x1 x2

x3

x3
x4
x4

Primul graf nu e simetric pentru că există arcul (x1 , x3 ), dar nu există ar-
cul (x3 , x1 ). Graful nu este nici antisimetric pentru că există arcele (x1 , x2 ) şi
(x2 , x1 ).

5 Fie graful G = (X, U ) reprezentat geometric astfel:

x2 x3

x1 x4

x5

a) Să se scrie un drum simplu ı̂ntre vârfurile x1 şi x4 .

b) Să se scrie un drum elementar ı̂n graful G.

c) Să se scrie un drum hamiltonian ı̂n graful G.

d) Să se dea exemple de circuit ı̂n graful G.


3.1. Probleme propuse 71

Soluţie:
a) Un drum ı̂ntr-un graf este o succesiune de arce cu proprietatea că extre-
mitatea finală a unui arc coincide cu extremitatea iniţială a arcului următor.
Un drum este simplu dacă nu foloseşte de două ori acelaşi arc. În graful dat,
succesiunea de arce (x1 , x2 ), (x2 , x3 ), (x3 , x4 ) este un drum ı̂ntre vârfurile x1 şi
x4 .
b) Un drum elementar ı̂ntr-un graf este un drum ce foloseşte un vârf o singură
dată. Succesiunea de arce (x1 , x2 ), x2 , x3 ), (x3 , x5 ) este un drum elementar ı̂ntre
vârfurile x1 şi x5 .
c) Drum hamiltonian este un drum elementar ce trece prin toate vârfurile gra-
fului. Drumurile (x1 , x2 ), (x2 , x3 ), (x3 , x4 ), (x4 , x5 ) respectiv (x4 , x3 ), (x3 , x5 ),
(x5 , x1 ), (x1 , x2 ) sunt drumuri hamiltoniene ı̂n graful G.
d) Circuit este un drum pentru care extremitatea iniţială a primului arc
coincide cu extremitatea finală a ultimului arc. Exemple de circuite:

{(x1 , x2 ), (x2 , x3 ), (x3 , x5 ), (x5 , x1 },


{(x1 , x2 ), (x2 , x3 ), (x3 , x4 ), (x4 , x5 ), (x5 , x1 }.

6 Să se verifice dacă următorul graf este eulerian:

x2 x3

x1 x4

x5

Soluţie:
Un graf este eulerian dacă conţine un circuit eulerian, adică un circuit simplu
ce conţine toate arcele grafului. Se poate construi circuitul:

{(x1 , x2 ), (x2 , x3 ), (x3 , x4 ), (x4 , x2 ), (x2 , x5 ), (x5 , x1 }

ce conţine o singură dată fiecare arc al grafului, deci graful este eulerian.

7 Să se indice ı̂n graful neorientat următor un lanţ eulerian şi un lanţ hamil-
tonian.
72 3. TEORIA GRAFELOR

x2 x3

x1 x5

x4

Soluţie:
Noţiunile folosite pentru grafurile neorientate( ı̂n paralel cu cele pentru grafe
orientate) sunt următoarele: muchie( arc), lanţ( drum), ciclu( circuit).
Un lanţ hamiltonian este: (x1 , x2 ), (x2 , x3 ), (x3 , x4 ), (x4 , x5 ).
Un lanţ eulerian este: (x5 , x4 ), (x4 , x1 ), (x1 , x2 ), (x2 , x3 ), (x3 , x4 ).

8 Să se scrie matricile de adiacenţă şi de incidenţă pentru grafurile de la prob-


lemele 5, 6 şi 7 şi să se dea reprezentarea simbolică a acestor grafuri.

Soluţie:
Fie G= ( X, U) un graf orientat de ordin n, X = {x1 , x2 , . . . , xn }, |X| = n
şi dimensiune m, U = {u1 , u2 , . . . , um }, |U | = m.
Matricea de adiacenţă A este o matrice pătratică de ordin n şi se defineşte
astfel: (
1 dacă (xi , xj ) ∈ U
A = (aij )i,j=1,n cu aij = .
0 ı̂n caz contrar
Deci ı̂n matrice este valoarea 1 pe linia i, coloana j dacă ı̂ntre vârfurile xi şi
xj există arc şi 0 ı̂n caz contrar.
Matricea de incidenţă este o matrice cu n linii şi m coloane, câte o linie
pentru fiecare vârf şi câte o coloană pentru fiecare arc. Pe fiecare coloană se
marchează cu -1 linia corespunzătoare vârfului extremitate finală a arcului şi cu
1 linia corespunzătoare extremităţii iniţiale a arcului respectiv.


 1 dacă ∃xj ∈ X a.i. u = (xi , xj )

B = (biu ) cu biu = −1 dacă ∃xj ∈ X a.i. u = (xj , xi )
i = 1, n 
 0 ı̂n caz contrar
u = 1, m
Pentru grafe neorientate se defineşte doar matricea de adiacenţă.
Pentru graful de la problema 5, se numerotează arcele astfel:
3.1. Probleme propuse 73

x2 u3 x3
u1 u4
u2 u5
x1 u6 x4

u8 x5 u7

Atunci matricea de adiacenţa se scrie astfel:


 
0 1 0 0 0
 1 0 1 0 0 
 
A= 0 0 0 1 1 ,
 
 
 0 0 1 0 1 
1 0 0 0 0

iar cea de incidenţă


 
u1 u2 u3 u4 u5 u6 u7 u8

 1 −1 0 0 0 0 0 −1 
 −1 1 1 0 0 0 0 0 
B= .
 
 0 0 −1 1 −1 1 0 0 
 
 0 0 0 −1 1 0 1 0 
0 0 0 0 0 −1 −1 1

Numerotând arcele grafului de la problema 6 se obţin matricile de adiacenţă


respectiv incidenţă:
 
0 1 0 0 0

 0 0 1 0 1 

A= 0 0 0 1 0 ,
 
 
 0 1 0 0 0 
1 0 0 0 0
 
u1 u2 u3 u4 u5 u6

 1 0 0 0 0 −1 

 −1 1 0 −1 1 0 
B= .
 
 0 −1 1 0 0 0 
 
 0 0 −1 1 −1 0 
0 0 0 0 0 1
74 3. TEORIA GRAFELOR

Pentru graful din problema 7 există doar matrice de adiacenţă:


 
0 1 0 1 0

 1 0 1 0 0 

A= 0 1 0 1 0 .
 
 
 1 0 1 0 1 
0 0 0 1 0

În cazul grafelor neorientate matricea de adiacenţă este simetrică, adică


muchia se poate citi (xi , xj ) sau (xj , xi ).
Se observă de asemenea că ı̂n cazul grafelor orientate, suma elementelor ma-
tricii de adiacenţă este egală cu dimensiunea grafului( numărul de arce), iar ı̂n
cazul grafelor neorientate cu dublul numărului de muchii.
Reprezentarea simbolică a unui graf este de fapt o listă a arcelor acestui graf
astfel: pe prima linie se scriu indicii arcelor( linia I), iar pe liniile 2 şi 3, pentru
fiecare arc extremitatea iniţială( linia V I) respectiv finală( linia V F ).
Pentru graful de la problema 5, reprezentarea simbolică este următoarea:

I 1 2 3 4 5 6 7 8
VI 1 2 2 3 4 3 4 5
VF 2 1 3 4 3 5 5 1

Pentru graful de la problema 6, reprezentarea simbolică este următoarea:

I 1 2 3 4 5 6
VI 1 2 3 4 2 5
VF 2 3 4 2 5 1

9 Fie graful G reprezentat simbolic astfel:

I 1 2 3 4 5 6 7 8 9 10
VI 1 1 1 2 2 3 4 4 5 5
VF 2 3 4 3 4 5 3 5 3 6

Să se verifice dacă există drumuri de lungime 4 ı̂ntre vârfurile acestui graf.

Soluţie:
Graful dat se poate reprezenta geometric astfel:
3.1. Probleme propuse 75

x1 x2

x6 x3

x5
x4

Lungimea unui drum se defineşte ca fiind numărul arcelor din care este com-
pus drumul.
Numărul drumurilor de lungime k ı̂ntre vârfurile xi şi xj ale unui graf este
dat de valoarea aflată pe linia i, coloana j din matricea obţinută prin ridicarea
la puterea k a matricei de adiacenţă.
Matricea de adiacenţă pentru graful dat este
 
0 1 1 1 0 0

 0 0 1 1 0 0 

 0 0 0 0 0 1 
A= .
 
 0 0 1 0 1 0 
 
 0 0 1 0 0 1 
0 0 0 0 0 0
Ridicând matricea A la puterea a patra se obţine
 
0 0 1 0 0 3

 0 0 0 0 0 1 

 0 0 0 0 0 0 
A4 =  .
 
 0 0 0 0 0 0 
 
 0 0 0 0 0 0 
0 0 0 0 0 0
Se poate spune atunci că există 1 drum de lungime 4 ı̂ntre vârfurile x1 şi x3
pentru că elementul de pe linia 1, coloana 3 este 1, există 3 drumuri de lungime
4 ı̂ntre vârfurile x1 şi x6 pentru că elementul de pe linia 1, coloana 6 este 3 şi
există 1 drum de lungime 4 ı̂ntre vârfurile x2 şi x6 pentru că elementul de pe
linia 2, coloana 6 este 1. Între oricare alte perechi de vârfuri nu există drumuri
de lungime 4.
76 3. TEORIA GRAFELOR

Calculând  
0 0 0 0 0 1

 0 0 0 0 0 0 

 0 0 0 0 0 0 
A5 = 
 
0 0 0 0 0 0

 
 
 0 0 0 0 0 0 
0 0 0 0 0 0
şi  
0 0 0 0 0 0

 0 0 0 0 0 0 

 0 0 0 0 0 0 
A6 = 
 
0 0 0 0 0 0

 
 
 0 0 0 0 0 0 
0 0 0 0 0 0
se observă că există un singur drum de lungime 5 şi acesta este ı̂ntre vârfurile
x1 şi x6 pentru că elementul de pe linia 1, coloana 6 ı̂n matricea A5 este 1 şi nu
există drumuri de lungime mai mare ca 5 ı̂n acest graf.
De remarcat că folosind matricea de adiacenţă se poate obţine numărul dru-
murilor de lungime dată ı̂ntre două vârfuri, dar nu şi drumurile efectiv.

10 Fie graful G = (X, U ) reprezentat geometric astfel

x2 x3

x1 x4

x5

Să se determine drumurile hamiltoniene ı̂n acest graf.

Soluţie:
Drumurile hamiltoniene se determină folosind matricea latină asociată gra-
fului. Matricea latină se defineşte astfel:
(
xi xj , (xi , xj ) ∈ U
M = (mij )i,j=1,n , |X| = n cu mij = .
0 altfel
3.1. Probleme propuse 77

∼ ∼
Folosind matricea latină se construieşte matricea M = (mij )i,j=1,n cu

(
∼ xj , (xi , xj ) ∈ U
mij =
0 altfel

care se obţine din matricea latină eliminând primul vârf de pe fiecare poziţie a
matricii( rămâne doar extremitatea finală a fiecărui arc).
Pentru graful dat matricile se definesc astfel:

 
0 x1 x2 x1 x3 0 x1 x5

 0 0 x2 x3 x2 x4 0 

M = 0 0 0 x3 x4 0 ,
 
 
 0 0 0 0 x4 x5 
0 0 0 0 0

 
0 x2 x3 0 x5


 0 0 x3 x4 0 
M = 0 0 0 x4 0  .
 
 
 0 0 0 0 x5 
0 0 0 0 0

Cele două matrici se “ı̂nmulţesc” astfel: un “produs” este zero dacă unul dintre
factori este zero sau dacă grupul obţinut prin concatenarea factorilor conţine
vârfuri identice; altfel cei doi factori se concatenează. Prin “suma” produselor
ı̂nţelegem scrierea separată a fiecărui termen al sumei. Se repetă ı̂nmulţirile
latine astfel:

M2 ← M · M

M3 ← M2 · M
...

M k ← M k−1 · M .

Drumurile hamiltoniene se obţin ı̂n matricea M n−1 . Dacă atunci când se



efectuează ı̂nmulţirea M n−1 · M se face concesia ca ı̂n grupele obţinute prima şi
ultima poziţie să poată coincide, se obţin circuitele hamiltoniene.
78 3. TEORIA GRAFELOR

Pentru graful dat se calculează produsele:


 ( 
x1 x2 x4
0 0 x1 x2 x3 0
x1 x3 x4
 
 
 
∼ 0 0 0 x2 x3 x4 x2 x4 x5 
2

M =M ·M = ,

 0 0 0 0 x3 x4 x5 

0 0 0 0 0
 
 
0 0 0 0 0
 ( 
x1 x2 x4 x5
0 0 0 x1 x2 x3 x4
x1 x3 x4 x5
 
 
 
∼ 0 0 0 0 x2 x3 x4 x5
M3 = M2 · M = 
 
,

 0 0 0 0 0 

0 0 0 0 0
 
 
0 0 0 0 0
 
0 0 0 0 x1 x2 x3 x4 x5
 0 0 0 0 0 
 ∼ 
4 3
M =M ·M = 0 0 0 0 0 ,
 
 
 0 0 0 0 0 
0 0 0 0 0

M 5 = M 4 · M = O5 .

Există un singur drum hamiltonian ı̂n graful dat şi acesta este dat de unicul
element nenul din matricea M 4 : {(x1 , x2 ), (x2 , x3 ), (x3 , x4 ), (x4 , x5 )}. Deoarece
ı̂n matricea M 5 nu există elemente nenule deducem că ı̂n graf nu există circuit
hamiltonian.

11 Fie graful G = (X, U ) descris geometric. Este graful dat conex? Dacă nu,
care sunt componentele sale conexe?

2 4 6

5 7
1 3
3.1. Probleme propuse 79

Soluţie:
Un graf neorientat este conex( pentru grafe orientate noţiunea folosită este
graf tare conex) dacă ı̂ntre oricare două vârfuri există lanţ( respectiv drum).
Graful G = (X, U ) este definit astfel:

mulţimea vârfurilor X = {1, 2, 3, 4, 5, 6, 7}


mulţimea muchiilor U = {(1, 2), (1, 4), (2, 5), (3, 4), (6, 7)}.

Graful dat nu este conex pentru că ı̂ntre vârful 1 şi vârful 6 nu există lanţ.
O componentă conexă este un subgraf conex cu număr maxim de vârfuri.
În cazul grafului dat C1 = (X1 , U1 ) şi C2 = (X2 , U2 ) unde
X1 = {1, 2, 3, 4, 5}, U1 = {(1, 2), (1, 4), (2, 5), (3, 4)},
X2 = {6, 7}, U2 = {(6, 7)}
sunt componentele conexe ale grafului.
Se observă că dacă la o componentă conexă Ci se adaugă un vârf care face
parte din Cj atunci graful obţinut nu mai este conex.

12 Este graful următor conex? Este arbore? Construiţi un graf parţial care să
fie arbore. Daţi exemplu de punct de articulaţie a grafului.

2 3

5
1 4

Soluţie:
Graful este conex deoarece ı̂ntre oricare două vârfuri există lanţ.
Arborele este un graf conex şi fără cicluri. Graful dat nu este arbore pentru
că conţine un ciclu şi anume {(2, 3), (3, 4), (4, 2)}. Dacă se elimină muchia (3, 4)
sau (2, 3) sau (3, 4) graful devine arbore:
80 3. TEORIA GRAFELOR

2 3 2 3 2 3

5 5 5
4 1 4 4
1 1

6 6 6

Se numeşte punct de articulaţie un vârf care are proprietatea că prin eliminarea
sa graful nu mai este conex. Vârful 4 este punct de articulaţie pentru graful
dat. De asemenea vârful 2 este punct de articulaţie. Grafurile obţinute prin
eliminarea acestor vârfuri sunt următoarele:

2 3 3

5 5
1 4
1
6
6

şi evident nu sunt conexe.

13 Fie graful G = (X, U ) reprezentat geometric astfel:


x6
x2
x1

x8
.
x3
x4 x5
x7

Să se construiască arbori de acoperire pentru acest graf.

Soluţie:
Un arbore este un graf conex, fără cicluri. Arbori de acoperire pentru graful
G sunt toate grafurile parţiale ale grafului care sunt arbori, adică un arbore
care conţine toate vârfurile grafului. Următoarele grafuri parţiale ale lui G sunt
arbori de acoperire:
3.1. Probleme propuse 81

x6
x2
x1

x8

x3
x4 x5
x7
x6
x2
x1

x8

x3
x4 x5
x7
x6
x2
x1

x8

x3
x4 x5
x7

Se observă că arborii de acoperire obţinuţi au acelaşi număr de muchii şi


anume 7, cu unu mai puţin decât numărul de vârfuri.

14 Fie graful G = (X, U ) ı̂n care muchiilor sunt asociate valori pozitive numite
ponderi( se mai poate folosi noţiunea de lungime a muchiei). Să se determine
arborele de acoperire de pondere minimă pentru acest graf.

7 x1 9
x0 x4
6 4
9

x2 8
10
10 11
x5
x3 12
82 3. TEORIA GRAFELOR

Soluţie:
Arborele de acoperire de pondere minimă este acel arbore de acoperire dintre
toţi arborii de acoperire ai grafului G, pentru care suma ponderilor muchiilor este
minimă. Evident se poate vorbi despre arbore de acoperire doar pentru grafe
conexe.
O metodă de construire a arborelui de acoperire de pondere minimă este
construirea tuturor arborilor şi apoi alegerea celui de pondere minimă. Această
metodă necesită un volum mare de lucru.
Există doi algoritmi pentru construirea arborelui de acoperire de pondere
minimă: Kruskal şi Prim.

Algoritmul lui Kruskal:

a) se ordonează muchiile arborelui ı̂n ordinea crescătoare a pon-


derilor asociate;

nici o muchie nu este ı̂ncă selectată;


lungimea ea arborelui de acoperire este zero, v = 0 ;

b) se cercetează muchiile ordonate ı̂ncepând de la prima şi se


decide astfel:

dacă alegând muchia mc curentă nu apare circui ı̂n graf,


muchia se poate selecta şi se trece la muchia următoare; val-
oarea arborelui creşte cu lungimea muchiei, v := v + l(mc);
dacă alegând muchia curentă apare circuit ı̂n graf, muchia
nu se selectează şi se trece la muchia următoare.

c) se repetă pasul b) până când numărul muchiilor selectate ms


este cu unu mai mic decât numărul vârfurilor grafului, ms =
n − 1 (pentru ca graful parţial obţinut să fie arbore).

Valoarea v obţinută este lungimea minimă a arborelui de acoperire.


3.1. Probleme propuse 83

Algoritmul lui Prim:

1. se marchează un vârf al grafului ca fiind selectat; lungimea


arborelui de acoperire este zero, v = 0;

2. se alege muchia de pondere minimă ce are un vârf selectat


şi unul neselectat, mc; vârful neselectat al acestei muchii
se marchează ca selectat; valoarea arborelui de acoperire
creşte cu lungimea muchiei selectate v := v + l(mc);

3. se repetă pasul b) până când toate vârfurile grafului sunt


selectate.

Valoarea v obţinută este lungimea minimă a arborelui de acoperire.


Se vor aplica aceşti doi algoritmi pentru graful dat, n = 6.
Algoritmul lui Kruskal:
a) muchiile ordonate crescător după lungimi sunt:

(x1 , x2 ), (x0 , x2 ), (x0 , x1 ), (x4 , x5 ), (x1 , x4 ),

(x2 , x4 ), (x0 , x3 ), (x3 , x4 ), (x2 , x3 ), (x3 , x5 )

v := 0 ;

b) se alege muchia (x1 , x2 ) şi evident că nu există ı̂ncă circuit, deci muchia se
selectează; v := 4 ;
c) numărul muchiilor selectate ms = 1, ms 6= 5;
b) se alege muchia (x0 , x2 ); nu se formează circuit deci muchia se selectează;
v := 10;
c) numărul muchiilor selectate ms = 2, ms 6= 5;
b) se cercetează muchia (x0 , x1 ); se formează circuit, deci muchia nu se selectează;
c) numărul muchiilor selectate ms = 2, ms 6= 5;
b) se cercetează muchia (x4 , x5 ); nu se formează circuit deci muchia se selectează;
v := 18;
c) numărul muchiilor selectate ms = 3, ms 6= 5;
b) se cercetează muchia (x1 , x4 ); nu se formează circuit deci muchia se selectează;
v := 27;
c) numărul muchiilor selectate ms = 4, ms 6= 5;
b) se cercetează muchia (x2 , x4 ); se formează circuit deci muchia nu se selectează;
c) numărul muchiilor selectate ms = 4, ms 6= 5;
84 3. TEORIA GRAFELOR

b) se cercetează muchia (x0 , x3 ); nu se formează circuit deci muchia se selectează;


v := 37;
c) numărul muchiilor selectate ms = 5 = n − 1;
STOP.
Arborele de acoperire are lungimea 37 şi este:

x1 9
x0 x4
6 4

x2 8
10
x5
x3

Algoritmul lui Prim


a) se marchează vârful x0 al grafului ca fiind selectat; lungimea arborelui de
acoperire este zero, v = 0;
b) dintre muchiile ce au un vârf selectat( adică x0 ) şi unul neselectat( adică
oricare dintre celelalte) se selectează muchia de pondere minimă, adică (x0 , x2 ).
Vârfurile {x0 , x2 } sunt selectate, iar lungimea arborelui de acoperire este
v := 6;
c) {x0 , x2 } =6 X, deci se repetă b)
b) se alege muchia (x1 , x2 ) şi se selectează vârful x1 ; v := 10;
mulţimea vârfurilor selectate este {x0 , x1 , x2 };
c) {x0 , x1 , x2 } =6 X, deci se repetă b);
b) se alege muchia (x1 , x4 ) şi se selectează vârful x4 ; v := 19;
mulţimea vârfurilor selectate este {x0 , x1 , x2 , x4 };
c) {x0 , x1 , x2 , x4 } =6 X, deci se repetă b);
b) se alege muchia (x4 , x5 ) şi se selectează vârful x5 ; v := 27;
mulţimea vârfurilor selectate este {x0 , x1 , x2 , x4 , x5 };
c) {x0 , x1 , x2 , x4 , x5 } =6 X, deci se repetă b);
b) se alege muchia (x0 , x3 ) şi se selectează vârful x3 ; v := 37;
mulţimea vârfurilor selectate este {x0 , x1 , x2 , x4 , x5 };
c) {x0 , x1 , x2 , x3 , x4 , x5 } = X,
STOP.
Arborele de acoperire este acelaşi cu cel obţinut prin algoritmul lui Kruskal.
Se observă că şi ı̂n cazul algoritmului lui Prim este utilă ordonarea muchiilor
3.1. Probleme propuse 85

grafului după lungimi deoarece trebuie la fiecare pas căutată o muchie de pondere
minimă.

15 Fie graful G = (X, U ) ı̂n care se asociază fiecărui arc o valoare numită
pondere sau lungime. Să se determine drumul de lungime minimă ı̂ntre vârfurile
x1 şi x8 ı̂n acest graf.

4 x4
x3

7 2 15
8 9
7 x8
16 x7
x1
10 6 10
8 4
6
x6
x2 x5 2
5

Soluţie:
Lungimea unui drum ı̂ntre două vârfuri ale unui graf se defineşte ca fiind
suma lungimilor arcelor ce formează drumul. Dintre drumurile existente ı̂ntre
două vârfuri interesează de obicei cele de lungime minimă sau maximă.
O metodă de determinare a lungimilor minime sau maxime a drumurilor
dintre două vârfuri este cea bazată pe algoritmul Bellman – Kalaba. Acest
algoritm se bazează pe principiul optimalităţii al optimizării dinamice enunţat
de Bellman astfel: o politică este optimală dacă la fiecare moment, oricare ar fi
deciziile precedente, deciziile ce urmează a fi luate constituie o politică optimală
ı̂n raport cu rezultatul deciziilor anterioare.
Fie X = {x1 , x2 , . . . , xn } mulţimea vârfurilor grafului şi fie m dimensiunea
grafului(numărul arcelor sale). Presupunem că se caută drumul minim de la
vârful xi la xj (vârful iniţial poate fi ı̂ntotdeauna x1 printr-o renumerotare
convenabilă). Fie xk1 , xk2 , . . . , xkp predecesorii lui xj . Pe baza principiului
optimalităţii lui Bellman se determină lungimile minime ale drumurilor ı̂ntre
vârful xi şi vârfurile xk1 , xk2 , . . . , xkp şi apoi se adaugă lungimile arcelor (xk1 , xj ),

(xk2 , xj ) , . . . , xkp , xj . Valoarea minimă( maximă) va fi minimul(maximul) din-
tre aceste sume.
86 3. TEORIA GRAFELOR

xk1
lk1 l(xk1, xj )
xk2
xi lk2 l(xk2, xj ) xj

lkp l(xkp, xj )
xkp

Adică, lungimea minimă a drumului ı̂ntre vârfurile xi şi xj este

lij = min(lk1 + l(xk1 , xj ), lk2 + l(xk2 , xj ), ..., lkp + l(xkp , xj )),

unde lk1 , lk2 , . . . , lkp sunt lungimile minime ale drumurilor dintre vârfurile xi şi
vârfurile predecesori ai lui xj şi sunt cote( marcaje) care se asociază vârfurilor
xk1 , xk2 , . . . , xkp , iar l(xk1 , xj ), l(xk2 , xj ), . . . , l(xkp , xj ) sunt lungimile arcelor de
la predecesorii lui xj la xj . Pentru a determina efectiv acest drum de lungime
lij se urmăreşte drumul ı̂n sens invers: un arc (xp , xq ) va aparţine drumului dacă
lungimea sa este egală cu diferenţa dintre valorile liq şi lip determinate deja.
Evident, se pot determina mai multe drumuri de lungime lij ı̂ntre vârfurile xi
şixj . Dacă ı̂n graf există cicluri de valoare negativă atunci parcurgând un astfel
de ciclu valoarea oricărui drum scade şi ı̂n acest caz nu există un drum de lungime
minimă.
Procedeul se aplică la fel pentru determinarea unui drum de lungime minimă
ı̂ntr-un graf neorientat.
Pentru determinarea drumurilor de lungime maximă se ı̂nlocuieşte min cu
max ı̂n procedeul Bellman-Kalaba.
Algoritmul Bellman-Kalaba se descrie astfel pentru determinarea drumurilor
de lungime minimă ı̂ntre vârful x1 şi celelalte ( dintr-un graf:
(1) (1) c1j , (x1 , xj ) ∈ U
Pasul 1. Iniţializare: l1 := 0, l1 := , j = 2, n.
−∞, (x1 , xj ) ∈ /U

 l(k) := 0 ;
1
Pasul 2. (k) (k−1)
 lj := min(lj + c1j ) , j = 2, n
i6=j
(k−1) (k)
Pasul 3. Dacă lj = lj , j = 1, n atunci STOP
altfel
dacă (m < k) atunci “ Există ciclu de valoare
negativă”
3.1. Probleme propuse 87

altfel k := k + 1;
treci la pasul 2.
Pentru exemplul dat se construieşte matricea valorilor

 0,
 i=j
C = (cij )i,j=1,n unde cij = cij , (xi , xj ) ∈ U

 +∞, altfel

(k)
apoi se trece la construirea valorilor li sub forma unui tabel conform algorit-
mului:  
0 6 8 ∞ 10 ∞ 16 ∞
 ∞ 0 ∞ ∞ 5 ∞ 8 ∞ 
 
 ∞ ∞ 0 4 9 ∞ 7 ∞ 
 
 
 ∞ ∞ ∞ 0 ∞ ∞ 2 15 
C=  
 ∞ ∞ ∞ ∞ 0 2 4 ∞ 

 ∞ ∞ ∞ 4 ∞ 0 ∞ 10 
 
 ∞ ∞ ∞ ∞ ∞ ∞ 0 7 
 

∞ ∞ ∞ ∞ ∞ ∞ ∞ 0

(k) (k) (k) (k) (k) (k) (k) (k)


k l1 l2 l3 l4 l5 l6 l7 l8
k =0 0 6 8 ∞ 10 ∞ 16 ∞
k =1 0 6 8 12 10 12 14 23
k =2 0 6 8 12 10 12 14 21
k =3 0 6 8 12 10 12 14 21

Prima linie din tabel (k = 0) este identică cu prima linie din matricea valo-
rilor.
Elementul i al liniei k = 1 se obţine punând linia k = 0 peste coloana i a
matricei valorilor, adunând elementele corespunzătoare şi alegând maximul:

l11 := 0;
(1)
l2 := min(l10 + c12 , l20 + c22 , l30 + c32 , l40 + c42 , l50 + c52 , l60 + c62 , l70 + c72 , l80 + c82 )
= min(0 + 6, 6 + 0, 8 + ∞, ∞ + ∞, 10 + ∞, ∞ + ∞, 16 + ∞, ∞ + ∞) = 6;
(1)
l3 := min(l10 + c13 , l20 + c23 , l30 + c33 , l40 + c43 , l50 + c53 , l60 + c63 , l70 + c73 , l80 + c83 )
= min(0 + 8, 6 + ∞, 8 + 0, ∞ + ∞, 10 + ∞, ∞ + ∞, 16 + ∞, ∞ + ∞) = 8;
...
(1)
l8 := min(l10 + c18 , l20 + c28 , l30 + c38 , l40 + c48 , l50 + c58 , l60 + c68 , l70 + c78 , l80 + c88 )
= min(0 + ∞, 6 + ∞, 8 + ∞, ∞ + 15, 10 + ∞, ∞ + 10, 16 + 7, ∞ + 0) = 23;
88 3. TEORIA GRAFELOR

Liniile 0 şi 1 nu sunt egale, deci se repetă pasul 1 al algoritmului, adică se


construieşte linia 2( k = 2):
(2)
l1 := 0;
(2) (1) (1) (1) (1) (1) (1)
l2 := min(l1 + c12 , l2 + c22 , l3 + c32 , l4 + c42 , l5 + c52 , l6
(1) (1)
+ c62 , l7 + c72 , l8 + c82 ) =
= min(0 + 6, 6 + 0, 8 + ∞, 12 + ∞, 10 + ∞, 12 + ∞, 14 + ∞, 23 + ∞) = 6;
(2) (1) (1) (1) (1) (1) (1)
l3 := min(l1 + c13 , l2 + c23 , l3 + c33 , l4 + c43 , l5 + c53 , l6
(1) (1)
+ c63 , l7 + c73 , l8 + c83 ) =
= min(0 + 8, 6 + ∞, 8 + 0, 12 + ∞, 10 + ∞, 12 + ∞, 14 + ∞, 23 + ∞) = 8;
...
(2) (1) (1) (1) (1) (1) (1)
l8 := min(l1 + c18 , l2 + c28 , l3 + c38 , l4 + c48 , l5 + c58 , l6
(1) (1)
+ c68 , l7 + c78 , l8 + c88 ) =
= min(0 + ∞, 6 + ∞, 8 + ∞, 12 + 15, 10 + ∞, 12 + 10, 14 + 7, 23 + 0) = 21;

Liniile 1 şi 2 nu sunt egale, deci se repetă pasul 1 al algoritmului, adică se


construieşte linia 3 (k = 3):
(3)
l1 := 0;
(3) (2) (2) (2) (2) (2) (2)
l2 := min(l1 + c12 , l2 + c22 , l3 + c32 , l4 + c42 , l5 + c52 , l6
(2) (2)
+ c62 , l7 + c72 , l8 + c82 ) =
= min(0 + 6, 6 + 0, 8 + ∞, 12 + ∞, 10 + ∞, 12 + ∞, 14 + ∞, 21 + ∞) = 6;
(3) (2) (2) (2) (2) (2) (2)
l3 := min(l1 + c13 , l2 + c23 , l3 + c33 , l4 + c43 , l5 + c53 , l6
(2) (2)
+ c63 , l7 + c73 , l8 + c83 ) =
= min(0 + 8, 6 + ∞, 8 + 0, 12 + ∞, 10 + ∞, 12 + ∞, 14 + ∞, 21 + ∞) = 8;
...
(3) (2) (2) (2) (2) (2) (2)
l8 := min(l1 + c18 , l2 + c28 , l3 + c38 , l4 + c48 , l5 + c58 , l6
(2) (2)
+ c68 , l7 + c78 , l8 + c88 ) =
= min(0 + ∞, 6 + ∞, 8 + ∞, 12 + 15, 10 + ∞, 12 + 10, 14 + 7, 21 + 0) = 21;

Liniile 2 şi 3 sunt egale şi deci s-au obţinut valorile drumurilor minime dintre
vârful x1 şi celelalte astfel:
3.1. Probleme propuse 89

(3)
- drumul minim ı̂ntre x1 şi x2 are valoarea l2 = 6;
(3)
- drumul minim ı̂ntre x1 şi x3 are valoarea l3 = 8;
(3)
- drumul minim ı̂ntre x1 şi x4 are valoarea l4 = 12;
(3)
- drumul minim ı̂ntre x1 şi x5 are valoarea l5 = 10;
(3)
- drumul minim ı̂ntre x1 şi x6 are valoarea l6 = 12;
(3)
- drumul minim ı̂ntre x1 şi x7 are valoarea l7 = 14;
(3)
- drumul minim ı̂ntre x1 şi x8 are valoarea l8 = 21.

Pentru a determina drumul minim ı̂ntre x1 şi x8 pornim de la x8 ı̂nspre x1


(3) (3)
astfel: se caută vârful xp pentru care l8 − lp = cp8 , ı̂n cazul nostru x7 , apoi
(3) (3)
se caută vârful xp pentru care l7 − lp = cp7 , ı̂n cazul nostru x2 , apoi se caută
(3) (3)
vârful xp pentru care l2 − lp = cp2 , ı̂n cazul nostru x1 şi deoarece am ajuns la
vârful x1 ı̂nseamnă că am determinat drumul minim {x1 , x2 , x7 , x8 }.
16 Să se determine drumul de lungime maximă ı̂ntre vârfurile x0 şi x5 ı̂n graful
G = (X, U ) descris sagital astfel:

7 x1 9
x0 x4
6 4
9

x2 8
10
10 11
x5
x3 12

Soluţie:
Se aplică algoritmul Bellman-Kalaba pentru drum maxim astfel:
- se construieşte matricea valorilor astfel:
−∞ −∞
 
0 7 6 10
 −∞ 0 4 −∞ 9 −∞ 
 
 −∞ −∞ 0 11 9 −∞ 
C=
 
 −∞ −∞ −∞ 0 −∞ 12 

 
 −∞ −∞ −∞ 10 0 8 
−∞ −∞ −∞ −∞ −∞ 0
90 3. TEORIA GRAFELOR

- se construieşte tabelul:

(k) (k) (k) (k) (k) (k)


k l0 l1 l2 l3 l4 l5
k =0 0 7 6 10 -∞ -∞
k =1 0 7 11 17 16 22
k =2 0 7 11 26 20 29
k =3 0 7 11 30 20 38
k =4 0 7 11 30 20 42
k =4 0 7 11 30 20 42

S-a obţinut valoarea drumului maxim ı̂ntre x0 şi x5 ca fiind 42. Drumul este
{x0 , x1 , x2 , x4 , x3 , x5 } şi se determină la fel ca la drum minim.

17 Să se determine folosind algoritmul lui Ford drumul de lungime minimă


ı̂ntre vârfurile x1 şi x7 ı̂n graful dat prin reprezentarea simbolică:

VI(I) 1 1 1 2 2 3 3 4 4 5 5 6
VF(I) 2 3 4 3 5 5 6 3 6 6 7 7
L(I) 5 3 7 2 4 6 5 1 8 4 10 9

Soluţie:
Graful arată sagital astfel:

1 x4
x3

3 7 x7
4 10
x1 5
6 9
5
x6
x2 x5 4
4

Etapele algoritmului lui Ford sunt următoarele:


1. Fiecărui vârf xi i se asociază o valoare λi .
(0) (0)
Iniţial λ1 := 0, λi := ∞, i = 2, n; k := 0 ;
(k) (k)
2. Pentru fiecarea arc (xi , xj ) se calculează diferenţa λk − λi şi se com-
(k) (k)
pară cu lungimea l(xi , xj ) a arcului. Dacă λj − λi > l(xj − xi ), atunci
3.1. Probleme propuse 91

(k+1) (k)
λj := λi + l(xj − xi ) şi se trece la pasul următor, k := k + 1. Cu alte
(k+1) (k) (k)
cuvinte λj := min(λj , λi + l(xj − xi )).
(k) (k)
3. Se repetă etapa 2 cu noile valori obţinute până când λj −λi ≤ l(xj −xi )
pentru toate arcele (xi , xj ). În acest caz algoritmul se ı̂ncheie, iar arcele ce
compun drumul se determină ca şi ı̂n cazul algoritmului Bellman-Kalaba.

(2) ( ( ( ( (
λj − λi l(xj − xi ) λ1j − λ1i l λj − λi 2) l λj 3) − λi 3) l λj 4) − λi 4) l
λ2 − λ1 = ∞ > 5 5=5 5=5 5=5 5=5
λ3 − λ1 = ∞ > 3 3=3 3=3 3=3 3=3
λ4 − λ1 = ∞ > 7 7=7 7=7 7=7 7=7
λ3 − λ2 = ∞ > 2 -2 < 2 -2 < 2 -2 < 2 -2 < 2
λ5 − λ2 = ∞ > 4 ∞>4 4=4 4=4 4=4
λ5 − λ3 = ∞ > 6 ∞>6 6=6 6=6 6=6
λ6 − λ3 = ∞ > 5 ∞>5 12 > 5 5=5 5=5
λ5 − λ4 = ∞ > 1 -4 < 1 -4 < 1 -4 < 1 -4 < 1
λ6 − λ4 = ∞ > 8 ∞>8 8=8 1<8 1<8
λ6 − λ5 = ∞ > 4 ∞>4 6>4 -1 < 4 -1 < 4
λ7 − λ5 = ∞ > 10 ∞ > 10 ∞ > 10 10 = 10 8 < 10
λ7 − λ6 = ∞ > 9 ∞>9 ∞>9 11 > 9 9=9

În prima etapă toate inegalităţile sunt “ >” , toate valorile λj se modifică şi
se obţine:
(1) (1) (1)
λ1 := 0, λ2 := 0 + 5 = 5, λ3 := 0 + 3 = 3,
(1) (1) (1)
λ4 := 7, λ5 := ∞, λ6 := ∞,
(1)
λ7 := ∞.
În a doua etapă se modifică tot inegalităţile ce corespund inegalităţilor “ >”:
(2) (2) (2)
λ1 := 0, λ2 := 5, λ3 := 3,
(2) (2) (2)
λ4 := 7, λ5 := 5 + 4 = 9, λ6 := 15,
(2)
λ7 := ∞.

În etapa a treia se obţine:


(3) (3) (3)
λ1 := 0, λ2 := 5, λ3 := 3,
(3) (3) (3)
λ4 := 7, λ5 := 9, λ6 := 3 + 5 = 8,
(3)
λ7 := 9 + 10 = 19.
92 3. TEORIA GRAFELOR

În etapa a patra se obţine:


(4) (4) (4)
λ1 := 0, λ2 := 5, λ3 := 3,
(4) (4) (4)
λ4 := 7, λ5 := 9, λ6 := 8,
(4)
λ7 := 8 + 9 = 17

şi toate relaţiile sunt “ ≤”.


Astfel lungimea drumului minim dintre vârfurile x1 şi x7 este lmin (x1 , x7 ) =
(4)
λ7 = 17, iar arcele drumului sunt (x6 , x7 ), (x3 , x6 ), (x1 , x3 ).
Dacă se caută drumul maxim se aplică algoritmul lui Ford iniţializând
(0)
λi := −∞, i = 2, n şi făcându-se ı̂mbunătăţiri doar ı̂n cazul inegalităţii “ <”.

18 În graful dat simbolic prin

I 1 2 3 4 5 6 7 8 9 10 11 12
VI(I) 1 1 1 2 2 3 4 4 4 5 6 6
VF(I) 2 3 4 3 5 5 3 5 6 7 5 7
C(I) 6 3 7 1 4 5 5 3 6 10 5 14

Să se definească un flux şi să se calculeze valoarea fluxului ı̂n reţea. Se poate
determina un flux complet ı̂n reţea?

Soluţie:
Fluxurile se definesc ı̂n reţele de transport, grafuri orientate G = (X, U ),
fără circuite, cu un singur vârf de intrare( vârf care nu are predecesori sau nu
e extremitate finală pentru nici un arc) şi un singur vârf de ieşire( care nu are
succesori, nu este extremitate iniţială pentru nici un arc) şi cu valori pozitive
asociate arcelor (c(u) ≥ 0, u ∈ U ), valori numite capacităţi.
Dacă G = (X, U ) este o reţea de transport, se numeşte flux ı̂n reţea o funcţie
f : U → R+ care are proprietăţile:
1. ∀u ∈ U, f (u) ≤ c(u)
P P
2. ∀xi ∈ X, f (u) = f (u)( proprietatea de conservare).
+ −
u∈Uxi u∈Uxi
P P
Valoarea f (u) = f (u) = F unde x1 respectiv xn sunt vârfurile de
u∈Ux+1 u∈Ux−n
intrare respectiv ieşire, se numeşte valoarea fluxului ı̂n reţea.
Fluxul este complet dacă fiecare drum de la vârful de intrare la cel de ieşire
conţine cel puţin un arc saturat( arc u pentru care c(u) = f (u)).
3.1. Probleme propuse 93

Graful dat este reţea pentru că vârful x1 nu are predecesori şi este vârf de
intrare, iar x7 nu are succesori deci este vârf de ieşire. În plus nu există circuite
ı̂n graf.
Pentru reţeaua dată
5 x4
x3

3 7 x7
6 10
x1 3
1 5
14
6
x6
x2 x5 5
4

funcţia f : U → R+ definită prin

f ((x1 , x2 )) = 4, f ((x1 , x3 )) = 1, f ((x1 , x4 )) = 7, f ((x2 , x3 )) = 1,


f ((x2 , x5 )) = 3, f ((x3 , x5 )) = 2, f ((x4 , x3 )) = 0, f ((x4 , x5 )) = 1,
f ((x4 , x6 )) = 6, f ((x5 , x7 )) = 9, f ((x6 , x5 )) = 3, f ((x6 , x7 )) = 3
este un flux, iar valoarea sa este

X
F = f (u) = f ((x1 , x2 )) + f ((x1 , x3 )) + f ((x1 , x4 ))
u∈Ux+1
X
= 4 + 1 + 7 = 12 = f (u)
u∈Ux−7

Pe drumul d = {(x1 , x2 ), (x2 , x5 ), (x5 , x7 } nu există arc saturat, deci fluxul nu


este complet. Se obţine flux complet mărind fluxul pe acest drum cu cantitatea
min(c(u) − f (u)) = min(6 − 4, 4 − 3, 10 − 9) = 1 şi fluxul complet va fi
u∈d

f ((x1 , x2 )) = 5, f ((x1 , x3 )) = 1, f ((x1 , x4 )) = 7, f ((x2 , x3 )) = 1,


f ((x2 , x5 )) = 4, f ((x3 , x5 )) = 2, f ((x4 , x3 )) = 0, f ((x4 , x5 )) = 1,
f ((x4 , x6 )) = 6, f ((x5 , x7 )) = 10, f ((x6 , x5 )) = 3, f ((x6 , x7 )) = 3.
Valoarea fluxului complet este Fc = 13.

19 În graful precedent, să se determine fluxul maxim pornind de la fluxul com-
plet determinat.
94 3. TEORIA GRAFELOR

Soluţie:
Fluxul maxim ı̂n reţea se determină cu ajutorul algoritmului Ford-Fulkerson,
ale cărui etape sunt:

1. Se marchează vârful de intrare x1 cu +;

2. dacă vârful xi este marcat şi există arcul nesaturat (xi , xj ) cu flux pozitiv
atunci xj se marchează cu +i;

3. dacă vârful xi este marcat şi există arcul (xk , xi ) cu flux pozitiv atunci xk se
marchează cu −i;

4. se repetă etapele 2 şi 3 atâta timp cât este posibil.

Dacă prin acest procedeu de marcare se ajunge la vârful de ieşire xn atunci


fluxul complet nu este maxim şi el se poate majora cu cantitatea

m1 = min [c(u) − f (u), f (u1 )] ,


u,u1 ∈L

unde L este lanţul care trece prin toate vârfurile de la x1 la xn , u este arc
marcat conform pasului 2, iar u1 este arc marcat conform pasului 3. Majorarea
fluxului se face adunând cantitatea m1 la flucul de pe arcele u respectiv scăzând
cantitatea m1 din fluxul de pe arcele u1 . După fiecare majorare a fluxului se reia
procesul de marcare a vârfurilor, iar fluxul maxim se obţine atunci când vârful
xn nu mai poate fi marcat.
În cazul grafului dat fluxul complet de la care se porneşte are valoarea Fc = 13
şi se ı̂ncepe procesul de marcare astfel:

0 [5] x4
x3

x7

10
x1 [3]
[1]
5 [14]

3-2 x6
x2 x5 [5]
4

Se marchează vârful x1 cu +, apoi se marchează x2 respectiv x3 cu +1 pentru


că arcele sunt nesaturate. Se marchează x5 cu +3 pentru că arcul (x3 , x5 ) este
3.1. Probleme propuse 95

nesaturat, se marchează x6 cu -5 pentru că arcul (x6 , x5 ) are flux pozitiv. În final
se marchează vârful de ieşire x7 cu +6, arcul fiind nesaturat. Fluxul nu este
maxim şi poate fi majorat cu cantitatea m1 = min(3 − 1, 5 − 2, 3, 14 − 3) = 2 şi
devine
f (x1 , x3 ) = 1 + 2 = 3, f (x3 , x5 ) = 2 + 2 = 4,
f (x6 , x5 ) = 3 − 2 = 1, f (x6 , x7 ) = 3 + 2 = 5.
Se ı̂ncearcă o nouă marcare şi se observă că se poate marca doar x1 cu + şi x2
cu +1, deci fluxul obţinut este maxim şi are valoarea
Fmax = Fc + 2 = 13 + 2 = 15.

20 Să se determine elementele care caracterizează următoarea reţea de ac-


tivităţi:
x4 x5 x8
x11

x1 x3 x12 x13
x2
x10 x14

x6 x7 x9

Soluţie:
Se vor determina elementele

- ti – timpul cel mai devreme de realizarea a evenimentului xi ;

- si – timpul cel mai târziu de realizarea a evenimentului xi ;

- mij – rezerva( marja) liberă de timp a operaţiei (xi , xj );

- Mij – rezerva( marja) totală de timp a operaţiei (xi , xj );

astfel:
ti = lmax (x1 , xi );
sn = tn ;
si = sn − lmax (xi , xn ) = tn − lmax (xi , xn );
mij = tj − ti − l(xi − xj );
Mij = sj − ti − l(xi − xj ).
Determinarea acestor elemente se face ı̂ntr-un tabel de forma:
96 3. TEORIA GRAFELOR

i j lij ti tj sj mij Mij


1 2 2 0 2 2 0 0
2 3 9 2 16 16 5 5
2 4 5 2 7 7 0 0
2 6 3 2 5 12 0 7
3 7 4 16 20 20 0 0
4 5 7 7 14 14 0 0
5 3 2 14 16 16 0 0
5 8 5 14 30 30 11 11
6 7 8 5 20 20 7 7
7 8 10 20 30 30 0 0
7 9 9 20 29 34 0 5
7 10 9 20 29 34 0 5
8 11 8 30 38 38 0 0
9 13 10 29 45 45 6 6
10 12 5 29 38 39 4 5
11 13 7 38 45 45 0 0
12 13 6 38 45 45 1 1
13 14 3 45 48 48 0 0

21 Pentru a pune ı̂n funcţiune o mină pentru exploatarea unor minereuri, tre-
buie să se efectueze următoarele lucrări cu duratele precizate:

a) obţinerea aprobării de exploatare, 120 zile;

b) construirea unui drum de acces de 6 km, 180 zile;

c) transportul utilajelor şi pieselor a două sonde şi asamblarea lor, 3 zile;

d) construirea birourilor şi locuinţelor provizorii ale muncitorilor de foraj, 30


zile;

e) definitivarea, asfaltarea drumului de acces, 60 zile;

f ) rezolvarea problemei alimentării cu apă, 90 zile;

g) efectuarea forajelor, 240 zile;

h) săparea şi ı̂nzestrarea a 3 puţuri de mină, 180 zile;

i) transportul utilajelor de exploatare, 30 zile;


3.1. Probleme propuse 97

j) construirea locuinţelor definitive ale muncitorilor mineri, inginerilor, am-


plasarea birourilor, 240 zile;

k) proiectarea şi deschiderea galeriilor, 360 zile;

l) construirea staţiei de flotare, 240 zile.

Ordinea activităţilor ţine cont de următoarele: nici o activitate un ı̂ncepe ı̂nainte


de a avea aprobarea de exploatare; după obţinerea aprobării se construieşte dru-
mul de acces; după construirea ı̂n prima fază a drumului de acces pot ı̂ncepe,
chiar ı̂n paralel mai multe activităţi: transportul utilajelor şi pieselor celor două
sonde de foraj şi asamblarea lor, construirea birourilor şi locuinţelor provizorii,
definitivarea drumului de acces, rezolvarea problemei alimentării cu apă. Între
timp, după terminarea asamblării sondelor de foraj şi a construirii provizorii
a locuinţelor se pot efectua forajele necesare, premergătoare exploatării propriu-
zise. După terminarea activităţilor de mai sus se poate trece la săparea şi ı̂nzestrarea
puţurilor, la constryuirea locuinţelor definitive pentru muncitori, ingineri şi a
birourilor. După aceasta urmează transportul utilajelor de exploatare, deschiderea
galeriilor şi construirea staţiei de flotare.
Pe baza acestui raţionament se obţine următoarea reţea de activitate:
4
8 10
30
0 240 0 360 0
60
1 2 3
12
120 180 30 6 240 7 180 9 240

30 30 0
0
11
5

Determinănd drumul de lungime maximă (drumul critic) cotele asociate gra-


fului următor reprezintă datele cele mai apropiate evenimentelor (ı̂n căsuele din
stânga); inând seama de cota evenimentului 12 şi mergând ı̂n sens invers se pot
determina şi datele cele mai târzii ale evenimentelor (ı̂n căsua din dreapta). Se
vede că de-a lungul drunului critic cele două tipuri de date coincid:
98 3. TEORIA GRAFELOR

4 30 8 360 10 0
0 240 0
60
1 120 2 180 3 6 240 7 180 9 240 12
30

30 11 0
30 0
5

În privinţa marjelor libere şi totale, acestea se determină conform tabelului:

i j lij ti tj sj mij = tj − ti − lij Mij = sj − ti − lij


1 2 120 0 120 120 0 0
2 3 180 120 300 300 0 0
3 5 30 300 330 330 0 0
3 6 3 300 330 330 27 27
3 7 60 300 570 570 210 210
4 7 90 300 570 570 180 180
6 7 240 330 570 570 0 0
7 8 240 570 810 810 0 0
7 9 180 570 810 810 60 60
9 10 360 810 1170 1170 0 0
9 11 30 810 840 1170 0 350
9 12 240 810 1170 1170 120 120
3.2. Probleme propuse 99

3.2 Probleme propuse

1 Fie graful G reprezentat sagital prin:

x2
x3

x1

x4

x5

a) Să se scrie graful sub forma G = (X, U ), precizând mulţimea vârfurilor X şi
mulţimea arcelor U .

b) Să se reprezinte graful sub forma simbolică completând liniile I( numărul


muchiei sau numele ei), V I( extremitatea iniţială) şi V F ( extremitatea fi-
nală).

c) Să se descrie graful sub forma analitică G = (X, F ).

2 Pentru graful de la problema 1 să se dea

a) un exemplu de graf parţial G1

b) un exemplu de subgraf G2

c) să se scrie aceste grafe G1 şi G2 sub forma simbolică şi analitică.

3 În graful G = (X, U ) din figura următoare,


100 3. TEORIA GRAFELOR

x2
x3

x1

x4

x5 x6

să se indice

a) un drum elementar

b) un drum simplu

c) un circuit eulerian

4 Este graful următor hamiltonian? De ce?


x2
x3

x1

x4

x5

5 Să se scrie pentru grafele de la problemele 3 şi 4 matricile de incidenţă şi de


adiacenţă.

6 Reprezentaţi geometric( sagital), simbolic şi prin matricea de adiacenţă graful


dat analitic prin G = (X, F ), cu funcţia multivocă F dată prin

F (x1 ) = {x3 , x5 }, F (x2 ) = {x4 }, F (x3 ) = ∅, F (x4 ) = {x3 , x5 }, F (x5 ) = {x3 }.


3.2. Probleme propuse 101

Aflaţi numărul drumurilor de lungime doi ı̂n acest graf.

7 Fie graful G = (X, F ) definit prin

F (x1 ) = {x2 , x4 , x5 }, F (x2 ) = {x3 },

F (x3 ) = {x4 , x5 }, F (x4 ) = {x5 }, F (x5 ) = ∅.


Să se reprezinte graful sagital, simbolic, prin matricea de incidenţă şi să se
determine numărul drumurilor de lungime trei ı̂n acest graf.

8 În graful G = (X, U ) dat prin reprezentarea simbolică

I 1 2 3 4 5 6 7 8 9 10 11
V I(I) 1 1 1 1 2 2 2 3 3 4 5
V F (I) 2 3 4 6 3 4 5 4 5 5 6

Să se dea un exemplu de arbore de acoperire şi să se determine numărul


drumurilor de lungime trei, patru şi cinci ı̂n acest graf.

9 În graful dat prin următoarea reprezentare simbolică

I 1 2 3 4 5 6 7 8 9 10 11 12
V I(I) 1 1 1 2 3 3 4 4 5 5 6 6
V F (I) 3 4 6 4 2 5 5 6 2 6 1 2

Să se determine drumurile şi circuitele hamiltoniene.

10 Fie graful G = (X, U ) dat prin matricea valorilor


 
0 4 3 1 0 0
 0 0 8 0 9 0 
 
 0 0 0 0 1 0 
.
 
 0 0 2 0 0 10 

 
 7 0 0 2 0 15 
0 6 5 0 0 0

Să se reprezinte graful geometric şi să se determine un arbore de acoperire min-
imal.
102 3. TEORIA GRAFELOR

11 Să se determine pentru graful neorientat următor un arbore de acoperire de


valoare minimă.

x1 4 x2 5 x6 9 x8
1 6
3 2
x5
4 x3 3 4
8

2
x4 x7

12 Să se determine drumul de lungime minimă ı̂ntre vârfurile x1 şi x6 ı̂n graful
dat prin

I 1 2 3 4 5 6 7 8 9 10 11 12 13
V I(I) 1 1 1 1 1 2 2 2 2 3 4 4 5
V F (I) 2 3 4 5 6 3 4 5 6 6 5 6 6
L (I) 7 9 11 18 20 10 6 8 14 8 3 12 8

Să se determine drumurile şi circuitele hamiltoniene.

13 Să se determine drumul de lungime minimă ı̂ntre vârfurile x0 şi x5 ı̂n graful

7 x1 9
x0 x4
6 4
9

x2 8
10
10 11
x5
x3 12

14 Să se determine drumul de lungime maximă ı̂ntre vârfurile x0 şi x4 folosind


algoritmul Bellman- Kalaba ı̂n graful
3.2. Probleme propuse 103

x1 9
1
x0 x2
10
10 3
2
7 x3 2
x4
4 6
5
x5
x6
10

15 În graful de la problema 13 să se determine drumul de lungime minimă ı̂ntre


x0 şi x4 folosind algoritmul lui Ford.

16 Reprezentaţi sagital şi prin matricea valorilor graful

I 1 2 3 4 5 6 7 8 9 10
V I(I) 1 1 1 2 2 2 3 4 4 5
V F (I) 2 3 5 3 5 6 4 5 6 6
L (I) 16 18 20 12 13 7 12 11 3 10

Aflaţi drumul de valoare maximă de la x1 la x6 ı̂n acest graf.

17 Aflaţi drumul de valoare maximă de la x1 la x5 ı̂n graful

Vârf iniţial 1 1 1 2 3 3 4
Vârf final 2 4 5 3 4 5 5
Valoare arc 20 45 41 68 20 80 35
Este acest graf reţea de transport?

18 Verificaţi dacă graful dat mai jos este reţea de transport şi funcţia ϕ este
flux.

Vârf iniţial 1 1 1 2 3 3 4 4
Vârf final 2 3 4 3 5 5 3 5
C (u) 6 3 7 1 4 5 5 6
Valoare arc 4 1 4 1 3 2 0 4
Este acest flux complet? Care este valoarea sa?
104 3. TEORIA GRAFELOR

19 Calculaţi timpii cei mai târzii si , i = 1, 5 din următoarea reţea de activitate:

Vârf iniţial 1 1 2 2 3 3 4 4 5
Vârf final 2 3 4 5 4 6 5 6 6
Valoare arc 13 11 12 15 16 19 18 14 10

20 Aflaţi drumul critic ı̂n următoarele reţele de activităţi calculând indicatorii


numerici necesari

Vârf iniţial 1 1 1 2 2 3 4 4
a) Vârf final 2 3 5 3 5 5 3 5
Valoare arc 10 8 11 13 12 12 7 9

Vârf iniţial 1 1 2 2 3 3 4 4 5 6 7
b) Vârf final 2 3 4 5 4 6 5 6 7 7 8
Valoare arc 3 1 2 5 6 9 8 4 6 9 2

Vârf iniţial 1 1 1 1 1 2 2 3 3 3 3 4 5
c) Vârf final 2 3 4 5 6 4 5 2 4 5 6 5 6
Valoare arc 12 12 11 9 3 19 7 14 15 8 21 16 13
Bibliografie

[1] Blaga P., Lupaş A., Mureşan A., Matematici aplicate, vol.II, Editura
Promedia Plus, Cluj-Napoca, 1999.

[2] Coroian I., Pop S. Maria, Matematici cu aplicaţii ı̂n economie, Editura
Univ. de Nord Baia Mare, 2001.

[3] Fredon D., Mathematique, economie et question, Ed. Cedic, Paris, 1976.

[4] Mihăilă N., Popescu O., Matematici speciale aplicate ı̂n economie, Edi-
tura Didactică şi Pedagogică, Bucureşti, 1978.

[5] Mihoc Gh., Micu N., Teoria probabilităţilor şi statistică matematică, Ed-
itura Didactică şi Pedagogică, Bucureşti, 1980.

[6] Pop S. Maria, Capitole de matematici manageriale, Editura Risoprint,


Cluj-Napoca, 2003.

[7] Pop S. Maria, Taşcu I., Matematici aplicate, vol. I, Editura Cub Press
22, Baia Mare, 1998.

[8] Toadere I., Grafe. Teorie, algoritmi şi aplicaţii, Editura Albastră, Cluj-
Napoca, 2002.

[9] Tomescu I., Grafuri, Aplicaţii, Editura Didactică şi Pedagogică, vol. I-II,
Bucureşti, 1974.

[10] Tomescu I., Grafuri şi programare liniară, Editura Didactică şi Peda-
gogică, Bucureşti, 1975.
105
106 BIBLIOGRAFIE

[11] Vasiliu D. P., Matematici economice, Editura Eficient, Bucureşti, 1996.

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