Sunteți pe pagina 1din 69

Aplicaţii la alg.

B - K:

Aplicaţia1: Fie G un graf orientat finit şi valuat, având


următoarea matrice V de valori (dată în tabelul de mai jos, ale cărui
linii şi coloane corespund vârfurilor lui G):

V x1 x2 x3 x4 x5 x6
x1 0 3 5 3 - -

x2 - 0 2 4 4 -

x3 - - 0 - 2 -
 
x4 - - - 0 4 2
x5 - - - - 0 5

x6 - - - - - 0

a) Determinaţi graful G şi elementele matricei arcelor A.


b) Determinaţi valoarea maximă a drumului sau drumurilor de la
x1 la x6, precum şi respectivul drum (sau respectivele drumuri).
c) Să se dea exemplu de o situaţie economică, ce poate conduce
la acest model de graf (sau aplicaţia1 cu text economic, sau model
economic unui graf orientat).

Rezolvare:

a) Determinăm întâi graful orientat finit valuat G, ce are ca


matrice de valori pe V, ţinând seama de definiţia acestei matrice, şi
anume:

V = (vij), i, j = 1, n , unde n = (numărul vârfurilor grafului


orientat evaluat G), şi cu:

0, dacă i = j (pentru elementele de pe diagonala principală),


vij =   , dacă i  j şi nu există arcul (xi, xj) în graf,
v(xi, xj), dacă graful conţine arcul (xi, xj).
În cazul când i  j şi graful nu conţine arcul (xi, xj), se pune vij =
= +  , pentru problema de determinare a drumurilor minime şi vij = -
 , pentru problema de determinare a drumurilor maxime.

La noi, se obţine:

2
x2 x 3
3 5 4
x 1 x 4
3 4 2 4
2
x 6 5 x 5

Într-adevăr:

∙n not .
 (numărul vârfurilor lui G) = 6, conform ipotezei;
∙din definiţia grafului orientat finit, rezultă că nu  (i, i) în G,
 i = 1, n = 1,6 , iar de aici, ţinând seama de definiţia lui A (adică a
matricei arcelor lui G), deducem că: aii = 0,  i = 1, n = 1,6 ;

∙din V (a se vedea ipoteza problemei), obţinem următoarele:

Lin1 a lui V:

v12 = 3  [  (1, 2) în G, conform definiţiei lui V]  [a12 = 1,


conform definiţiei lui A];

v13 = 5  [  (1, 3) în G, conform definiţiei lui V]  [a13 = 1,


conform definiţiei lui A];

v14 = 3  [  (1, 4) în G, conform definiţiei lui V]  [a14 = 1,


conform definiţiei lui A];
v15 = -   [nu  (1, 5) în G, conform definiţiei lui V]  [a15 =
0, conform definiţiei lui A];

v16 = -   [nu  (1, 6) în G, conform definiţiei lui V]  [a16 =


0, conform definiţiei lui A];

Lin2 a lui V:

v21 = -   [nu  (2, 1) în G sau (2, 1)   , conform definiţiei


lui V]  [a21 = 0, conform definiţiei lui A];

v23 = 2  [  (2, 3) în G sau (2, 3)   , conform definiţiei lui V]


  [a23 = 1, conform definiţiei lui A];

v24 = 4  [  (2, 4) în G, sau (2, 4)   , conform definiţiei lui V]


  [a24 = 1, conform definiţiei lui A];

v25 = 4  [  (2, 5) în G, sau (2, 5)   , conform definiţiei lui V]


  [a25 = 1, conform definiţiei lui A];

v26 = -   [nu  (2, 6) în G, sau (2, 6)   , conform definiţiei


lui V]  [a26 = 0, conform definiţiei lui A];

Lin3 a lui V:

v31 = -   [nu  (3, 1) în G sau (3, 1)   , conform definiţiei


lui V]  [a31 = 0, conform definiţiei lui A];

v32 = -   [nu  (3, 2) în G sau (3, 2)   , conform definiţiei


lui V]   [a32 = 0, conform definiţiei lui A];

v34 = -   [nu  (3, 4) în G, sau (3, 4)   , conform definiţiei


lui V]  [a34 = 0, conform definiţiei lui A];
v35 = 2  [  (3, 5) în G, sau (3, 5)   , conform definiţiei lui V]
  [a35 = 1, conform definiţiei lui A];

v36 = -   [nu  (3, 6) în G, sau (3, 6)   , conform definiţiei


lui V]  [a36 = 0, conform definiţiei lui A];

Lin4 a lui V:

v41 = -   [nu  (4, 1) în G sau (4, 1)   , conform definiţiei


lui V]  [a41 = 0, conform definiţiei lui A];

v42 = -   [nu  (4, 2) în G sau (4, 2)   , conform definiţiei


lui V]  [a42 = 0, conform definiţiei lui A];

v43 = -   [nu  (4, 3) în G, sau (4, 3)   , conform definiţiei


lui V]  [a43 = 0, conform definiţiei lui A];

v45 = 4  [  (4, 5) în G, sau (4, 5)   , conform definiţiei lui V]


  [a45 = 1, conform definiţiei lui A];

v46 = 2  [  (4, 6) în G, sau (4, 6)   , conform definiţiei lui V]


  [a46 = 0, conform definiţiei lui A];
Lin5 a lui V:

v51 = -   [nu  (5, 1) în G sau (5, 1)   , conform definiţiei


lui V]  [a51 = 0, conform definiţiei lui A];

v52 = -   [nu  (5, 2) în G sau (5, 2)   , conform definiţiei


lui V]  [a52 = 0, conform definiţiei lui A];

v53 = -   [nu  (5, 3) în G, sau (5, 3)   , conform definiţiei


lui V]  [a53 = 0, conform definiţiei lui A];
v54 = -   [nu  (5, 4) în G, sau (5, 4)   , conform definiţiei
lui V]  [a54 = 1, conform definiţiei lui A];

v56 = 5  [  (5, 6) în G, sau (5, 6)   , conform definiţiei lui V]


  [a56 = 1, conform definiţiei lui A];

Lin6 a lui V:

v61 = -   [nu  (6, 1) în G sau (6, 1)   , conform definiţiei


lui V]  [a51 = 0, conform definiţiei lui A];

v62 = -   [nu  (6, 2) în G sau (6, 2)   , conform definiţiei


lui V]  [a62 = 0, conform definiţiei lui A];

v63 = -   [nu  (6, 3) în G, sau (6, 3)   , conform definiţiei


lui V]  [a63 = 0, conform definiţiei lui A];

v64 = -   [nu  (6, 4) în G, sau (6, 4)   , conform definiţiei


lui V]  [a64 = 0, conform definiţiei lui A];

v65 = -   [nu  (6, 5) în G, sau (6, 5)   , conform definiţiei


lui V]  [a65 = 0, conform definiţiei lui A].

b) Trebuie determinată vmax[d(1, 6)], adică valoarea maximă a


drumului de la vârful i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui
G şi apoi dmax(1, 6), adică drumul maxim de la vârful i = 1 = x1 al lui G
la vârful fixat n = 6 = x6 al lui G, ceea ce înseamnă drumul de la vârful
i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui G, ce realizează
respectiva valoare maximă.

În acest sens, aplicăm algoritmul Bellman-Kalaba, ce determină


în general valoarea optimă (maximă sau minimă) a drumurilor de la
oricare (sau fiecare) vârf „i” = 1, n al lui G la un anumit vârf fixat al lui
G, fie acesta „n” al lui G, adică ultimul vârf al lui G.

Observaţii:

1) [Valoarea unui drum al lui G = (X,  , V), cu „n” vârfuri]


def .

def .
 [suma valorilor de pe arcele sale].

2) Dacă vârful fixat al lui G era altul decât vârful „n” al lui G,
deci decât ultimul vârf al lui G, atunci îl treceam pe ultimul loc, şi apoi
aplicam alg.B –K.

Algoritmul invocat revine la parcurgerea a 2 etape, şi anume:

Etapa1: Sub tabelul ce conţine pe V, ataşăm noi linii, notate cu:

(1)
m in = i6 , ( 2)
m in = i6 , ( 3)
m in , ...,
=i6
(k )
m in =i6 ,...,

care dau valorile maxime ale drumurilor lui G = (X,  , V), de la


fiecare (oricare) vârf „i” al lui G la vârful fixat „n = 6” al lui G, cu i =
= 1, n = 1,6 , formate din:

1, 2, 3, ..., k,... (arce),

adică de lungimi respectiv egale cu:

1, 2, 3, ..., k,... (arce).

Operaţia de ataşare a liniilor suplimentare continuă până când


obţinem 2 astfel de linii consecutive identice, caz în care alg.B – K se
opreşte, deoarece aici s-au obţinut valorile maxime căutate, adică ale
drumurilor lui G = (X,  , V), de la fiecare (oricare) vârf „i” al lui G
la vârful fixat „n = 6” al lui G, cu i = 1, n = 1,6 , indiferent de numărul
de arce, ce formează respectivele drumuri (sau indiferent de numărul
de arce, ce străbat respectivele drumuri).

Observaţii:

1) [Lungimea unui drum al lui G = (X,  )]


def .
 [numărul de
arce din G, ce îl formează].

2) Linia m in(1) = i6 = (valoarea maximă a drumurilor lui G, formate


dintr-un arc, de la „i” la „n = 6”) = (valoarea însăşi a arcului (i, n) = (i,
6)) = vint = vi6t,  i = 1, n = 1,6 .

Matricea valorilor V împreună cu liniile suplimentare, se găsesc


în tabelul 4.

Tabelul 4:

V x1 x2 x3 x4 x5 x6
x1 0 3 5 3 - -
x2 -  0 2 4 4 -
x3 -  - 0 - 2 -

x4 -  - - 0 4 2
x5 -  - - - 0 5

x6 -  - - - - 0

mi6
(1)
- - - 2 5 0
m
( 2)
i6 5 9 7 9 5 0
m
( 3)
i6 12 13 7 9 5 0
m
( 4)
i6 16 13 7 9 5 0
m
(5)
i6 16 13 7 9 5 0
Linia notată cu (1)
mi6 corespunde cu coloana x6 a matricei V, fiind
scrisă însă transpus.

Elementele liniei mi6


( 2)
au fost calculate succesiv astfel:

( 2)
m16 = max{0 -  = -  , 3 -  = -  , 5 -  = -  , 3 + 2 = 5, -  + 5 = -
,
-  + 0 = -  } = 5,
( 2)
m 26 = max{-  -  = -  , 0 -  = -  , 2 -  = -  , 4 + 2 = 6, 4 + 5 =
9, -  + 0 = -  } = 9,
( 2)
m36 = max{-  -  = -  , -  -  = -  , 0 -  = -  , -  + 2 = -  , 2
+ 5 = 7, -  + 0 = -  } = 7,
( 2)
m 46 = max{-  -  = -  , -  -  = -  , -  -  = -  , 0 + 2 = 2, 4 +
5 = 9,
2 + 0 = 2} = 9,
( 2)
m56 = max{-  -  = -  , -  -  = -  , -  -  = -  , -  + 2 = -  ,
0 + 5 = 5, 5 + 0 = 5} = 5,
( 2)
m66 = max{-  -  = -  , -  -  = -  , -  -  = -  , -  + 2 = -  ,
- +
+ 5= -  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16( 2) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m16 .

Pentru ? = (determinarea) lui m26( 2) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m 26 .
Pentru ? = (determinarea) lui m36( 2) am suprapus linia „3 = x3” a
lui V, adică linia „v3i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m36 .

Pentru ? = (determinarea) lui m46( 2) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m 46 .

Pentru ? = (determinarea) lui m56( 2) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m56 .

Pentru ? = (determinarea) lui m66( 2) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 2)
m66 .

Elementele liniei ( 3)
mi6 au fost calculate succesiv astfel:

( 3)
m16 = max{0 + 5 = 5, 3 + 9 = 12, 5 + 7 = 12, 3 + 9 = 12, -  + 5 = -  ,
-  + 0 = -  } = 12,
( 3)
m 26 = max{-  + 5 = -  , 0 + 9 = 9, 2 + 7 = 9, 4 + 9 = 13, 4 + 5 = 9, -
+
+ 0= -  } = 13,
m36( 3)
= max{-  + 5 = -  , -  + 9 = -  , 0 + 7 = 7, -  + 9 = -  , 2 + 5
= 7,
-  + 0 = -  } = 7,
( 3)
m 46 = max{-  + 5 = -  , -  + 9 = -  , -  + 7 = -  , 0 + 9 = 9, 4 + 5
= 9,
2 + 0 = 2} = 9,
( 3)
m56 = max{-  + 5 = -  , -  + 9 = -  , -  + 7 = -  , -  + 9 = -  , 0
+ 5 = = 5, 5 + 0 = 5} = 5,
( 3)
m66 = max{-  + 5 = -  , -  + 9 = -  , -  - 7 = -  , -  + 9 = -  , -
 +5=
= -  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16(3) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m16 .

Pentru ? = (determinarea) lui m26(3) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m 26 .

Pentru ? = (determinarea) lui m36(3) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m36 .

Pentru ? = (determinarea) lui m46(3) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m 46 .

Pentru ? = (determinarea) lui m56(3) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m56 .
Pentru ? = (determinarea) lui m66(3) am suprapus linia „6 = x6” a
lui V, adică linia „v6i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 3)
m66 .

Elementele liniei ( 4)
m i6 au fost calculate succesiv astfel:

( 4)
m16 = max{0 + 12 = 12, 3 + 13 = 16, 5 + 7 = 12, 3 + 9 = 12, -  + 5 =
= -  , -  + 0 = -  } = 16,
m26( 4)
= max{-  + 12 = -  , 0 + 13 = 13, 2 + 7 = 9, 4 + 9 = 13, 4 + 5 =
9,
-  + 0 = -  } = 13,
m36( 4)
= max{-  + 12 = -  , -  + 13 = -  , 0 + 7 = 7, -  + 9 = -  , 2 +
5 = = 7, -  + 0 = -  } = 7,
( 4)
m 46 = max{-  + 12 = -  , -  + 13 = -  , -  + 7 = -  , 0 + 9 = 9, 4 +
5 = = 9, 2 + 0 = 2} = 9,
m56( 4)
= max{-  + 12 = -  , -  + 13 = -  , -  + 7 = -  , -  + 9 = -  ,
0+
+ 5 = 5, 5 + 0 = 5} = 5.
m66( 4)
= max{-  + 12 = -  , -  + 13 = -  , -  - 7 = -  , -  + 9 = -  ,
- +
+ 5= -  , 0 + 0 = 0} = = 0.

Observaţii:

Pentru ? = (determinarea) lui m16( 4) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m16 .

Pentru ? = (determinarea) lui m26( 4) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m26 .

Pentru ? = (determinarea) lui m36( 4) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m36 .

Pentru ? = (determinarea) lui m46( 4) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m46 .

Pentru ? = (determinarea) lui m56( 4) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m56 .

Pentru ? = (determinarea) lui m66( 4) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 4)
m66 .

Elementele liniei ( 5)
mi6 au fost calculate succesiv astfel:

(5)
m16 = max{0 + 16 = 16, 3 + 13 = 16, 5 + 7 = 12, 3 + 9 = 12, -  + 5 =
-  , -  + 0 = -  } = 16,
( 5)
m 26 = max{-  + 16 = -  , 0 + 13 = 13, 2 + 7 = 9, 4 + 9 = 13, 4 + 5 =
9,
-  + 0 = -  } = 13,
m36( 5)
= max{-  + 16 = -  , -  + 13 = -  , 0 + 7 = 7, -  + 9 = -  , 2 +
5 = = 7, -  + 0 = -  } = 7,
(5)
m46 = max{-  + 16 = -  , -  + 13 = -  , -  + 7 = -  , 0 + 9 = 9, 4 +
5 = = 9, 2 + 0 = 2} = 9,
( 5)
m56 = max{-  + 16 = -  , -  + 13 = -  , -  + 7 = -  , -  + 9 = -  ,
0+
+ 5 = 5, 5 + 0 = 5} = 5.
( 5)
m66 = max{-  + 16 = -  , -  + 13 = -  , -  - 7 = -  , -  + 9 = -  ,
- +
+ 5 = -  , 0 + 0 = 0} = = 0.

Observaţii:

Pentru ? = (determinarea) lui m16(5) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
(5)
m16 .

Pentru ? = (determinarea) lui m26(5) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 5)
m 26 .

Pentru ? = (determinarea) lui m36(5) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
(5)
m36 .

Pentru ? = (determinarea) lui m46(5) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 5)
m 46 .

Pentru ? = (determinarea) lui m56(5) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
(5)
m56 .

Pentru ? = (determinarea) lui m66(5) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(64) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea maximă a respectivelor sume, care ne-a condus la valoarea
( 5)
m66 .

Deoarece liniile m i(64) şi m i(65) sunt identice, calculul acesta s-a


oprit la linia m i(65) şi deci aici s-au obţinut tocmai valorile maxime
căutate, ale drumurilor de la fiecare vârf „i” al lui G la vârful fixat „n =
6” al lui G, indiferent de numărul de arce ce formează (ce străbat)
respectivele drumuri, iar valoarea comună a liniilor m i(64) şi m i(65) o
notăm cu m i 6 :

= mi6  m i6 = mi6 .
( 4) (5) ( 4)
m i6

Interesează primul element m16 al acestei linii m i 6 , care


reprezintă valoarea maximă a drumurilor de la „1 = x1” al lui G la „6
= x6” al lui G.

Prin urmare, din cercetarea tabelului 4, se observă că drumul de


la x1 la x6, cu valoare maximă, corespunde valorii 16.

Valoarea maximă a drumului de la x1 la x6 este cea care măreşte


câştigul cu 16 u.b..

Etapa2:

? = (determinăm) = dmax(1, 6) = (drumul de la „1” al lui G la „6”


al lui G, de valoare maximă 16), adică:
? = (determinăm) = (vârfurile şi arcele) drumului sau
drumurilor de la „1” al lui G la „6” al lui G, ce realizează valoarea
maximă 16 obţinută la etapa1, astfel:

dmax(1, 6) = (este de forma) = (1, i, ..., 6), cu ? = i  1; evident:

primul + subdrumul lui dmax(1, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(1, i) din G drum de valoare maximă
de la „i” din G la „6” din G,
egală cu m i 6

16 = m16 = v1i + m i6 , cu ? = i  1; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v1i X 3 5 3 - -
m i6 X 13 7 9 5 0
v1i + mi6 =16 X 16 12 12 - 
max

Căutând sumele de valoare maximă, adică 16, rezultă că avem o


singură variantă, şi anume: i = 2 (printre sumele elementelor de pe
linia v1i cu elementele corespunzătoare liniei m i(65) , cea mai mare este
egală cu 16 şi se atinge pentru valoarea v12 = 3; înseamnă că primul
arc al drumului căutat este (x1, x2) = (1, 2)).

Aşadar, drumul de valoare maximă m16 = 16, care este unic, are
forma:

dmax(1, 6) = (x1, x2, ..., x6) = (1, 2, ..., 6).


Din drumul optim de mai sus (de valoare maximă m16 = 16)
rămâne (sau extragem) subdrumul (lui dmax(1, 6)), care este la rândul
său drum de valoare maximă de la „2” din G la „6” din G, egală cu
m 26 = 13 şi pe care-l notăm cu:

dmax(2, 6) = (fiind de forma) = (2, i, ..., 6), cu ? = i  1, 2; evident:

primul + subdrumul lui dmax(2, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(2, i) din G drum de valoare maximă
de la „i” din G la „6” din G,
egală cu m i 6

13 = m 26 = v2i + m i6 , cu ? = i  1, 2; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6
v2i X X 2 4 4 -
m i6 X X 7 9 5 0
v2i + m i 6 =13 X X 9 13 9 -
max

Rezultă că i = 4 (printre sumele dintre elementele corespunzătoare


liniilor v2i şi m i(65) , cea mai mare este egală cu 13 şi se atinge pentru
valoarea v24 = 4; înseamnă că al doilea arc al drumului maxim este (x2,
x4)).

Aşadar, subdrumul de valoare maximă m 26 = 13, unic este de


forma:

dmax(2, 6) = (x2, x4, ..., x6) = (2, 4, ..., 6).


Din drumul optim de mai sus (de valoare maximă m 26 = 13)
rămâne (sau extragem) subdrumul (lui dmax(2, 6)), care este la rândul
său drum de valoare maximă de la „4” din G la „6” din G, egală cu
m 46 = 9 şi pe care-l notăm cu:

dmax(4, 6) = (fiind de forma) = (4, i, ..., 6), cu ? = i  1, 2, 4; evident:

primul + subdrumul lui dmax(4, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(4, i) din G drum de valoare maximă
de la „i” din G la „6” din G,
egală cu m i 6
9 = m 46 = v4i + m i 6 , cu ? = i  1, 2 4; organizăm calculele în
tabelul de mai jos:

i 1 2 3 4 5 6
v4i X X - X 4 2
m i6 X X 7 X 5 0
v4i + m i 6 =9 X X - X 9 2
max

Rezultă că i = 5 (printre sumele dintre elementele corespunzătoare


liniilor v4i şi m i(65) , cea mai mare este egală cu 9 şi se atinge pentru
valoarea v45 = 4; înseamnă că al treilea arc al drumului maxim este (x4,
x5)).

Aşadar, subdrumul de valoare maximă m 46 = 9, unic este de


forma:

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


Din drumul optim de mai sus (de valoare maximă m 56 = 5)
rămâne (sau extragem) subdrumul (lui dmax(4, 6)), care este la rândul
său drum de valoare maximă de la „5” din G la „6” din G, egală cu
m 56 = 5 şi pe care-l notăm cu:

dmax(5, 6) = (fiind de forma) = (5, i, ..., 6), cu ? = i  1, 2, 4, 5; evident:

primul + subdrumul lui dmax(5, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(5, i) din G drum de valoare maximă
de la „i” din G la „6” din G,
egală cu m i 6

5 = m 56 = v5i + mi6 , cu ? = i  1, 2 4, 5; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6
v5i X X - X X 5
m i6 X X 7 X X 0
v5i + m i 6 =5 X X - X X 5
max

Rezultă că i = 6 (printre sumele dintre elementele corespunzătoare


liniilor v5i şi m i(65) , cea mai mare este egală cu 5 şi se atinge pentru
valoarea v56 = 5; înseamnă că al patrulea şi ultimul arc al drumului
maxim este (x5, x6)).

Aşadar, subdrumul de valoare maximă m 56 = 5, unic este de


forma:

dmax(5, 6) = (x5, x6).


Drumul căutat, format din 4 arce, este:

3 + 4 + 4 + 5 = 7 + 9 = 16

dmax(1, 6) = (x1, x2, x4, x5, x6) = (1, 2, 4, 5, 6).

(sau de lungime 4 arce)

Deci b) este rezolvat.

c) „În scopul prezentării la un târg internaţional un produs este


supus unor operaţii menite să-i mărească valoarea. Există mai multe
posibilităţi de îmbunătăţire a calităţilor respectivului produs.

În acest studiu s-a constituit ca model un graf, în care produsul


iniţial este notat prin vârful x1, diversele alte stadii de prelucrare
suplimentară a sa prin vârfurile x2, x3, x4 şi x5, iar stadiul final al
produsului apt pentru a fi prezentat la târgul internaţional prin nodul
„x6”.

Tehnologiile corespunzând diverselor variante de îmbunătăţire


calitativă sunt reprezentate prin drumuri în model (un arc reprezintă
posibilitatea de trecere de la un stadiu de prelucrare la un alt stadiu).

În tabelul din enunţul problemei sunt trecute câştigurile, pe care


le poate aduce fiecare prelucrare, ce îmbunătăţeşte produsul sau pe
arce sunt trecute câştigurile pe care le poate aduce fiecare prelucrare,
ce îmbunătăţeşte produsul.

i) Determinaţi graful G.
ii) Să se determine tehnologia care va da un câştig maxim.
(Pentru c) al problemei; tehnologia corespunzătoare rutei optime (mai
precis, de valoare maximă) între 2 vârfuri fixate, şi anume:
x1 = (produsul iniţial),

x6 = (produsul prelucrat final).

Rezolvăm cu algoritmul Bellman-Kalaba (pentru vârful final x6 al


drumului fixat).

Tehnologia corespunzătoare (drumul cu valoarea maximă 16)


este următorul, şi anume: d(x1, x6) = (x1, x2, x4, x5, x6) = (1, 2, 4, 5, 6),
aşa după cum rezultă din rezolvarea lui c) prezentată mai sus)”.

Aplicaţia2: Fie G un graf orientat finit şi valuat, având


următoarea matrice V de valori (dată în tabelul de mai jos, ale cărui
linii şi coloane corespund vârfurilor lui G):

V x1 x2 x3 x4 x5 x6
x1 0 5  10 8 
x2  0  9 5 
x3 3  0 5  10
x4    0 8 
x5     0 9
x6      0

a) Determinaţi graful G şi elementele matricei arcelor A.


b) Determinaţi valoarea minimă a drumului sau drumurilor de la
x1 la x6, precum şi respectivul drum (sau respectivele drumuri).
c) Să se dea exemplu de o situaţie economică, ce poate conduce
la acest model de graf (sau aplicaţia2 cu text economic, sau model
economic asociat unui graf orientat finit G).

Rezolvare:
a) Determinăm întâi graful orientat finit valuat G, ce are ca
matrice de valori pe V, ţinând seama de definiţia acestei matrice, şi
anume:

V = (vij), i, j = 1, n , unde n = (numărul vârfurilor grafului


orientat evaluat G), şi cu:

0, dacă i = j (pentru elementele de pe diagonala principală),


vij =   , dacă i  j şi nu există arcul (xi, xj) în graf,
v(xi, xj), dacă graful conţine arcul (xi, xj).

În cazul când i  j şi graful nu conţine arcul (xi, xj), se pune vij =


= +  , pentru problema de determinare a drumurilor minime şi vij = -
 , pentru problema de determinare a drumurilor maxime.

La noi, se obţine:

x 2 x3
5 9 5
3
x 1 x4
10
8 5 8
10
x 6 x 5
9

Într-adevăr:

∙n not .
 (numărul vârfurilor lui G) = 6, conform ipotezei;

∙din definiţia grafului orientat finit, rezultă că nu  (i, i) în G,


 i = 1, n = 1,6 , iar de aici, ţinând seama de definiţia lui A (adică a
matricei arcelor lui G), deducem că: aii = 0,  i = 1, n = 1,6 ;

∙din V (a se vedea ipoteza problemei), obţinem următoarele:

Lin1 a lui V:
v12 = 5  [  (1, 2) în G, conform definiţiei lui V]  [a12 = 1,
conform definiţiei lui A];

v13 =   [nu  (1, 3) în G, conform definiţiei lui V]  [a13 = 0,


conform definiţiei lui A];

v14 = 10  [  (1, 4) în G, conform definiţiei lui V]  [a14 = 1,


conform definiţiei lui A];

v15 = 8  [  (1, 5) în G, conform definiţiei lui V]  [a15 = 1,


conform definiţiei lui A];

v16 =   [nu  (1, 6) în G, conform definiţiei lui V]  [a16 = 0,


conform definiţiei lui A];

Lin2 a lui V:

v21 =   [nu  (2, 1) în G sau (2, 1)   , conform definiţiei lui


V]  [a21 = 0, conform definiţiei lui A];

v23 =   [nu  (2, 3) în G sau (2, 3)   , conform definiţiei lui


V]   [a23 = 0, conform definiţiei lui A];

v24 = 9  [  (2, 4) în G, sau (2, 4)   , conform definiţiei lui V]


  [a24 = 1, conform definiţiei lui A];

v25 = 5  [  (2, 5) în G, sau (2, 5)   , conform definiţiei lui V]


  [a25 = 1, conform definiţiei lui A];

v26 =   [nu  (2, 6) în G, sau (2, 6)   , conform definiţiei


lui V]  [a26 = 0, conform definiţiei lui A];
Lin3 a lui V:

v31 = 3  [  (3, 1) în G sau (3, 1)   , conform definiţiei lui V]


  [a31 = 1, conform definiţiei lui A];

v32 =   [nu  (3, 2) în G sau (3, 2)   , conform definiţiei lui


V]  [a32 = 0, conform definiţiei lui A];

v34 = 5  [  (3, 4) în G, sau (3, 4)   , conform definiţiei lui V]


 [a34 = 1, conform definiţiei lui A];

v35 =   [nu  (3, 5) în G, sau (3, 5)   , conform definiţiei


lui V]  [a35 = 0, conform definiţiei lui A];

v36 = 10  [  (3, 6) în G, sau (3, 6)   , conform definiţiei lui


V]  [a36 = 1, conform definiţiei lui A];

Lin4 a lui V:

v41 =   [nu  (4, 1) în G sau (4, 1)   , conform definiţiei lui


V]  [a41 = 0, conform definiţiei lui A];

v42 =   [nu  (4, 2) în G sau (4, 2)   , conform definiţiei lui


V]  [a42 = 0, conform definiţiei lui A];

v43 =   [nu  (4, 3) în G, sau (4, 3)   , conform definiţiei


lui V]  [a43 = 0, conform definiţiei lui A];

v45 = 8  [  (4, 5) în G, sau (4, 5)   , conform definiţiei lui V]


  [a45 = 1, conform definiţiei lui A];

v46 =   [nu  (4, 6) în G, sau (4, 6)   , conform definiţiei


lui V]  [a46 = 0, conform definiţiei lui A];
Lin5 a lui V:

v51 =   [nu  (5, 1) în G sau (5, 1)   , conform definiţiei lui


V]  [a51 = 0, conform definiţiei lui A];

v52 =   [nu  (5, 2) în G sau (5, 2)   , conform definiţiei lui


V]  [a52 = 0, conform definiţiei lui A];

v53 =   [nu  (5, 3) în G, sau (5, 3)   , conform definiţiei


lui V]  [a53 = 0, conform definiţiei lui A];

v54 =   [nu  (5, 4) în G, sau (5, 4)   , conform definiţiei


lui V]  [a54 = 1, conform definiţiei lui A];

v56 = 9  [  (5, 6) în G, sau (5, 6)   , conform definiţiei lui V]


  [a56 = 1, conform definiţiei lui A];

Lin6 a lui V:

v61 =   [nu  (6, 1) în G sau (6, 1)   , conform definiţiei lui


V]  [a51 = 0, conform definiţiei lui A];

v62 =   [nu  (6, 2) în G sau (6, 2)   , conform definiţiei lui


V]  [a62 = 0, conform definiţiei lui A];

v63 =   [nu  (6, 3) în G, sau (6, 3)   , conform definiţiei


lui V]  [a63 = 0, conform definiţiei lui A];

v64 =   [nu  (6, 4) în G, sau (6, 4)   , conform definiţiei


lui V]  [a64 = 0, conform definiţiei lui A];
v65 =   [nu  (6, 5) în G, sau (6, 5)   , conform definiţiei
lui V]  [a65 = 0, conform definiţiei lui A].

b) Trebuie determinată vmin[d(1, 6)], adică valoarea minimă a


drumului de la vârful i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui
G şi apoi dmin(1, 6), adică drumul minim de la vârful i = 1 = x1 al lui G
la vârful fixat n = 6 = x6 al lui G, ceea ce înseamnă drumul de la vârful
i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui G, ce realizează
respectiva valoare minimă.

În acest sens, aplicăm algoritmul Bellman-Kalaba, ce determină


în general valoarea optimă (maximă sau minimă) a drumurilor de la
oricare (sau fiecare) vârf „i” = 1, n al lui G la un anumit vârf fixat al lui
G, fie acesta „n” al lui G, adică ultimul vârf al lui G.

Observaţii:

1) [Valoarea unui drum al lui G = (X,  , V), cu „n” vârfuri]


def .

def .
 [suma valorilor de pe arcele sale].

2) Dacă vârful fixat al lui G era altul decât vârful „n” al lui G,
deci decât ultimul vârf al lui G, atunci îl treceam pe ultimul loc, şi apoi
aplicam alg.B –K.

Algoritmul invocat revine la parcurgerea a 2 etape, şi anume:

Etapa1: Sub tabelul ce conţine pe V, ataşăm noi linii, notate cu:

(1)
m in = i6 , ( 2)
m in = i6 , ( 3)
m in , ...,
=i6
(k )
m in =i6 ,...,
care dau valorile minime ale drumurilor lui G = (X,  , V), de la
fiecare (oricare) vârf „i” al lui G la vârful fixat „n = 6” al lui G, cu i =
= 1, n = 1,6 , formate din:

1, 2, 3, ..., k,... (arce),

adică de lungimi respectiv egale cu:

1, 2, 3, ..., k,... (arce).

Operaţia de ataşare a liniilor suplimentare continuă până când


obţinem 2 astfel de linii consecutive identice, caz în care alg.B – K se
opreşte, deoarece aici s-au obţinut valorile minime căutate, adică ale
drumurilor lui G = (X,  , V), de la fiecare (oricare) vârf „i” al lui G
la vârful fixat „n = 6” al lui G, cu i = 1, n = 1,6 , indiferent de numărul
de arce, ce formează respectivele drumuri (sau indiferent de numărul
de arce, ce străbat respectivele drumuri).

Observaţii:

1) [Lungimea unui drum al lui G = (X,  )]


def .
 [numărul de
arce din G, ce îl formează].

2) Linia m in(1) = i6 = (valoarea minimă a drumurilor lui G, formate


dintr-un arc, de la „i” la „n = 6”) = (valoarea însăşi a arcului (i, n) = (i,
6)) = vint = vi6t,  i = 1, n = 1,6 .

Matricea valorilor V împreună cu liniile suplimentare, se găsesc


în tabelul 9.

Tabelul 9:
V x1 x2 x3 x4 x5 x6
x1 0 5  10 8 
x2  0  9 5 
x3 3  0 5  10
x4    0 8 
x5     0 9
x6      0
mi6   10  9 0
(1)

m i 6 17 14 10 17 9 0
( 2)

m i 6 17 14 10 17 9 0
( 3)

Linia notată cu mi6


(1)
corespunde cu coloana x6 a matricei V, fiind
scrisă însă transpus.

Elementele liniei ( 2)
mi6 au fost calculate succesiv astfel:

( 2)
m16 = min{0 +  =  , 5 +  =  ,  + 10 =  , 10 +  =  , 8 + 9
= 17,  + 0 =  } = 17,
( 2)
m26 = min{  +  =  , 0 +  =  ,  + 10 =  , 9 +  =  , 5 + 9
= 14,  + 0 =  } = 14,
( 2)
m36 = min{3 +  =  ,  +  =  , 0 + 10 = 10, 5 +  =  ,  + 9
=  , 10 + 0 = 10} = 10,
( 2)
m46 = min{  +  =  ,  +  =  ,  + 10 =  , 0 +  =  , 8 + 9
= 17,  + 0 =  } = 17,
( 2)
m56 = min{  +  =  ,  +  =  ,  + 10 =  ,  +  =  , 0 +
9 = 9,
9 + 0 = 9} = 9,
( 2)
m66 = min{  +  =  ,  +  =  ,  + 10 =  ,  +  =  ,  +
9 = 9,
0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16( 2) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m16 .

Pentru ? = (determinarea) lui m26( 2) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m 26 .

Pentru ? = (determinarea) lui m36( 2) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m36 .

Pentru ? = (determinarea) lui m46( 2) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m 46 .

Pentru ? = (determinarea) lui m56( 2) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m56 .

Pentru ? = (determinarea) lui m66( 2) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m66 .

Elementele liniei ( 3)
mi6 au fost calculate succesiv astfel:

( 3)
m16 = min{0 + 17 = 17, 5 + 14 = 19,  + 10 =  , 10 + 17 = 27, 8 + 9
= = 17,  + 0 =  } = 17,
( 3)
m26 = min{  + 17 =  , 0 + 14 = 14,  + 10 =  , 9 + 17 = 26, 5 + 9
= =14,  + 0 =  } = 14,
( 3)
m36 = min{3 +  =  ,  +  =  , 0 + 10 =  , 5 +  =  ,  + 9
=  , 10 + 0 = 10} = 10,
( 3)
m46 = min{  +  =  ,  +  =  ,  + 10 =  , 0 +  =  , 8 + 9
= 17,  + 0 =  } = 17,
( 3)
m56 = min{  +  =  ,  +  =  ,  + 10 =  ,  +  =  , 0 +
9 = 9,
9+ 0 = 9} = 9,
( 3)
m66 = min{  +  =  ,  +  =  ,  + 10 =  ,  +  =  ,  +
9 =  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16(3) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m16 .

Pentru ? = (determinarea) lui m26(3) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m26 .

Pentru ? = (determinarea) lui m36(3) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m36 .

Pentru ? = (determinarea) lui m46(3) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m46 .
Pentru ? = (determinarea) lui m56(3) am suprapus linia „5 = x5” a
lui V, adică linia „v5i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m56 .

Pentru ? = (determinarea) lui m66(3) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m66 .

Deoarece liniile m i(62) şi m i(63) sunt identice, calculul acesta s-a


oprit la linia m i(63) şi deci aici s-au obţinut tocmai valorile minime
căutate, ale drumurilor de la fiecare vârf „i” al lui G la vârful fixat „n =
6” al lui G, indiferent de numărul de arce ce formează (ce străbat)
respectivele drumuri, iar valoarea comună a liniilor m i(62) şi m i(63) o
notăm cu m i 6 :

= mi6  mi6 = mi6 .


( 2) ( 3) ( 2)
mi6

Interesează primul element m16 al acestei linii m i 6 , care


reprezintă valoarea minimă a drumurilor de la „1 = x1” al lui G la „6
= x6” al lui G.

Prin urmare, din cercetarea tabelului 9, se observă că drumul de


la x1 la x6, cu valoare minimă, corespunde valorii 17.

Etapa2:

? = (determinăm) = dmin(1, 6) = (drumul de la „1” al lui G la „6”


al lui G, de valoare minimă 17), adică:
? = (determinăm) = (vârfurile şi arcele) drumului sau
drumurilor de la „1” al lui G la „6” al lui G, ce realizează valoarea
minimă 17 obţinută la etapa1, astfel:

dmin(1, 6) = (este de forma) = (1, i, ..., 6), cu ? = i  1; evident:

primul + subdrumul lui dmin(1, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(1, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

17 = m16 = v1i + m i6 , cu ? = i  1; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v1i X 5  10 8 
m i6 X 14 10 17 9 0
v1i + m i6 X 19  27 17 
=17 min

Căutând sumele de valoare minimă, adică 17, rezultă că avem o


singură variantă, şi anume: i = 5 (printre sumele elementelor de pe
linia v1i cu elementele corespunzătoare liniei m i(63) , cea mai mică este
egală cu 17 şi se atinge pentru valoarea v15 = 8; înseamnă că primul
arc al drumului căutat este (x1, x5) = (1, 5)).

Aşadar, drumul de valoare minimă m16 = 17, care este unic, are
forma:

dmin(1, 6) = (x1, x5, ..., x6) = (1, 5, ..., 6).


Din drumul optim de mai sus (de valoare minimă m16 = 17)
rămâne (sau extragem) subdrumul (lui dmin(1, 6)), care este la rândul
său drum de valoare minimă de la „5” din G la „6” din G, egală cu
m 56 = 9 şi pe care-l notăm cu:

dmin(5, 6) = (fiind de forma) = (5, i, ..., 6), cu ? = i  1, 5; evident:

primul + subdrumul lui dmin(5, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(5, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

9 = m 56 = v5i + m i6 , cu ? = i  1, 5; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v5i X    X 9
m i6 X 14 10 17 X 0
v5i + mi6 =9 X    X 9
min

Rezultă că i = 6 (printre sumele dintre elementele corespunzătoare


liniilor v5i şi m i(62) , cea mai mică este egală cu 9 şi se atinge pentru
valoarea v56 = 9; înseamnă că al doilea şi ultimul arc al drumului
minim este (x5, x6)).

Aşadar, subdrumul de valoare minimă m 56 = 9, unic este de


forma:

dmin(5, 6) = (x5, x6).


Drumul căutat, format din 2 arce, este:
(de lungime 2 arce)


8 9  8 + 9 = 17

dmin(1, 6) = (x1, x5, x6) = (1, 5, 6).

Deci b) este rezolvat.

c) „Un produs este adus într-o secţie şi este supus la o serie de


prelucrări, pentru îmbunătăţirea (mărirea) calităţii principale.

Operaţiile de prelucrare, ce se pot efectua, ordonarea lor între


diferitele stări posibile ale produsului semifabricat, precum şi costurile
unitare asociate fiecărei prelucrări, sunt date în graful G cu matricea
valorilor V din enunţul problemei.

Starea iniţială este notată cu x1, iar starea finală cu x6.

i) Determinaţi graful G.

ii) Să se determine tehnologia (succesiunea de operaţii de


prelucrare) cu cele mai mici cheltuieli totale. (Pentru punctul c) al
problemei iniţiale; trebuie determinat drumul sau drumurile de valoare
minimă de la vârful x1 la vârful x6 fixat, aplicând algoritmul Bellman-
Kalaba. Tehnologia de la x1 la x6 cu cost minim corespunde costului
„17”. În concluzie, există o tehnologie optimă, ce corespunde
următorului drum, cu valoare minimă între x1 şi x6:

d(x1, x6) = (x1, x5, x6). = (1, 5, 6).

Costul total este reprezentat prin valoarea minimă a acestui


drum, egală cu 17 = m16 ).
Remarcă:

Pentru aplicaţia2, având acelaşi text economic, dar 8 stări posibile


de prelucrare ale produsului semifabricat, în loc de 6 stări posibile de
prelucrare şi reprezentarea geometrică din figura de mai jos:

2
x 2 x 5
2 3 6 7

x1 x3 x 7
x 8
6 2 3 5 2
4
3 2 6
x 4 x 6
4

(starea iniţială fiind notată cu x1, iar starea finală cu x8),

obţinem:

c) Trebuie determinată vmin[d(1, 8)], adică valoarea minimă a


drumului de la vârful i = 1 = x1 al lui G la vârful fixat n = 8 = x8 al lui
G şi apoi dmin(1, 8), adică drumul minim de la vârful i = 1 = x1 al lui G
la vârful fixat n = 8 = x8 al lui G, ceea ce înseamnă drumul de la vârful
i = 1 = x1 al lui G la vârful fixat n = 8 = x8 al lui G, ce realizează
respectiva valoare minimă.

În acest sens, aplicăm algoritmul Bellman-Kalaba, ce determină


în general valoarea optimă (maximă sau minimă) a drumurilor de la
oricare (sau fiecare) vârf „i” = 1, n al lui G la un anumit vârf fixat al lui
G, fie acesta „n” al lui G, adică ultimul vârf al lui G.

Observaţii:

1) [Valoarea unui drum al lui G = (X,  , V), cu „n” vârfuri]


def .

def .
 [suma valorilor de pe arcele sale].

2) Dacă vârful fixat al lui G era altul decât vârful „n” al lui G,
deci decât ultimul vârf al lui G, atunci îl treceam pe ultimul loc, şi apoi
aplicam alg.B –K.

Algoritmul invocat revine la parcurgerea a 2 etape, şi anume:

Etapa1: Sub tabelul ce conţine pe V, ataşăm noi linii, notate cu:

(1)
m in = i8 , ( 2)
m in = i8 , ( 3)
m in , ...,
=i8
(k )
m in =i8 ,...,

care dau valorile minime ale drumurilor lui G = (X,  , V), de la


fiecare (oricare) vârf „i” al lui G la vârful fixat „n = 8” al lui G, cu i =
= 1, n = 1,8 , formate din:

1, 2, 3, ..., k,... (arce),

adică de lungimi respectiv egale cu:

1, 2, 3, ..., k,... (arce).

Operaţia de ataşare a liniilor suplimentare continuă până când


obţinem 2 astfel de linii consecutive identice, caz în care alg.B – K se
opreşte, deoarece aici s-au obţinut valorile minime căutate, adică ale
drumurilor lui G = (X,  , V), de la fiecare (oricare) vârf „i” al lui G
la vârful fixat „n = 8” al lui G, cu i = 1, n = 1,8 , indiferent de numărul
de arce, ce formează respectivele drumuri (sau indiferent de numărul
de arce, ce străbat respectivele drumuri).

Observaţii:
1) [Lungimea unui drum al lui G = (X,  )]
def .
 [numărul de
arce din G, ce îl formează].

2) Linia m in(1) = i6 = (valoarea minimă a drumurilor lui G, formate


dintr-un arc, de la „i” la „n = 8”) = (valoarea însăşi a arcului (i, n) = (i,
8)) = vint = vi8t,  i = 1, n = 1,8 .

Matricea valorilor V împreună cu liniile suplimentare, se găsesc


în tabelul 14.

Tabelul 14:

V x1 x2 x3 x4 x5 x6 x7 x8
x1 0 2 6 3  4  
x2  0  3 2   
x3   0    3 
x4    0 2 4  
x5     0 5 6 7
x6   2   0 6 
x7       0 2
x8        0
m i8     7  2 0
(1)

m i8  9 5 9 7 8 2 0
( 2)

m i 8 11 9 5 9 7 7 2 0
( 3)

m i 8 11 9 5 9 7 7 2 0
( 4)

Linia notată cu m i8
(1)
corespunde cu coloana x8 a matricei V, fiind
scrisă însă transpus.

Elementele liniei ( 2)
m i8 au fost calculate succesiv astfel:

( 2)
m18 = min{0 +  =  , 2 +  =  , 6 +  =  , 3 +  =  ,  + 7 =
, 4 + +  = , + 2 = =,  + 0 = } = ,
( 2)
m 28 = min{  +  =  , 0 +  =  ,  +  =  , 3 +  =  , 2 + 7
= 9,  +
+  =  ,  + 2 = =  ,  + 0 =  } = 9,
( 2)
m38 = min{  +  =  ,  +  =  , 0 +  =  ,  +  =  ,  +
7 =  ,  +  =  , 3 + 2 = 5,  + 0 =  } = 5,
( 2)
m48 = min{  +  =  ,  +  =  ,  +  =  , 0 +  =  , 2 + 7
= 9, 4+ +  =  ,  + 2 = =  ,  + 0 =  } = 9,
( 2)
m58 = min{  +  =  ,  +  =  ,  +  =  ,  +  =  , 0 +
7 = 7,
5 +  =  , 6 + 2 = =8, 7 + 0 = 7} = 7,
( 2)
m68 = min{  +  =  ,  +  =  , 2 +  =  ,  +  =  ,  +
7 = ,
0 +  =  , 6 + 2 = =8,  + 0 =  } = 8,
( 2)
m78 = min{  +  =  ,  +  =  ,  +  =  ,  +  =  ,  +
7 =  ,  +  =  , 0 + 2 = 2, 2 + 0 = 2} = 2,
( 2)
m88 = min{  +  =  ,  +  =  ,  +  =  ,  +  =  ,  +
7 =  ,  +  =  ,  + 2 =  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m18( 2) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m18 .

Pentru ? = (determinarea) lui m28( 2) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m 28 .

Pentru ? = (determinarea) lui m38( 2) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m38 .
Pentru ? = (determinarea) lui m48( 2) am suprapus linia „4 = x4” a
lui V, adică linia „v4i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m48 .

Pentru ? = (determinarea) lui m58( 2) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m58 .

Pentru ? = (determinarea) lui m68( 2) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m68 .

Pentru ? = (determinarea) lui m78( 2) am suprapus linia „7 = x7” a


lui V, adică linia „v7i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m78 .

Pentru ? = (determinarea) lui m88( 2) am suprapus linia „8 = x8” a


lui V, adică linia „v8i” din V peste linia m i(18) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m88 .

Elementele liniei ( 3)
m i8 au fost calculate succesiv astfel:

( 3)
m18 = min{0 +  =  , 2 + 9 = 11, 6 + 5 = 11, 3 + 9 = 12,  + 7 =  ,
4 + + 8 = 12,  + 2 =  ,  + 0 =  } = 11,
( 3)
m 28 = min{  +  =  , 0 + 9 = 9,  + 5 =  , 3 + 9 = 12, 2 + 7 = 9,
 + + 8 =  ,  + 2 =  ,  + 0 =  } = 9,
( 3)
m38 = min{  +  =  ,  + 9 =  , 0 + 5 = 5,  + 9 =  ,  + 7 =
 ,  + + 8 =  , 3 + 2 = 5,  + 0 =  } = 5,
( 3)
m48 = min{  +  =  ,  + 9 =  ,  + 5 =  , 0 + 9 = 9, 2 + 7 = 9,
4+
+ 8 = 12,  + 2 =  ,  + 0 =  } = 9,
( 3)
m58 = min{  +  =  ,  + 9 =  ,  + 5 =  ,  + 9 =  , 0 + 7 =
7, 5 + + 8 = 13, 6 + 2 = 8, 7 + 0 = 7} = 7,
( 3)
m68 = min{  +  =  ,  + 9 =  , 2 + 5 = 7,  + 9 =  ,  + 7 =
 , 0 + + 8 = 8, 6 + 2 =8,  + 0 =  } = 7,
( 3)
m78 = min{  +  =  ,  + 9 =  ,  + 5 =  ,  + 9 =  ,  + 7
=  ,  + 8 =  , 0 + 2 = = 2, 2 + 0 = 2} = 2,
( 3)
m88 = min{  +  =  ,  + 9 =  ,  + 5 =  ,  + 9 =  ,  + 7
=  ,  + 8 =  ,  + 2 = =  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m18(3) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m18 .

Pentru ? = (determinarea) lui m28(3) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m28 .

Pentru ? = (determinarea) lui m38(3) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m38 .

Pentru ? = (determinarea) lui m48(3) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m48 .
Pentru ? = (determinarea) lui m58(3) am suprapus linia „5 = x5” a
lui V, adică linia „v5i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m58 .

Pentru ? = (determinarea) lui m68(3) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m68 .

Pentru ? = (determinarea) lui m78(3) am suprapus linia „7 = x7” a


lui V, adică linia „v7i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m78 .

Pentru ? = (determinarea) lui m88(3) am suprapus linia „8 = x8” a


lui V, adică linia „v8i” din V peste linia m i(82) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m88 .

Elementele liniei ( 4)
m i8 au fost calculate succesiv astfel:

( 4)
m18 = min{0 + 11 = 11, 2 + 9 = 11, 6 + 5 = 11, 3 + 9 = 12,  + 7 =  ,
4 + 7 = 11,  + 2 =  ,  + +0 =  } = 11,
( 4)
m28 = min{  + 11 =  , 0 + 9 = 9,  + 5 =  , 3 + 9 = 12, 2 + 7 = 9,
 +
+ 7 =  ,  + 2 =  ,  + 0 =  } = 9,
( 4)
m38 = min{  + 11 =  ,  + 9 =  , 0 + 5 = 5,  + 9 =  ,  + 7 =
, +
+ 7 =  , 3 + 2 = 5,  + 0 =  } = 5,
( 4)
m48 = min{  + 11 =  ,  + 9 =  ,  + 5 =  , 0 + 9 = 9, 2 + 7 = 9,
4 + 7 = 11,  + 2 =  ,  + 0 =  } = 9,
( 4)
m58 = min{  + 11 =  ,  + 9 =  ,  + 5 =  ,  + 9 =  , 0 + 7 =
7,
5 + 7 = 12, 6 + 2 = 8, 7 + 0 = 7} = 7,
m68( 4)
= min{  + 11 =  ,  + 9 =  , 2 + 5 = 7,  + 9 =  ,  + 7 =
,
0 + 7 = 7, 6 + 2 = 8,  +0 =  } = 7,
m78( 4)
= min{  + 11 =  ,  + 9 =  ,  + 5 =  ,  + 9 =  ,  + 7
= ,
 + 7 =  , 0 + 2 = 2, 2 + 0 = 2} = 2,
m88( 4)
= min{  + 11 =  ,  + 9 =  ,  + 5 =  ,  + 9 =  ,  + 7
= ,
 + 7 =  ,  + 2 =  , 0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m18( 4) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m18 .

Pentru ? = (determinarea) lui m28( 4) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m 28 .

Pentru ? = (determinarea) lui m38( 4) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m38 .

Pentru ? = (determinarea) lui m48( 4) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m 48 .
Pentru ? = (determinarea) lui m58( 4) am suprapus linia „5 = x5” a
lui V, adică linia „v5i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m58 .

Pentru ? = (determinarea) lui m68( 4) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m68 .

Pentru ? = (determinarea) lui m78( 4) am suprapus linia „7 = x7” a


lui V, adică linia „v7i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m78 .

Pentru ? = (determinarea) lui m88( 4) am suprapus linia „8 = x8” a


lui V, adică linia „v8i” din V peste linia m i(83) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m88 .

Deoarece liniile m i(83) şi m i(84) sunt identice, calculul acesta s-a


oprit la linia m i(84) şi deci aici s-au obţinut tocmai valorile minime
căutate, ale drumurilor de la fiecare vârf „i” al lui G la vârful fixat „n =
8” al lui G, indiferent de numărul de arce ce formează (ce străbat)
respectivele drumuri, iar valoarea comună a liniilor m i(83) şi m i(84) o
notăm cu m i 8 :

( 3)
m i8 = ( 4)
m i8  m i(83) = m i8 .

Interesează primul element m18 al acestei linii m i 8 , care

reprezintă valoarea minimă a drumurilor de la „1 = x1” al lui G la „8=


= x8” al lui G.
Prin urmare, din cercetarea tabelului 14, se observă că drumul
de la x1 la x8, cu valoare minimă, corespunde valorii 11.

Tehnologia de la x1 la x8 cu cost minim corespunde costului „11”.

Etapa2:

? = (determinăm) = dmin(1, 8) = (drumul de la „1” al lui G la „8”


al lui G, de valoare minimă 11), adică:

? = (determinăm) = (vârfurile şi arcele) drumului sau


drumurilor de la „1” al lui G la „8” al lui G, ce realizează valoarea
minimă 11 obţinută la etapa1, astfel:

dmin(1, 8) = (este de forma) = (1, i, ..., 8), cu ? = i  1; evident:

primul + subdrumul lui dmin(1, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(1, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

11 = m18 = v1i + m i8 , cu ? = i  1; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6 7 8
v1i X 2 6 3  4  
m i8 X 9 5 9 7 7 2 0
v1i + m i8 =11 X 11 11 12  11  
min min min
Căutând sumele de valoare minimă, adică 11, rezultă că avem 3
variante, şi anume: i = 2, i= 3, şi respectiv i = 6 (printre sumele
elementelor de pe linia x1 cu elementele corespunzătoare ale liniei
m i 8 , cea mai mică este egală cu 11 şi se atinge pentru valoarea v12 = 2,
( 4)

sau v13 = 6, sau încă v16 = 4).

Urmărind prima variantă, rezultă că primul arc al drumului


căutat este (x1, x2).

Aşadar, drumul de valoare minimă m18 = 11, care este unic, are
forma:

dmin(1, 8) = (x1, x2, ..., x8).

Din drumul optim de mai sus (de valoare minimă m18 = 11)
rămâne (sau extragem) subdrumul (lui dmin(1, 8)), care este la rândul
său drum de valoare minimă de la „2” din G la „8” din G, egală cu
m 28 = 9 şi pe care-l notăm cu:

dmin(2, 8) = (fiind de forma) = (2, i, ..., 8), cu ? = i  1, 2; evident:

primul + subdrumul lui dmin(2, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(2, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

9 = m 28 = v2i + m i8 , cu ? = i  1, 2; organizăm calculele în tabelul


de mai jos:
i 1 2 3 4 5 6 7 8
v2i X X  3 2   
m i8 X X 5 9 7 7 2 0
v2i + m i8 =9 X X  12 9   
min

Rezultă că i = 5 (printre sumele dintre elementele corespunzătoare


ale liniilor v2i şi m i(84) , cea mai mică este egală cu 9 şi se atinge pentru
valoarea v25 = 2; înseamnă că al doilea arc al drumului minim este (x2,
x5)). Aşadar, subdrumul de valoare minimă m 28 = 9, unic este de
forma:

dmin(2, 8) = (x2, x5, ..., x8).

Din drumul optim de mai sus (de valoare minimă m 28 = 9)


rămâne (sau extragem) subdrumul (lui dmin(5, 8)), care este la rândul
său drum de valoare minimă de la „5” din G la „8” din G, egală cu
m 58 = 7 şi pe care-l notăm cu:

dmin(5, 8) = (fiind de forma) = (5, i, ..., 8), cu ? = i  1, 2, 5; evident:

primul + subdrumul lui dmin(5, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(5, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

7 = m 58 = v5i + m i8 , cu ? = i  1, 2, 5; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6 7 8
v5i X X   X 5 6 7
m i8 X X 5 9 X 7 2 0
v5i + m i8 =7 X X   X 12 8 7
min

Rezultă că i = 8 (printre sumele dintre elementele corespunzătoare


ale liniilor v5i şi m i(84) , cea mai mică este egală cu 7 şi se atinge pentru
valoarea v58 = 7; înseamnă că al treilea şi ultimul arc al drumului
minim este (x5, x8)).

Prin urmare, drumul în prima variantă, format din 3 arce este:

d1min(1, 8) = (x1, x2, x5, x8).

Urmărind a doua variantă, rezultă că primul arc al drumului


căutat este (x1, x3).

Aşadar, drumul de valoare minimă m18 = 11, care este unic, are
forma:

dmin(1, 8) = (x1, x3, ..., x8).

Din drumul optim de mai sus (de valoare minimă m18 = 11)
rămâne (sau extragem) subdrumul (lui dmin(3, 8)), care este la rândul
său drum de valoare minimă de la „3” din G la „8” din G, egală cu
m 38 = 5 şi pe care-l notăm cu:

dmin(3, 8) = (fiind de forma) = (3, i, ..., 8), cu ? = i  1, 3; evident:


primul + subdrumul lui dmin(3, 8),
arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(3, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

5 = m 38 = v3i + m i8 , cu ? = i  1, 3; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6 7 8
v3i X  X    3 
m i8 X 9 X 9 7 7 2 0
v3i + m i8 =5 X  X    5 
min

Rezultă că i = 7 (printre sumele dintre elementele corespunzătoare


ale liniilor v3i şi m i(84) , cea mai mică este egală cu 5 şi se atinge pentru
valoarea v37 = 3; înseamnă că al doilea arc al drumului minim este (x3,
x7)).

Aşadar, subdrumul de valoare minimă m 38 = 5, unic este de


forma:

dmin(3, 8) = (x3, x7, ..., x8).

Din drumul optim de mai sus (de valoare minimă m 38 = 5)


rămâne (sau extragem) subdrumul (lui dmin(7, 8)), care este la rândul
său drum de valoare minimă de la „7” din G la „8” din G, egală cu
m 78 = 2 şi pe care-l notăm cu:

dmin(7, 8) = (fiind de forma) = (7, i, ..., 8), cu ? = i  1, 3, 7; evident:


primul + subdrumul lui dmin(3, 8),
arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(7, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

2 = m 78 = v7i + m i8 , cu ? = i  1, 3, 7; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6 7 8
v7i X  X  X  X 2
m i8 X 9 X 9 X 7 X 0
v7i + m i8 =2 X  X  X  X 2
min

Rezultă că i = 8 (printre sumele dintre elementele corespunzătoare


ale liniilor v7i şi m i(84) , cea mai mică este egală cu 2 şi se atinge pentru
valoarea v78 = 2; înseamnă că al treilea şi ultimul arc al drumului
minim este (x7, x8)).

Prin urmare, drumul în a 2 – a variantă, format din 3 arce este:

d2min(1, 8) = (x1, x3, x7, x8).

Urmărind a treia variantă, rezultă că primul arc al drumului


căutat este (x1, x6).

Aşadar, drumul de valoare minimă m18 = 11, care este unic, are
forma:

dmin(1, 8) = (x1, x6, ..., x8).


Din drumul optim de mai sus (de valoare minimă m18 = 11)
rămâne (sau extragem) subdrumul (lui dmin(6, 8)), care este la rândul
său drum de valoare minimă de la „6” din G la „8” din G, egală cu
m 68 = 7 şi pe care-l notăm cu:

dmin(6, 8) = (fiind de forma) = (6, i, ..., 8), cu ? = i  1, 6; evident:

primul + subdrumul lui dmin(6, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(6, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

i 1 2 3 4 5 6 7 8
v6i X  2   X 6 
m i8 X 9 5 9 7 X 2 0
v6i + m i8 =7 X  7   X 8 
min

Rezultă că i = 3 (printre sumele dintre elementele corespunzătoare


ale liniilor v6i şi m i(84) , cea mai mică este egală cu 7 şi se atinge pentru
valoarea v63 = 2; înseamnă că al doilea arc al drumului minim este (x6,
x3)). Aşadar, subdrumul de valoare minimă m 68 = 7, unic este de
forma:

dmin(6, 8) = (x6, x3, ..., x8).

Din drumul optim de mai sus (de valoare minimă m18 = 11)
rămâne (sau extragem) subdrumul (lui dmin(6, 8)), care este la rândul
său drum de valoare minimă de la „3” din G la „8” din G, egală cu
m 38 = 5 şi pe care-l notăm cu:
dmin(3, 8) = (fiind de forma) = (3, i, ..., 8), cu ? = i  1, 6, 3; evident:

primul + subdrumul lui dmin(3, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(3, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

Din drumul optim de mai sus (de valoare minimă m 68 = 7)


rămâne subdrumul.

Din drumul optim de mai sus (de valoare minimă m 68 = 7)


rămâne (sau extragem) subdrumul (lui dmin(6, 8)), care este la rândul
său drum de valoare minimă de la „6” din G la „8” din G, egală cu
m 68 = 7 şi pe care-l notăm cu:

dmin(6, 8) = (fiind de forma) = (6, i, ..., 8), cu ? = i  1, 6; evident:

primul + subdrumul lui dmin(6, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(6, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

7 = m 68 = v6i + m i8 , cu ? = i  1, 6; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6 7 8
v6i X  2   X 6 
m i8 X 9 5 9 7 X 2 0
v6i + m i8 =7 X  7   X 8 
min
Rezultă că i = 3 (printre sumele dintre elementele corespunzătoare
ale liniilor v6i şi m i(84) , cea mai mică este egală cu 7 şi se atinge pentru
valoarea v63 = 2; înseamnă că al doilea arc al drumului minim este (x6,
x3)).

Aşadar, subdrumul de valoare minimă m 68 = 7, unic este de


forma:

dmin(6, 8) = (x6, x3, ..., x8).

Din drumul optim de mai sus (de valoare minimă m 68 = 7)


rămâne (sau extragem) subdrumul (lui dmin(6, 8)), care este la rândul
său drum de valoare minimă de la „3” din G la „8” din G, egală cu
m 38 = 7 şi pe care-l notăm cu:

dmin(3, 8) = (fiind de forma) = (3, i, ..., 8), cu ? = i  1, 6, 3; evident:

primul + subdrumul lui dmin(3, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(3, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

5 = m 38 = v3i + m i8 , cu ? = i  1, 6, 3; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6 7 8
v3i X  X   X 3 
m i8 X 9 X 9 7 X 2 0
v3i + m i8 =5 X  X   X 5 
Rezultă
min
că i = 7 (printre
sumele dintre elementele corespunzătoare ale liniilor v3i şi m i(84) , cea
mai mică este egală cu 5 şi se atinge pentru valoarea v37 = 3; înseamnă
că al treilea arc al drumului minim este (x3, x7)).

Aşadar, subdrumul de valoare minimă m 38 = 5, unic este de


forma:

dmin(3, 8) = (x3, x7, ..., x8).

Din drumul optim de mai sus (de valoare minimă m 38 = 5)


rămâne (sau extragem) subdrumul (lui dmin(3, 8)), care este la rândul
său drum de valoare minimă de la „7” din G la „8” din G, egală cu
m 78 = 2 şi pe care-l notăm cu:

dmin(7, 8) = (fiind de forma) = (7, i, ..., 8), cu ? = i  1, 6, 3, 7; evident:

primul + subdrumul lui dmin(7, 8),


arc al său de la „i” din G la „8” din G,
↓ adică: care este la rândul său
(7, i) din G drum de valoare minimă
de la „i” din G la „8” din G,
egală cu m i 8

2 = m 78 = v7i + m i8 , cu ? = i  1, 6, 3, 7; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6 7 8
v7i X  X   X X 2
m i8 X 9 X 9 7 X X 0
v7i + m i8 =2 X  X   X X 2
min

Rezultă că i = 8 (printre sumele dintre elementele corespunzătoare


ale liniilor v7i şi m i(84) , cea mai mică este egală cu 2 şi se atinge pentru
valoarea v78 = 2; înseamnă că al patrulea şi ultimul arc al drumului
minim este (x7, x8)).

Prin urmare, drumul în a 3 – a variantă, format din 4 arce este:

d3min(7, 8) = (x1, x6, x3, x7, x8).

În concluzie, există 3 tehnologii optime, ce corespund


următoarelor 3 drumuri, cu valoare minimă între x1 şi x8:

d1min(x1, x8) = (x1, x2, x5, x8) = (1, 2, 5, 8),

d2min(x1, x8) = (x1, x3, x7, x8) = (1, 3, 7, 8),

d3min(x1, x8) = (x1, x6, x3, x7, x8) = (1, 6, 3, 7, 8).

Costul total este reprezentat prin valoarea minimă a acestor


drumuri, egală cu 11 = m18 .

Grafic, avem:

2
x 2 x 5
2 7

x 1 x3 x7
x8
6 2 3 2
4

x 6

Geometric, cele 3 drumuri optime găsite formează graful parţial


strict al lui G (adică graf cu aceleaşi vârfuri ca şi G, dar cu mai puţine
arce) din figura de mai sus.
Alt model economic asociat unui graf orientat finit G, fără
circuite:

Aplicaţia3 Pentru a pompa apa de la gura de apă x1 către secţia


x6, unde este necesară producţiei, se studiază amplasarea unui sistem
de canale cu 4 puncte intermediare posibile de repompare. Se cunosc
costurile de instalaţie ale canalelor. Modelul asociat este graful din
figura de mai jos. Să se determine cel mai ieftin sistem de construire a
canalelor, care să alimenteze secţia x6.

4
x 2 x 4

3 4
 x1 2 8 3 x 6

5 2
x 3 x 5

Rezolvare:

Trebuie determinat drumul sau drumurile de lungime minimă de


la vârful x1 la vârful x6 fixat.

Întâi, determinăm vmin[d(1, 6)], adică valoarea minimă a


drumului de la vârful i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui
G şi apoi dmin(1, 6), adică drumul minim de la vârful i = 1 = x1 al lui G
la vârful fixat n = 6 = x6 al lui G, ceea ce înseamnă drumul de la vârful
i = 1 = x1 al lui G la vârful fixat n = 6 = x6 al lui G, ce realizează
respectiva valoare minimă.

În acest sens, aplicăm algoritmul Bellman-Kalaba, ce determină


în general valoarea optimă (maximă sau minimă) a drumurilor de la
oricare (sau fiecare) vârf „i” = 1, n al lui G la un anumit vârf fixat al lui
G, fie acesta „n” al lui G, adică ultimul vârf al lui G.
Observaţii:

1) [Valoarea unui drum al lui G = (X,  , V), cu „n” vârfuri]


def .

def .
 [suma valorilor de pe arcele sale].

2) Dacă vârful fixat al lui G era altul decât vârful „n” al lui G,
deci decât ultimul vârf al lui G, atunci îl treceam pe ultimul loc, şi apoi
aplicam alg.B –K.

Algoritmul invocat revine la parcurgerea a 2 etape, şi anume:

Etapa1: Matricea valorilor se găseşte în tabelul 19.

Sub tabelul ce conţine pe V, ataşăm noi linii, notate cu:

(1)
m in = i6 , ( 2)
m in = i6 , ( 3)
m in , ...,
=i6
(k )
m in =i6 ,...,

care dau valorile minime ale drumurilor lui G = (X,  , V), de la


fiecare (oricare) vârf „i” al lui G la vârful fixat „n = 6” al lui G, cu i =
= 1, n = 1,6 , formate din:

1, 2, 3, ..., k,... (arce),

adică de lungimi respectiv egale cu:

1, 2, 3, ..., k,... (arce).

Operaţia de ataşare a liniilor suplimentare continuă până când


obţinem 2 astfel de linii consecutive identice, caz în care alg.B – K se
opreşte, deoarece aici s-au obţinut valorile minime căutate, adică ale
drumurilor lui G = (X,  , V), de la fiecare (oricare) vârf „i” al lui G
la vârful fixat „n = 6” al lui G, cu i = 1, n = 1,6 , indiferent de numărul
de arce, ce formează respectivele drumuri (sau indiferent de numărul
de arce, ce străbat respectivele drumuri).

Observaţii:

1) [Lungimea unui drum al lui G = (X,  )]


def .
 [numărul de
arce din G, ce îl formează].

2) Linia m in(1) = i6 = (valoarea minimă a drumurilor lui G, formate


dintr-un arc, de la „i” la „n = 6”) = (valoarea însăşi a arcului (i, n) = (i,
6)) = vint = vi6t,  i = 1, n = 1,6 .

Matricea valorilor V împreună cu liniile suplimentare, se găsesc


în tabelul 19.

Tabelul 19:

V x1 x2 x3 x4 x5 x6
x1 0 3 5   
x2  0 2 4 8 
x3   0  3 
x4    0  4
x5    3 0 2
x6      0
mi6    4 2 0
(1)

mi6  8 5 4 2 0
( 2)

m i 6 10 7 5 4 2 0
( 3)

m i 6 10 7 5 4 2 0
( 4)
Linia notată cu mi6
(1)
corespunde cu coloana x6 a matricei V, fiind
scrisă însă transpus.

Elementele liniei ( 2)
mi6 au fost calculate succesiv astfel:

( 2)
m16 = min{0 +  =  , 3 +  =  , 5 +  =  ,  + 4 =  ,  + 2 =
, +
+ 0 = } = ,
m26( 2)
= min{  +  =  , 0 +  =  , 2 +  =  , 4 + 4 = 8, 8 + 2 =
10,
 + 0 =  } = 8,
m36( 2)
= min{  +  =  ,  +  =  , 0 +  =  ,  + 4 =  , 3 + 2
= 5,
 + 0 =  } = 5,
m46( 2)
= min{  +  =  ,  +  =  ,  +  =  , 0 + 4 = 4,  + 2
= ,
4 + 0 = 4} = 4,
m56( 2)
= min{  +  =  ,  +  =  ,  +  =  , 3 + 4 = 7, 0 + 2 =
2,
2 + 0 = 2} = 2,
m66( 2)
= min{  +  =  ,  +  =  ,  +  =  ,  + 4 =  ,  +
2 = ,
0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16( 2) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m16 .

Pentru ? = (determinarea) lui m26( 2) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m26 .

Pentru ? = (determinarea) lui m36( 2) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m36 .

Pentru ? = (determinarea) lui m46( 2) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m46 .

Pentru ? = (determinarea) lui m56( 2) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m56 .

Pentru ? = (determinarea) lui m66( 2) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(16) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 2)
m66 .

Elementele liniei ( 3)
mi6 au fost calculate succesiv astfel:

( 3)
m16 = min{0 +  =  , 3 + 8 = 11, 5 + 5 = 10,  + 4 =  ,  + 2 = 
,
 + 0 =  } = 10,
( 3)
m26 = min{  +  =  , 0 + 8 = 8, 2 + 5 = 7, 4 + 4 = 8, 8 + 2 = 10, 
+
+ 0=  } = 7,
( 3)
m36 = min{  +  =  ,  + 8 =  , 0 + 5 = 5,  + 4 =  , 3 + 2 = 5,
 + 0=  } = 5,
( 3)
m 46 = min{  +  =  ,  + 8 =  ,  + 5 =  , 0 + 4 = 4,  + 2 =
,
4 + 0 = 4} = 4,
( 3)
m56 = min{  +  =  ,  + 8 =  ,  + 5 =  , 3 + 4 = 7, 0 + 2 = 2,
2+
+ 0= 2} = 2,
( 3)
m66 = min{  +  =  ,  + 8 =  ,  + 5 =  ,  + 4 =  ,  + 2
=  , 0+
+ 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16(3) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m16 .

Pentru ? = (determinarea) lui m26(3) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m 26 .

Pentru ? = (determinarea) lui m36(3) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m36 .

Pentru ? = (determinarea) lui m46(3) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m 46 .
Pentru ? = (determinarea) lui m56(3) am suprapus linia „5 = x5” a
lui V, adică linia „v5i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m56 .

Pentru ? = (determinarea) lui m66(3) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(62) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 3)
m66 .

Elementele liniei ( 4)
m i6 au fost calculate succesiv astfel:

( 4)
m16 = min{0 + 10 = 10, 3 + 7 = 10, 5 + 5 = 10,  + 4 =  ,  + 2 = 
,
 + 0 =  } = 10,
( 4)
m26 = min{  + 10 =  , 0 + 7 = 7, 2 + 5 = 7, 4 + 4 = 8, 8 + 2 = 10, 
+
+ 0=  } = 7,
( 4)
m36 = min{  + 10 =  ,  + 7 =  , 0 + 5 = 5,  + 4 =  , 3 + 2 = 5,
 + + 0 =  } = 5,
( 4)
m 46 = min{  + 10 =  ,  + 7 =  ,  + 5 =  , 0 + 4 = 4,  + 2 =
 , 4 + + 0 = 4} = 4,
( 4)
m56 = min{  + 10 =  ,  + 7 =  ,  + 5 =  , 3 + 4 = 7, 0 + 2 = 2,
2+
+ 0 = 2} = 2,
( 4)
m66 = min{  + 10 = ,  + 7 = ,  + 5 = ,  + 4 = ,  + 2
= ,
0 + 0 = 0} = 0.

Observaţii:

Pentru ? = (determinarea) lui m16( 4) am suprapus linia „1 = x1” a


lui V, adică linia „v1i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m16 .

Pentru ? = (determinarea) lui m26( 4) am suprapus linia „2 = x2” a


lui V, adică linia „v2i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m 26 .

Pentru ? = (determinarea) lui m36( 4) am suprapus linia „3 = x3” a


lui V, adică linia „v3i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m36 .

Pentru ? = (determinarea) lui m46( 4) am suprapus linia „4 = x4” a


lui V, adică linia „v4i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m 46 .

Pentru ? = (determinarea) lui m56( 4) am suprapus linia „5 = x5” a


lui V, adică linia „v5i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m56 .

Pentru ? = (determinarea) lui m66( 4) am suprapus linia „6 = x6” a


lui V, adică linia „v6i” din V peste linia m i(63) anterior calculată, şi am
efectuat suma elementelor ce se corespund la suprapunere, alegând
valoarea minimă a respectivelor sume, care ne-a condus la valoarea
( 4)
m66 .

Deoarece liniile m i(63) şi m i(64) sunt identice, calculul acesta s-a


oprit la linia m i(64) (şi deci s-au obţinut aici tocmai valorile minime
căutate, ale drumurilor de la fiecare vârf „i” al lui G la vârful fixat „n
= 6” al lui G, indiferent de numărul de arce ce formează (ce străbat)
respectivele drumuri, iar valoarea comună a liniilor ( 3)
mi6 şi ( 4)
m i6 o
notăm cu m i 6 :

( 3)
mi6 = ( 4)
m i6  m i(63) = mi6 .

Primul element al acestei linii reprezintă valoarea minimă a


drumurilor de la x1 la x6: m16 = 10.

Interesează primul element m16 al acestei linii m i 6 , care


reprezintă valoarea minimă a drumurilor de la „1 = x1” al lui G la „6
= x6” al lui G.

Prin urmare, din cercetarea tabelului 19, se observă că drumul


de la x1 la x6, cu valoare minimă, corespunde valorii 17.

Tehnologia de la x1 la x6 cu cost minim corespunde costului „10”.

Etapa2:

? = (determinăm) = dmin(1, 6) = (drumul de la „1” al lui G la „6”


al lui G, de valoare minimă 10), adică:

? = (determinăm) = (vârfurile şi arcele) drumului sau


drumurilor de la „1” al lui G la „6” al lui G, ce realizează valoarea
minimă 10 obţinută la etapa1, astfel:

dmin(1, 6) = (este de forma) = (1, i, ..., 6), cu ? = i  1; evident:

primul + subdrumul lui dmin(1, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(1, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu mi6

10 = m16 = v1i + m i6 , cu ? = i  1; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v1i X 3 5   
m i6 X 7 5 4 2 0
v1i + m i6 X 10 10   
=10 min min

Căutând sumele de valoare minimă, adică 10, rezultă că avem 2


variante, şi anume: i = 2, şi respectiv i = 3 (printre sumele elementelor
de pe linia v1i cu elementele corespunzătoare ale liniei m i(64) , cea mai
mică este egală cu 10 şi se atinge pentru valoarea v12 = 3, sau v13 = 5).

Urmărind prima variantă, rezultă că primul arc al drumului


căutat este (x1, x2). Aşadar, drumul de valoare minimă m16 = 10, care
este unic, are forma:

dmin(1, 6) = (x1, x2, ..., x6).


Din drumul optim de mai sus (de valoare minimă m16 = 10)
rămâne subdrumul:

Din drumul optim de mai sus (de valoare minimă m16 = 10)
rămâne (sau extragem) subdrumul (lui dmin(1, 6)), care este la rândul
său drum de valoare minimă de la „2” din G la „6” din G, egală cu
m 26 = 7 şi pe care-l notăm cu:

dmin(2, 6) = (fiind de forma) = (2, i, ..., 6), cu ? = i  1, 2; evident:

primul + subdrumul lui dmin(2, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(2, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

7 = m 26 = v2i + mi6 , cu ? = i  1, 2; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v2i X X 2 4 8 
m i6 X X 5 4 2 0
v2i + mi6 =7 X X 7 8 10 
min

Rezultă că i = 3 (printre sumele dintre elementele corespunzătoare


liniilor v2i şi m i(63) , cea mai mică este egală cu 7 şi se atinge pentru
valoarea v23 = 7; înseamnă că al doilea al drumului minim este (x2, x3)).

Urmărind prima variantă, rezultă că al doilea arc al drumului


căutat este (x2, x3).

Aşadar, drumul de valoare minimă m 26 = 7, care este unic, are


forma:

dmin(2, 6) = (x2, x3, ..., x6).

Din drumul optim de mai sus (de valoare minimă m 26 = 7)


rămâne (sau extragem) subdrumul (lui dmin(2, 6)), care este la rândul
său drum de valoare minimă de la „3” din G la „6” din G, egală cu
m 36 = 5 şi pe care-l notăm cu:

dmin(3, 6) = (fiind de forma) = (3, i, ..., 6), cu ? = i  1, 2, 3; evident:


primul + subdrumul lui dmin(3, 6),
arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(3, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

5 = m 36 = v3i + mi6 , cu ? = i  1, 2, 3; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6
v3i X X X  3 
m i6 X X X 4 2 0
v3i + mi6 =5 X X X  5 
min

Rezultă că i = 5 (printre sumele dintre elementele corespunzătoare


liniilor v3i şi m i(63) , cea mai mică este egală cu 5 şi se atinge pentru
valoarea v35 = 3; înseamnă că al treilea arc al drumului minim este (x3,
x5)).

Urmărind prima variantă, rezultă că al treilea arc al drumului


căutat este (x3, x5).

Aşadar, drumul de valoare minimă m 36 = 5, care este unic, are


forma:

dmin(3, 6) = (x3, x5, ..., x6).

Din drumul optim de mai sus (de valoare minimă m 36 = 5)


rămâne (sau extragem) subdrumul (lui dmin(3, 6)), care este la rândul
său drum de valoare minimă de la „5” din G la „6” din G, egală cu
m 56 = 2 şi pe care-l notăm cu:
dmin(5, 6) = (fiind de forma) = (5, i, ..., 6), cu ? = i  1, 2, 3, 5; evident:

primul + subdrumul lui dmin(5, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(5, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

2 = m 56 = v5i + mi6 , cu ? = i  1, 2, 3, 5; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6
v5i X X X 3 X 2
m i6 X X X 4 X 0
v5i + mi6 =2 X X X 7 X 2(min)

Rezultă că i = 6 (printre sumele dintre elementele corespunzătoare


liniilor v5i şi m i(63) , cea mai mică este egală cu 2 şi se atinge pentru
valoarea v56 = 2; înseamnă că al patrulea şi ultimul arc al drumului
minim este (x5, x6)).

Prin urmare, drumul în prima variantă, format din 4 arce (adică


de lungime 4 arce) este:

d1min(1, 6) = (x1, x2, x3, x5, x6).

Urmărind a doua variantă, rezultă că primul arc al drumului


căutat este (x1, x3).

Aşadar, drumul de valoare minimă m16 = 10, care este unic, are
forma:
dmin(1, 6) = (x1, x3, ..., x6).

Din drumul optim de mai sus (de valoare minimă m16 = 10)
rămâne (sau extragem) subdrumul (lui dmin(1, 6)), care este la rândul
său drum de valoare minimă de la „3” din G la „6” din G, egală cu
m 36 = 5 şi pe care-l notăm cu:

dmin(3, 6) = (fiind de forma) = (3, i, ..., 6), cu ? = i  1, 3; evident:

primul + subdrumul lui dmin(3, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(3, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

5 = m 36 = v3i + m i6 , cu ? = i  1, 3; organizăm calculele în tabelul


de mai jos:

i 1 2 3 4 5 6
v3i X  X  3 
m i6 X 7 X 4 2 0
v3i + mi6 =5 X  X  5 
min

Rezultă că i = 5 (printre sumele dintre elementele corespunzătoare


liniilor v3i şi m i(63) , cea mai mică este egală cu 5 şi se atinge pentru
valoarea v35 = 3; înseamnă că al doilea arc al drumului minim este (x3,
x5)).

Aşadar, drumul de valoare minimă m 36 = 5, care este unic, are


forma:
dmin(3, 6) = (x3, x5, ..., x6).

Din drumul optim de mai sus (de valoare minimă m 36 = 5)


rămâne (sau extragem) subdrumul (lui dmin(3, 6)), care este la rândul
său drum de valoare minimă de la „5” din G la „6” din G, egală cu
m 56 = 2 şi pe care-l notăm cu:

dmin(5, 6) = (fiind de forma) = (5, i, ..., 6), cu ? = i  1, 3, 5; evident:

primul + subdrumul lui dmin(5, 6),


arc al său de la „i” din G la „6” din G,
↓ adică: care este la rândul său
(5, i) din G drum de valoare minimă
de la „i” din G la „6” din G,
egală cu m i 6

2 = m 56 = v5i + mi6 , cu ? = i  1, 3, 5; organizăm calculele în


tabelul de mai jos:

i 1 2 3 4 5 6
v5i X  X 3 X 2
m i6 X 7 X 4 X 0
v5i + mi6 =2 X  X 7 X 2
min

Rezultă că i = 6 (printre sumele dintre elementele corespunzătoare


liniilor v5i şi m i(63) , cea mai mică este egală cu 2 şi se atinge pentru
valoarea v56 = 2; înseamnă că al treilea şi ultimul arc al drumului
minim este (x5, x6)).

Prin urmare, drumul în a doua variantă, format din 3 arce (adică


de lungime 3 arce) este:
d2min(1, 6) = (x1, x3, x5, x6).

Se ajunge la următoarea concluzie:

Se vor folosi canalele de pe unul dintre următoarele drumuri


minime, de la x1 la x6:

d1min(x1, x6) = (x1, x2, x3, x5, x6),

d2min(x1, x6) = (x1, x3, x5, x6).

Costul total al instalaţiei este: m16 = 10.

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