Documente Academic
Documente Profesional
Documente Cultură
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ţă
Autorii
5
CAPITOLUL 1
Programare liniară
6
1.1. Probleme rezolvate 7
Funcţia de scop reprezintă beneficiul total realizat, deci se cere să se determine
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
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
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
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Ă
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
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
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Ă
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ţ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Ă
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.
x1 + 2x2 + 3x3 ≤ 15
2x1 + x2 + 5x3 ≥ 20 x1 , x2 , x3 ≥ 0.
x + 2x + x ≤ 5
1 2 3
(
2x1 + x2 + x3 = 6
x1 , x2 , x3 ≥ 0.
x1 + 2x2 + 4x3 ≤ 5
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
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
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
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
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Ă
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
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Ă
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 ∗
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
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
1 15 61
x1 = x2 = 0, x3 = , x4 = , fmax = .
4 2 2
1.2. Probleme propuse 27
Deoarece toate componentele soluţiei noi sunt nenegative, soluţia este admisibilă
şi optimă.
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
c) max f = x1 + x2 + 2x3
(
2x1 + 3x3 = 5
x1 , x2 , x3 ≥ 0
x1 + x2 + 2x3 = 3
f ) min f = 2x1 − x2 + x3
(
x1 + 2x2 ≥ 10
x1 , x2 , x3 ≥ 0
x1 + 3x2 + x3 = 6
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ă
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
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
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
32
Probleme rezolvate 33
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
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
cu condiţiile
x11 + x12 + x13 = 80
x21 + x22 + x23 = 120
x11 + x21 = 50
x12 + x22 = 90
x13 + x23 = 60
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.
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
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
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
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:
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
)
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
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
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
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
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:
(
19 − 7 ≥ 0
⇒ t = 19.
20 − t ≥ 0
(
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.
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
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 tabelulde 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.
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.
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.
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
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:
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
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.
a)
b)
c)
d)
62 Probleme de transport
e)
f)
g)
h)
2.2. Probleme propuse 63
i)
j)
a)
b)
a)
5 3 4 3
C ∗ = 6 2 4 5
4 7 5 2
!
5 2 4
b) C∗ =
3 4 4
c)
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
x1 x2
x6
x3
x5
x4
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 }
c) Două vârfuri sunt adiacente dacă ı̂ntre ele există un arc. Perechile de
vârfuri adiacente sunt:
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
Soluţie:
a) Graful sub formă geometrică se reprezintă astfel:
x1 x2
x3
x5
x4
x1 x2
x5
x4
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.
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
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 ).
x2 x3
x1 x4
x5
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:
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:
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 ).
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
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
I 1 2 3 4 5 6
VI 1 2 3 4 2 5
VF 2 3 4 2 5 1
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.
x2 x3
x1 x4
x5
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 .
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:
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
x8
.
x3
x4 x5
x7
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
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.
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
x1 9
x0 x4
6 4
x2 8
10
x5
x3
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
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
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 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.
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:
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.
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
(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 := ∞.
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
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
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:
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;
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
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.
x1 x3 x12 x13
x2
x10 x14
x6 x7 x9
Soluţie:
Se vor determina elementele
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
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:
c) transportul utilajelor şi pieselor a două sonde şi asamblarea lor, 3 zile;
30 30 0
0
11
5
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:
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) un exemplu de subgraf G2
c) să se scrie aceste grafe G1 şi G2 sub forma simbolică şi analitică.
x2
x3
x1
x4
x5 x6
să se indice
a) un drum elementar
b) un drum simplu
c) un circuit eulerian
x1
x4
x5
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
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 reprezinte graful geometric şi să se determine un arbore de acoperire min-
imal.
102 3. TEORIA GRAFELOR
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
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
x1 9
1
x0 x2
10
10 3
2
7 x3 2
x4
4 6
5
x5
x6
10
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
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
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
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.
[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