Vous êtes sur la page 1sur 74

UNITATEA DE NVARE NR.

GRAFURI CU ARCE VALORIZATE. ALGORITMI DE OPTIMIZARE

Obiective urmrite:

 nsuirea unor noiuni fundamentale din domeniul teoriei grafurilor.


 Formarea deprinderilor de modelare matematic a unor probleme de natur
informatic, tehnic sau economic, cu utilizarea cunotinelor nsuite.
 Formarea i dezvoltarea bazei matematice a studenilor pentru disciplinele
fundamentale i de specialitate din anii superiori;
 Formarea i dezvoltarea aptitudinilor i deprinderilor de analiz logic, formulare
corect i argumentare fundamentat, n rezolvarea problemelor tehnico-economice
i de specialitate;

Rezumat:

n aceast unitate de nvare sunt prezentate, pe parcursul a patru lecii, urmtoarele:


noiunea de graf cu arce valorizate;
algoritmi pentru determinarea drumului de lungime minim ntre dou vrfuri ale
unui graf;
algoritmii lui Ford i Bellman-Kalaba pentru determinarea drumului de valoare
minim ntre dou vrfuri oarecare ale unui graf;
algoritmii lui Ford i Bellman-Kalaba pentru determinarea drumului de valoare
maxim ntre dou vrfuri oarecare ale unui graf fr circuite;
algoritmul matriceal pentru determinarea drumului de valoare minim sau maxim
ntre dou vrfuri oarecare ale unui graf; variante ale algoritmilor prezentai.
Fiecare algoritm este prezentat cu justificarea teoretic de rigoare i totodat este
nsoit de cel puin un exemplu rezolvat complet, care reprezint totodat i un
model pentru rezolvarea testelor de autoevaluare i a temei de control.

Cuvinte cheie:

Graf cu arce valorizate, drum de lungime minim, drum de valoare minim, drum de valoare
maxim, algoritmul lui Ford, principiul optimalitii, algoritmul lui Bellman-Kalaba,
algoritmul matriceal.

Timp de studiu:

Timpul mediu necesar pentru nsuirea noiunilor teoretice i algoritmilor prezentai


n unitatea de nvare nr. 3, precum i cel necesar formrii deprinderilor de calcul i utilizrii
algoritmilor pentru rezolvarea claselor de probleme specifice acestei pri a cursului este
estimat la aproximativ 3-4 ore pentru lecia 1, cu tendina micorrii acestuia ajungnd n
final la 2-3 ore, de la lecia 1 ctre lecia 4, pe msura nelegerii i nsuirii cunotinelor
transmise i a formrii deprinderilor de calcul.

76
LECIA 6 - GRAFURI CU ARCE VALORIZATE. DRUM DE LUNGIME MINIM

3.1 Noiuni introductive. Punerea problemei


Unele procese i fenomene practice pot fi modelate prin grafuri ale cror arce trebuie
valorizate. Aceasta nseamn c fiecrui arc i se ataeaz o valoare numeric a crei
semnificaie concret difer n raport cu natura problemei modelate; de exemplu, aceasta
poate fi de tip cost, distan, consum, durat, productivitate, probabilitate etc.
Exemple
a) Dac se pune problema efecturii unor transporturi ntre diferite localiti, legate
printr-o reea de drumuri, se poate modela aceast problem printr-un graf ale crui vrfuri
sunt localiti. Un drum ntre localitile x i y se va reprezenta prin arcul ( x, y ) . Dac pe
acest drum circulaia se face n ambele sensuri, n graf va exista i arcul ( y, x ) . Dac se
studiaz problema din punct de vedere al timpului necesar efecturii transporturilor, atunci
fiecrui arc i se va ataa un numr pozitiv reprezentnd durata transportului pe drumul cruia i
s-a asociat acel arc. Putem ntlni situaii diverse dup cum se prezint n exemplele
urmtoare:

Durata transportului de la x la y este de


10 uniti;

( ) i arcul ( y, x ) i are aceeai valoare


cu arcul ( x, y ) ;

( ) ambele arce ( x, y ) i ( y, x ) , dar


Fig. 3.1.1 au valori diferite; obligatoriu figureaz ambele
arce.
Dup ce se reprezint ntregul graf se poate rezolva problema urmtoare: S se
determine traseul pentru efectuarea unui transport ntre dou localiti astfel nct timpul
necesar s fie minim.
b) Dac se studiaz problema din punct de vedere al costului transportului, valorile
arcelor vor avea alt semnificaie (costul transportului de la x la y) i drumurile optime n
rezolvarea unei probleme de tipul: determinarea traseului pentru efectuarea unui transport de
cost minim ntre dou localiti, vor fi altele.
c) n alte aplicaii se pot ntlni i alte semnificaii ale valorilor arcelor.
Definiia 3.1.1
Fiind dat un graf G = ( X , ) , X = { x1, x2 ,..., xn } , fie U mulimea arcelor sale.

( )
Fiecrui arc u = xi , x j U i se ataeaz un numr nenegativ, notat cu l ( u ) sau

( )
l xi , x j , care se va numi valoarea arcului u. Definim valoarea drumului

( )
= xi1 , xi2 ,..., xik ca fiind suma valorilor arcelor care-l compun, deci

77
k 1
l ( ) = l ( xi , xi )
r r +1
(3.1.1)
r =1
Vom studia algoritmi pentru determinarea drumurilor optime (drumuri de valoare
maxim sau de valoare minim) ntre dou vrfuri ale grafului.
Deoarece ntr-un graf cu circuite pot exista drumuri de valoare orict de mare (obinute
prin parcurgerea repetat a unui circuit), drumuri de valoare maxim se caut, de regul, n
grafuri fr circuite. Drumuri de valoare minim se caut i n grafuri care au circuite.
Observaia 3.1.2
Drumul de valoare minim ntre dou vrfuri ale unui graf este un drum elementar (nu
conine un circuit ca subdrum).
Exemplu
(
Fie drumul = xi ,..., xk ,..., xl ,..., x j )

Fig. 3.1.2

Acest drum de la xi la x j nu poate fi de valoare minim, deoarece el conine

( )
subdrumul = xi ,..., xk ,..., x j , care are valoare mai mic dect drumul , n ipoteza
real de altfel, c circuitul ( xk ,..., xl ,..., xk ) are cel puin un arc de valoare nenul.

Propoziia 3.1.3
Orice subdrum al unui drum optim este, de asemenea, un drum optim.
Demonstraie
(
Fie drumul dintre nodurile x i y definit prin: = x,..., xi ,..., x j ,..., xl ,..., y ) de
valoare optim (maxim sau minim) ntr-un graf:

Fig. 3.1.3

78
Atunci subdrumul = xi , x j ,..., xl( ) este drum de valoare optim (maxim sau
minim) de la xi la xl .
ntr-adevr, presupunnd c ( ) alt subdrum, de exemplu, = ( xi , xk ,..., xl ) ntre

xi i xl de valoare mai mare (pentru cazul de maxim) sau mai mic (pentru cazul de minim)
dect , atunci drumul 1 = ( x,..., xi , xk ,..., xl ,..., y ) ar fi un drum de valoare mai mare
(pentru cazul de maxim), respectiv de valoare mai mic (pentru cazul de minim), de la x la y,
dect drumul , presupus a fi optim (de valoare maxim sau minim) ntre nodurile x i y,
contradicie cu ipoteza. Rezult c presupunerea fcut este fals i demonstraia este
ncheiat.

3.2 Algoritm pentru determinarea drumului de lungime minim dintre dou


vrfuri ale unui graf
Aceast problem este un caz particular al problemei determinrii drumului de valoare
minim ntre cele dou vrfuri ale unui graf i ea rezult dnd fiecrui arc valoarea 1, caz n
care noiunile de valoare i lungime coincid, att pentru un arc, ct i pentru un drum.
Fie graful G = ( X , ) , cu X = { x1, x2 ,..., xn } i dou vrfuri oarecare x, y X ,
x y.
Pentru determinarea drumului de lungime minim de la x la y vom folosi urmtorul
procedeu de marcare a vrfurilor:
vrful iniial, x, se marcheaz cu 0;
dac xi a fost marcat cu r, arcul ( xi , x j ) U i x j nu a fost marcat pn n
acest moment, atunci x j se marcheaz cu r + 1;
ne oprim n momentul n care y a fost marcat. Se pot face urmtoarele afirmaii.
a) Dac procesul de marcare a vrfurilor se termin fr ca y s fie marcat, aceasta
nseamn c nu exist nici un drum de la x la y.
b) Numrul cu care este marcat un vrf reprezint lungimea celui mai scurt drum prin
care se poate ajunge de la x la acel vrf.
Dac y a fost marcat, pentru determinarea unui drum de lungime minim de la x la y
vom proceda astfel:
1 Dac y a fost marcat cu m ( lungimea minim a drumurilor de la x la y este m),
atunci cutm un vrf x
( m 1)
, marcat cu m 1 , astfel nct arcul x (( m 1)
)
, y U ;
( m 1) ( m 2)
2 dup alegerea lui x , cutm un vrf x , marcat cu m 2 , astfel nct

( x( m 2)
, x(
m 1)
) U . tim c acest lucru este realizabil, cci aceast operaie, de ntoarcere
de la y la x urmeaz operaiei de marcare, de la x la y;
( 0)
3 Se procedeaz similar pn cnd se ajunge la vrful x = x.
Drumul cutat va fi: = x, x ( (1)
,x ( 2)
)
,..., y .
Din descrierea algoritmului rezult urmtoarele dou concluzii:
1 drumul de lungime minim de la x la y nu este n mod necesar unic;
2 dac ( ) astfel de drumuri, atunci se pot determina toate.

79
Exemplu
Fie graful G = ( X , ) , X = { x1 , x2 ,..., x9 } , avnd urmtoarea reprezentare sagital:

Fig. 3.2.1

S se determine drumul de lungime minim de la x1 la x9


marcm mai nti vrful x1 cu cifra 0 i apoi marcm cu 1 toate vrfurile x j care
respect condiiile:
( )
1 arcul x1, x j U ;
2 x j nu a fost marcat. Aceste vrfuri, n cazul nostru, sunt x2 i x3 . (Se redeseneaz
graful, nsoit de numerele atribuite vrfurilor sau se numeroteaz vrfurile cu alt culoare);
marcm cu cifra 2 toate vrfurile care ndeplinesc condiiile:
( )
1 xi , x j U i xi a fost marcat cu cifra 1;
2 vrful x j este nemarcat.
Aceste vrfuri vor fi x4 , x5 i x6 .
Deci, de la x1 se poate ajunge la oricare din vrfurile x4 , x5 sau x6 pe un drum de
lungime minim egal cu 2.
Marcm cu cifra 3 vrfurile x j , care ndeplinesc condiiile:

( )
1 arcul xi , x j U i xi a fost marcat cu cifra 2;
2 vrful x j este nemarcat.
Aceste vrfuri sunt x7 i x8 .
Vrful x9 va fi marcat cu 4; deci lungimea minim a drumurilor de la x1 la x9 este
de 4 uniti. S determinm, acum, un drum de lungime minim de la x1 la x9 .
Reprezentm nti vrful x9 , marcat cu cifra 4;

80
Fig. 3.2.2

Cutm un vrf xi , marcat cu 3, i astfel nct. ( xi , x9 ) U . Gsim vrfurile x7


i x8 .
Dac ne intereseaz doar un drum de lungime minim, reinem, la fiecare astfel de
etap, un singur vrf. Dac ne intereseaz, ns, toate drumurile de lungime minim, reinem
i reprezentm toate vrfurile notate cu cifra 3.
Gsim vrfurile x7 i x8 , marcate cu cifra 3 i astfel nct ( xi , x9 ) U ( i {7,8}) .
Cutm apoi un vrf notat cu (2) i astfel nct ( xi , x7 ) U i ( xi , x8 ) U .
Gsim vrfurile x5 i x6 .
Cutm un vrf xi marcat cu cifra 1 i astfel nct arcul ( xi , x5 ) U i arcul
( xi , x6 ) U . Gsim vrfurile x2 i x3 .
Cutm un vrf xi , marcat cu cifra 0 i astfel nct arcul ( xi , x2 ) sau
( xi , x3 ) U
Acest vrf este x1 .
Observm c pe un drum optim ntre x1 i x9 , vrful x9 poate fi precedat numai de
x7 sau x8 . Analog, x7 poate fi precedat numai de x5 , iar x8 numai de x6 .
Mai departe, x5 poate fi precedat de x2 i x3 , iar x6 numai de x3 .
n ultima etap, att x2 ct i x3 sunt precedate de x1 .
Deci, toate drumurile optime (n sensul lungimii minime) dintre vrfurile x1 i x9 din
graful prezentat n acest exemplu sunt urmtoarele:
1 = ( x1, x2 , x5 , x7 , x9 )
2 = ( x1, x3 , x5 , x7 , x9 )
3 = ( x1, x3 , x6 , x8 , x9 ) .

81
LECIA 7

3.3 Algoritmul lui Ford pentru determinarea drumurilor de valoare minim ntre
dou vrfuri ale unui graf
Fie graful G = ( X ,U ) cu arce valorizate i x, y X dou vrfuri ale sale.
Presupunem c ne intereseaz un drum de valoare minim ntre vrfurile x i y ale garfului G.
Pentru simplificarea expunerii, dac X are n + 1 elemente, putem numerota (renumerota)
vrfurile, astfel nct x0 = x i xn = y . Deci, X = { x0 , x1,..., xn } i ne intereseaz drumul
de valoare minim ntre x0 i xn . Facem convenia c dac ntre dou vrfuri nu exist nici
un drum, se ia ca valoare minim ntre cele dou vrfuri, valoarea + .
Admitem c pentru orice i = 1,2,..., n dispunem de un drum arbitrar de la x0 la xi
(dac astfel de drumuri exist, ele se pot depista prin procedeul descris la determinarea
drumului de lungime minim ntre dou vrfuri dintr-un graf).
Notm valoarea drumului de la x0 la xi cu i , i = 1,2,..., n ; 0 = 0 . Dac nu
exist nici un drum de la x0 la xi , se ia i = + .
Are loc urmtorul rezultat esenial n stabilirea algoritmului.
Teorema 3.3.1
Condiia necesar i suficient pentru ca i s fie minimul valorilor drumurilor de la
( )
x0 la xi , oricare ar fi i = 1,2,..., n , este ca pentru orice xk , x j U , s aib loc relaia:

j k l ( xk , x j ) (3.3.1)

Vrfurile consecutive ale unui drum de valoare minim de la x0 la xi verific relaia


de mai sus cu semnul egal.
Demonstraie
( )
Artm nti c dac ( ) un arc xk , x j astfel nct

j k > l ( xk , x j ) (3.3.2)

atunci j nu reprezint minimul valorilor drumurilor de la x0 la x j


Fie subgraful din figura urmtoare:

82
Fig. 3.3.1

(
Dac j = x0 , x j ,..., x j
1 ) este drumul de la x0 la x j de valoare j i
k = ( x0 , xk ,..., xk ) este drumul de la x0 la xk de valoare k , atunci drumul
1

j = ( x0 , xk ,..., xk , x j ) este un drum de la x0 la x j , la fel ca i j , dar de valoare j


1

mai mic dect valoarea j a lui j . ntr-adevr avem:


j = l ( j ) = l ( k ) + l ( xk , x j ) = k + l ( xk , x j ) < j , datorit relaiei (3.3.2),
presupus adevrat n ipoteza de lucru:
j k > l ( xk , x j )

Dac ns relaiile (3.3.1) sunt verificate pentru orice arc ( xk , x j ) , atunci i este
valoarea minim a drumurilor de la x0 la xi , ( ) i = 1,2,.., n . ntr-adevr, dac
= ( x0 , xi1 , xi2 ,..., xik , xi ) este un drum oarecare de la de la x0 la xi , atunci conform cu
relaia 1, avem:
i1 0 l ( x0 , xi1 ) ( j = i1, k = 0 )
i2 i1 l ( xi1 , xi2 ) ( j = i2 , k = i1 )
.........................................................
i ik l ( xik , xi ) ( j = i, k = ik )
Prin nsumarea relaiilor i cu 0 = 0 , rezult:

i l ( ) (3.3.3)

Artm acum c dac i sunt valorile optime, atunci vrfurile consecutive ale unui
drum optim de la x0 la xi verific relaiile 1 cu semnul =.
(
Dac = x0 ,..., xk , x j ,..., xi ) este drum de valoare minim de la x0 la xi atunci
subdrumul = ( x0 ,..., xk , x j ) este drum de valoare minim de la x0 la x j iar
= ( x0 ,..., xk ) , este drum de valoare minim de la x0 la xk i deci avem: l ( ) = j ;
l ( ) = k . Pe de alt parte, avem c:
l ( ) = l ( ) + l ( xk , x j ) j k = l ( xk , x j ) (3.3.4)

Teorema ne sugereaz urmtorul algoritm pentru determinarea drumului (sau


drumurilor) de valoare minim de la vrful x0 la xn .
( 0)
a) Etapa 0: Fiecrui vrf xi i se ataeaz o valoare i care s reprezinte valoarea
( 0)
unui drum de la x0 la xi cu i = 1,2,..., n i 0 = 0 .

83
b) Etapa ( k + 1) : pentru orice arc ( xi , x j ) calculm diferena (jk ) (i k ) i o
( )
comparm cu valoarea arcului xi , x j . Poate aprea una din situaiile.
b ) ( ) un arc (mai multe) ( xi , x j ) astfel nct
1

( ) ( )
jk i k > l ( xi , x j ) (3.3.5)

n acest caz lum


( ) ( )
jk +1 = i k + l ( xi , x j ) (3.3.6)

( k +1)
Dac pentru un anumit j exist mai muli indici i care verific (3.3.5), lum j
(k )
( )
egal cu cea mai mic valoare dintre valorile i + l xi , x j corespunztoare.
Dac pentru un anumit indice j nu exist nici un indice i care verific relaia (3.3.5):
( ) ( )
jk i k > l ( xi , x j ) atunci vom lua:
( ) ( )
jk +1 = jk (3.3.7)

( )
b2) Pentru orice arc xi , x j U , avem:

( ) ( )
jk i k l ( xi , x j ) (3.3.8)

(k )
n acest caz valorile i = i , i = 0,1,2,..., n , reprezint valorile optime ale
drumurilor de la x0 la xi i trecem la depistarea drumului optim care ne intereseaz.
( )
Dac drumul optim de la x0 la xn este x0 ,..., xi , x j , xn , determinm mai nti x j ,
apoi xi , .a.m.d. astfel:
cutm printre relaiile (3.3.1) satisfcute cu semnul = n ultima etap, vrful x j
care verific relaia
n j = l ( x j , xn ) (3.3.9)

odat determinat x j , se caut printre egalitile (3.3.1) din ultima etap vrful xi
pentru care:
j i = l ( xi , x j ) ,etc. (3.3.10)

Ne oprim n momentul n care ajungem la x0 .

3.4 Exemple la algoritmul lui Ford pentru determinarea drumurilor de valoare


minim ntre dou vrfuri ale unui graf

Exemplul 1
S se determine drumul de valoare minim de la x0 la x6 , n graful din figura
urmtoare:

84
Fig. 3.4.1

Etapa 0
( )
00 = 0 ;
( )
10 = l ( x0 , x1 ) = 2 ;
( )
20 = l ( x0 , x1, x2 ) = 14 ; l ( x0 , x3 , x2 ) = 15 > 14 ;
( )
30 = l ( x0 , x3 ) = 4 ; l ( x0 , x1, x3 ) = 3 < 4 ;
( ) l ( x0 , x3 , x4 ) = 6 > 5;
40 = l ( x0 , x4 ) = 5 ;
l ( x0 , x1, x4 ) = 5;
( )
50 = l ( x0 , x4 , x5 ) = 8 ; l ( x0 , x3 , x5 ) = 8 ;

l ( x0 , x3 , x5 , x6 ) = 15;

l ( x0 , x4 , x5 , x6 ) = 15;
( )
60 = l ( x0 , x3 , x6 ) = 15 ; l ( x0 , x1, x2 , x6 ) = 16 > 15;

l ( x0 , x1, x3 , x6 ) = 14;
l ( x , x , x , x , x ) = 12.
0 4 5 2 6
Observaie
( 0)
n etapa 0, fiecrui vrf xi i se ataeaz o valoare i , care reprezint valoarea
( 0)
unui drum de la x0 la xi , i = 1, n , 0 = 0 , fr ns a avea grij ca un astfel de drum, ntre
x0 i xi , s fie valoare minim dintre toate drumurile posibile ntre cele dou vrfuri.

85
( )
Etapa 1. ( k + 1 , pentru k = 0 ). Pentru fiecare arc xi , x j U , vom face diferena
( ) ( )
j0 i 0 i o vom compara cu l ( xi , x j ) . n prima coloan scriem toate arcele grafului,
ncepnd de la x6 pn la x0 .

Vrful x6 :
( x5 , x6 ) : (60 ) (50 ) = 7 = l ( x5 , x6 ) ;

(0) ( 0)
( x3 , x6 ) : 6 3 = 11 = l ( x3 , x6 ) ;
( 0) (0)
( x2 , x6 ) : 6 2 = 1 < l ( x2 , x6 ) = 2;
Vrful x5 :
( x4 , x5 ) : (50 ) (40 ) = 3 = l ( x4 , x5 ) ;
( 0) ( 0)
( x3 , x5 ) : 5 3 = 4 = l ( x3 , x5 ) ;
Vrful x4 :
( 0) ( 0)
( x3 , x4 ) : 4 3 = 1 < l ( x3 , x4 ) = 2;
( 0) ( 0)
( x0 , x7 ) : 4 0 = 5 = l ( x0 , x4 ) ;
Vrful x3 :
( x2 , x3 ) : (30 ) (20 ) = 10 < l ( x2 , x3 ) = 4;

( 0) ( 0)
( x1, x3 ) : 3 1 = 2 > l ( x1, x3 ) = 1; ( )
( 0) ( 0)
( x0 , x3 ) : 3 0 = 4 = l ( x0 , x3 ) ;

Vrful x2 :
( x5 , x2 ) : (20 ) 5( 0 ) = 6 > l ( x5 , x2 ) = 2; ( )

( 0) ( 0)
( x3 , x2 ) : 2 3 = 10 < l ( x3 , x2 ) = 11;
( 0) (0)
( x1, x2 ) : 2 1 = 12 = l ( x1, x2 ) ;

Vrful x1 :

{( x , x ) :
0 1
( 0)
1
( )
00 = 2 = l ( x0 , x1 ) .
n etapa 1 am depistat dou cazuri n care are loc relaia (3.3.5):
( ) ( )
jk i k > l ( xi , x j ) , k = 0
i doar n aceste cazuri dou cazuri este posibil mbuntirea (n sensul micorrii) valorilor
( k +1)
pentru j , prin relaia:

86
( ) ( )
jk +1 = i k + l ( xi , x j ) , k = 0 (punctul b1) din algoritm).
Pentru etapa urmtoare vom lua:
( ) ( )
31 = 10 + l ( x1, x3 ) = 2 + 1 = 3 ;
( ) ( )
21 = 50 + l ( x5 , x2 ) = 8 + 2 = 10 ;
( ) ( )
j1 = j0 pentru toi indicii j 2 , j 3 .

( )
Etapa 2. ( k + 1 , pentru k = 1 ). Actualizm toate valorile pentru j1 ,
j = 0,1, 2,...,6 :
(1) (1) (1) (1)
0 = 0; 1 = 2; 2 = 10 ( ) ; 3 = 3 ( ) ;
(1) (1) (1)
4 = 5; 5 = 8; 6 = 15.
(1) (1)
Comparm diferenele j i cu l ( xi , x j ) pentru toate arcele ( xi , x j ) U :
Vrful x6 :
(61) 5(1) = 15 8 = 7 = l ( x5 , x6 ) ;

(1) (1)
6 3 = 15 3 = 12 > l ( x3 , x6 ) = 11; ( )
(1) (1)
6 2 = 15 10 = 5 > l ( x2 , x6 ) = 2; ( )
Vrful x5 :
5(1) (41) = 8 5 = 3 = l ( x4 , x5 ) ;
(1) (1)
5 3 = 8 3 = 5 > l ( x3 , x5 ) = 4; ( )
Vrful x4 :
(41) (31) = 5 3 = 2 = l ( x3 , x4 ) ;
(1) (1)
4 0 = 5 0 = 5 = l ( x0 , x4 ) ;

Vrful x3 :
3(1) (21) = 3 10 = 7 < l ( x2 , x3 ) = 4;

(1) (1)
3 1 = 3 2 = l ( x1, x3 ) ;
(1) (1)
3 0 = 3 0 = 3 < l ( x0 , x3 ) = 4;
Vrful x2 :

87
(21) 5(1) = 10 8 = 2 = l ( x5 , x2 ) ;

(1) (1)
2 3 = 10 3 = 7 < l ( x3 , x2 ) = 11;
(1) (1)
2 1 = 10 2 = 8 < l ( x1, x2 ) = 12;
Vrful x1 :

{ (1)
1
( )
01 = 2 0 = 2 = l ( x0 , x1 ) .
(k ) ( )
Relaia (3.3.5): j i k > l ( xi , x j ) , k = 1 , are loc n trei situaii, marcate cu (*).
(1) (1) (1)
Pot fi mbuntite valorile 6 (n dou cazuri) i 5 . Pentru 6 avem:
( ) ( ) ( ) ( )
62 = 31 + l ( x3 , x6 ) = 3 + 11 = 14 sau 62 = 21 + l ( x2 , x6 ) = 10 + 2 = 12 .
Deoarece cutm un drum de valoare minim, vom alege valoare mai mic:
( )
62 = 12 .
( 2) ( 2) ( ) ( )
Pentru 5 vom avea: 5 = 31 + l ( x3 , x5 ) = 3 + 4 = 7 , deci 52 = 7 .
( 2) ( )
n rest, pentru toi indicii j 5,6 , vom avea: 5 = j1 .

( )
Etapa 3. ( k + 1 , pentru k = 2 ). Actualizm toate valorile pentru j2 ,
j = 0,1, 2,...,6 :
( 2) ( 2) ( 2) ( 2)
0 = 0; 1 = 2; 2 = 10; 3 = 3;
( 2) ( 2) ( 2)
4 = 5; 5 = 7; 6 = 12.
( 2) ( 2)
Comparm diferenele j i cu l ( xi , x j ) pentru toate arcele ( xi , x j ) U :
Vrful x6 :
(62 ) 5( 2 ) = 12 7 = 5 < l ( x5 , x6 ) = 7;

( 2) ( 2)
6 3 = 12 3 = 9 < l ( x3 , x6 ) = 11;
( 2) ( 2)
6 2 = 12 10 = 2 = l ( x2 , x6 ) ;
Vrful x5 :
5( 2 ) (42 ) = 7 5 = 2 < l ( x4 , x5 ) = 3;
( 2) ( 2)
5 3 = 7 3 = 4 = l ( x3 , x5 ) ;
Vrful x4 :
(42 ) (32 ) = 5 3 = 2 = l ( x3 , x4 ) ;
( 2) ( 2)
4 0 = 5 0 = 5 = l ( x0 , x4 ) ;
Vrful x3 :

88
3( 2 ) (22 ) = 3 10 = 7 < l ( x2 , x3 ) = 4;

( 2) (2)
3 1 = 3 2 = 1 = l ( x1, x3 ) ;
( 2) (2)
3 0 = 3 0 = 3 < l ( x0 , x3 ) = 4;
Vrful x2 :
(22 ) 5( 2 ) = 10 7 = 3 > l ( x5 , x2 ) = 2; ( )

( 2) ( 2)
2 3 = 10 3 = 7 < l ( x3 , x2 ) = 11;
( 2) ( 2)
2 1 = 10 2 = 8 < l ( x1, x2 ) = 12;
Vrful x1 :

{ ( 2)
1
( )
02 = 2 0 = 2 = l ( x0 , x1 ) .
( 2)
n aceast etap singura valoare care se mbuntete este 2 , astfel c pentru etapa
( 3) ( 2)
urmtoare ( k = 3) vom lua: 2 = 5 + l ( x5 , x2 ) = 7 + 2 = 9 .
( 3) ( 2)
n rest, pentru j 2 vom avea: j = j .

( 3)
Etapa 4. ( k + 1 , pentru k = 3 ). Actualizm valorile pentru j , j = 0,1, 2,...,6
( 3) ( 3) ( 3) ( 3)
0 = 0; 1 = 2; 2 = 9; 3 = 3;
( 3) ( 3) ( 3)
4 = 5; 5 = 7; 6 = 12.
( 3) ( 3)
Comparm diferenele j i cu l ( xi , x j ) pentru toate arcele ( xi , x j ) U .
Obinem urmtoarele valori:

Vrful x6 :
(63) 5( 3) = 12 7 = 5 < l ( x5 , x6 ) = 7;

( 3) ( 3)
6 3 = 12 3 = 9 < l ( x3 , x6 ) = 11;
( 3) ( 3)
6 2 = 12 9 = 3 > l ( x2 , x6 ) = 2; ( )
Vrful x5 :
5( 3) (43) = 7 5 = 2 < l ( x4 , x5 ) = 3;
( 3) ( 3)
5 3 = 7 3 = 4 < l ( x3 , x5 ) = 4;
Vrful x4 :

89
(43) (33) = 5 3 = 2 = l ( x3 , x4 ) ;
( 3) ( 3)
4 0 = 5 0 = 5 = l ( x0 , x4 ) ;
Vrful x3 :
3( 3) (23) = 3 9 = 6 < l ( x2 , x3 ) = 4;

( 3) ( 3)
3 1 = 3 2 = 1 = l ( x1, x3 ) ;
( 3) ( 3)
3 0 = 3 0 = 3 < l ( x0 , x3 ) = 4;
Vrful x2 :
(23) 5( 3) = 9 7 = 2 = l ( x5 , x2 ) ;

( 3) ( 3)
2 3 = 9 3 = 6 < l ( x3 , x2 ) = 11;
( 3) ( 3)
2 1 = 9 2 = 7 < l ( x1, x2 ) = 12;
Vrful x1 :

{ ( 3)
1
( )
03 = 2 0 = 2 = l ( x0 , x1 ) .
( 3)
Singura valoare care se mbuntete este 6 i pentru etapa urmtoare vom lua:
( ) ( )
64 = 23 + l ( x2 , x6 ) = 9 + 2 = 11 . n rest, pentru toi indicii j 6 vom lua:
( ) ( )
j4 = j3 .

( )
Etapa 5. ( k +1, pentru k = 4 ). Actualizarea valorilor pentru j4 :
( 4) ( 4) ( 4) ( 4)
0 = 0; 1 = 2; 2 = 9; 3 = 3;
( 4) ( 4) ( 4)
4 = 5; 5 = 7; 6 = 11.
( 4) ( 4)
Comparm diferenele j i cu l ( xi , x j ) pentru toate arcele ( xi , x j ) U :
Vrful x6 :
(64 ) 5( 4 ) = 11 7 = 4 < l ( x5 , x6 ) = 7;

( 4) ( 4)
6 3 = 11 3 = 8 < l ( x3 , x6 ) = 11;
( 4) ( 4)
6 2 = 11 9 = 2 = l ( x2 , x6 ) ; ( )
Vrful x5 :
5( 4 ) (44 ) = 7 5 = 2 < l ( x4 , x5 ) = 3;
( 4) ( 4)
5 3 = 7 3 = 4 = l ( x3 , x5 ) ; ( )
Vrful x4 :

90
(44 ) 3( 4 ) = 5 3 = 2 = l ( x3 , x4 ) ; ( )
( 4) ( 4)
4 0 = 5 0 = 5 = l ( x0 , x4 ) ; ( )
Vrful x3 :
3( 4 ) (24 ) = 3 9 = 6 < l ( x2 , x3 ) = 4;

( 4) (4)
3 1 = 3 2 = 1 = l ( x1, x3 ) ; ( )
( 4) (4)
3 0 = 3 0 = 3 < l ( x0 , x3 ) = 4;
Vrful x2 :
(24 ) 5( 4 ) = 9 7 = 2 = l ( x5 , x2 ) ; ( )

( 4) ( 4)
2 3 = 9 3 = 6 < l ( x3 , x2 ) = 11;
( 4) ( 4)
2 1 = 9 2 = 7 < l ( x1, x2 ) = 12;
Vrful x1 :

{ ( 4)
1
( )
04 = 2 0 = 2 = l ( x0 , x1 ). ( )
Constatm c la sfritul etapei a 5-a, n toate relaiile obinute nu mai apare semnul
( 4)
>, deci, conform teoremei demonstrate anterior, valorile i = 1 , i = 0,1, 2,...,6 , sunt
valorile optime.
Etapa final a algoritmului presupune determinarea drumului optim (de valoare
minim), de la x6 la x0 . n ultima etap am marcat cu (*) toate relaiile (3.3.1) satisfcute cu
semnul =. Dac notm cu i penultimul vrf al acestui drum, atunci indicele i verific
ecuaia: 6 i = l ( xi , x6 ) (a se vedea relaia nr. 3.3.9). Vom cuta printre egalitile (*) din
relaiile scrise n ultima etap i care corespund vrfului x6 , indicele sau indicii i care verific
aceast relaie tip egalitate. Rezult i = 2 . Deci, pe drumul optim de la x0 la x6 , ultimul arc este
( x2 , x6 ) .
Fie acum xi vrful care-l precede pe x2 pe drumul optim. Trebuie s avem, conform
relaiei (3.3.10), ndeplinit 2 i = l ( xi , x2 ) . Cutm la relaiile
condiia:
corespunztoare vrfului x2 i gsim: 2 5 = 2 = l ( x5 , x2 ) . Deci x5 l precede pe x2
pe drumul optim. Mai departe:
5 i = l ( xi , x5 ) i = 3;
Rezult:
5 3 = 4 = l ( x3 , x5 ) .
3 i = l ( xi , x3 ) i = 1;
Apoi:
3 1 = l ( x1, x3 ) = 1.
n sfrit: 1 0 = 2 = l ( x0 , x1 ) i = 0
Deci, drumul de valoare optim (minim) de la x0 la x6 este:

91
= ( x0 , x1, x3 , x5 , x2 , x6 ) .
Observaie
1. Algoritmul se poate programa uor.
2. Se poate evita etapa iniial a determinrii unor drumuri de la x0 la xi ,
i = 1,2,..., n , astfel:
( 0) (0)
n etapa 0 (iniial) se iau valorile: 0 = 0 i i = M , unde M este un
numr mai mare dect, de exemplu, suma valorilor tuturor arcelor grafului. De obicei se ia
M = + i se utilizeaz convenia + = 0 ;
pornind de la aceste valori iniiale se fac mbuntiri succesive, conform
algoritmului prezentat pn la obinerea valorilor optime. Acest algoritm se numete
algoritmul lui Ford.
Exemplul 2
S se determine drumul de valoare minim ntre x0 i x5 n graful urmtor:

Fig. 3.4.2

La sfritul etapei a 4-a constatm c toate relaiile (3.3.1) sunt de forma :


(i )
( ) ( )
(
jk i k l xi , x j , ) k = 4 , deci valorile 4
sunt valorile optime
( 4) ( 4)
(
( j i l xi , x j , ) ( ) ( xi , x j ) U ).
Depistarea drumului optim de la x0 la x5
Notm cu xi penultimul vrf pe drumul optim. Atunci, pentru indicele i avem relaia:
( ) ( )
5 i l ( xi , x5 ) , n etapa k = 4 . Rezult: 54 24 = l ( x2 , x5 ) = 4 . Deci,
penultimul vrf este x2 : = (..., x2 , x5 ) .
Fie acum, xi vrful care precede pe x2 pe drumul optim. Vom avea:
( ) ( )
24 i 4 = l ( xi , x2 ) . Pentru vrful x2 aceast relaie este verificat pentru i = 3 ,
( ) ( )
24 34 = l ( x3 , x2 ) = 1. Rezult c predecesorul lui x2 , pe drumul optim este vrful
x3 ; = ( x0 ,..., x3 , x2 , x5 ) .
Fie xi vrful care precede pe x3 , pe drumul optim. Avem:
( ) ( )
34 i 4 = l ( xi , x4 ) .

92
Singurul vrf pentru care are loc egalitatea este x1 . Deci, = ( x0 ,..., x1 , x3 , x2 , x5 ) .
( 4) ( 4)
Mai departe: 1 i = l ( xi , x1 ) i = 0 (singurul vrf pentru care are loc relaia de
egalitate).
Aadar, drumul optim (de valoare minim) este:
= ( x0 , x1, x3 , x2 , x5 ) i l ( ) = 8 .
Rezultatele calculelor vor fi trecute ntr-un tabel:

93
arce ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
l ( xi , x j ) ( ) j0 i 0 ( ) j1 i1 ( ) j2 i 2 ( ) j3 i 3 ( ) j4 i 4
( xi , x j ) i 0 i1 i 2 i 3 i 4
Vrful x5
( ) ( ) ( ) ( ) ( )
( x4 , x5 ) 7 00 = 0 0 01 = 0 + (*) 02 = 0 7 03 = 0 5 04 = 0 4<
( ) ( ) ( ) ( ) ( )
( x2 , x5 ) 4 10 = 0 11 = 2 0 12 = 2 8 (*) 13 = 2 5 (*) 14 = 2 4 =
Vrful x4
( ) ( ) ( ) ( ) ( )
( x3 , x4 ) 1 20 = 0 21 = 22 = 5 3 (*) 23 = 4 1 24 = 4 1 =
( )
( ) 31 = + ( ) ( ) ( )
( x0 , x4 ) 6 30 = (*) 6 32 = 3 6 33 = 3 4 34 = 3 4<
Vrful x3
( ) ( ) ( ) ( ) ( )
( x1, x3 ) 1 40 = 0 41 = 6 + (*) 42 = 6 1 43 = 4 1 44 = 4 1 =
Vrful x2
( ) ( ) ( ) ( ) ( )
( x3 , x2 ) 1 50 = 0 51 = 0 52 = 13 2 (*) 53 = 9 1 54 = 8 1 =
( x1, x2 ) 3 0 + (*) 3 2 2<
Vrful x1
( x0 , x1 ) 2 (*) 2 2 2 2 =
Vrful x0
( x3 , x0 ) 5 3 3 3 <
( ) ( ) ( ) ( )
(
41 = 00 + l x0 , x4 )=6 52 = 41 + l ( x4 , x5 ) = 6 + 7 = 13 ( ) ( )
( ) ( ) ( ) ( ) 53 = 22 + l ( x2 , x5 ) = 5 + 4 = 9
(
11 = 00 + l x0 , x1 )=2 32 = 11 + l ( x1, x3 ) = 2 + 1 = 3 ( ) ( )
( ) ( ) ( ) ( ) 43 = 32 + l ( x3 , x4 ) = 3 + 1 = 4
(
i1 = i 0 , i 1.4 ) 22 = 11 + l ( x1, x2 ) = 2 + 3 = 5 ( ) ( )
( ) ( ) 23 = 32 + l ( x3 , x2 ) = 3 + 1 = 4
(
54 = 23 + l x2 , x5 )=4+4=8

94
3.6 Algoritmul lui Ford pentru determinarea drumurilor de valoare maxim
dintre dou vrfuri ale unui graf fr circuite. Exemple.
Dac G = ( X ,U ) este un graf fr circuite, putem cuta drumuri de valoare maxim
ntre dou vrfuri distincte ale grafului. Deoarece ntr-un graf finit exist un numr finit de
drumuri, atunci dac exist drumuri ntre vrfurile distincte x i y, printre ele exist (cel puin)
unul de valoare maxim.
Dac ntre dou vrfuri nu exist nici un drum vom spune n mod convenional c
valoare maxim este . Presupunem c X = { x0 , x1,..., xn } i c ne intereseaz drumul
de valoare maxim de la x0 la xn .
Dac i reprezint valoarea unui drum de la x0 la xi , putem enuna o teorem
analoag celei din cazul determinrii drumului de valoare minim dintre dou vrfuri distincte
ale grafului:
Teorem 3.6.1
Condiia necesar i suficient pentru ca i s fie valoarea maxim a drumurilor de la
( )
x0 la xi ( i = 1,2,..., n ) este ca pentru orice xi , x j U s aib loc relaia:

j i l ( xi , x j ) , ( 0 = 0 ). (3.6.1)

Vrfurile consecutive ale unui drum optim de la x0 la xi ( i 0 ) verific relaia cu


semnul =.
Demonstraia este analoag celei de la teorema anterioar.
Pe baza teoremei se dezvolt algoritmul lui Ford, pentru determinarea drumului de
valoare maxim dintre vrfurile x0 i xn .
( 0) ( 0) ( 0) ( 0)
n prima etap, fie se calculeaz valorile iniiale 0 , 1 ,..., n , 0 = 0 , fie se
( 0) ( 0) (0) ( 0)
pleac de la urmtoarele valori: 0 = 0 ; 1 = 2 = ... = n = , cu convenia
( ) = + = 0 .
n etapele urmtoare aceste valori se vor mbunti succesiv pn la obinerea
valorilor optime.
(
Astfel, dac la etapa k + 1 exist un arc xi , x j astfel nct )
( ) ( )
jk i k < l ( xi , x j ) , (3.6.2)

(k )
atunci valoarea j poate fi mbuntit, lund pentru etapa urmtoare,
( ) ( ) ( )
jk +1 = i k + l ( xi , x j ) > jk . (3.6.3)

(k )
Procesul continu pn cnd nici una din valorile j , j = 1,..., n nu mai poate fi
mbuntit. La sfritul acestei etape se obin valorile optime pentru j i se trece la
determinarea drumului optim (de valoare maxim) de la x0 la xn , analog ca n cazul
drumurilor de valoare minim.

95
Exemplul 1
S se determine drumul de valoare maxim de la x0 i x5 n graful urmtor:

Fig. 3.6.1

Etapa 1. ( k + 1 , pentru k = 0 ).
( 0) ( 0) ( ) ( )
Pentru nceput lum: 0 = 0 ; 1 = 20 = ... = 50 = .
( 0) ( 0)
Dintre aceste valori singurele care se mbuntesc sunt 1 i 2 , astfel:
( ) ( )
11 = 00 + l ( x0 , x1 ) = 3 ;
( ) ( )
21 = 00 + l ( x0 , x2 ) = 5 .
(1) (1) (1) (1)
Pentru celelalte valori, n etapa urmtoare lum: 3 = 4 = 5 = ; 0 = 0 .

Etapa 2. ( k + 1 , pentru k = 1 ). Se calculeaz pentru toate arcele ( xi , x j ) U ,


(1)
diferenele j i (
(1) i se compar cu l x , x .
i j )
Vrful x5 :
( x4 , x5 ) : (51) (41) = 0 < l ( x4 , x5 ) = 5;
(1) (1)
( x3 , x5 ) : 5 3 = 0 < l ( x3 , x5 ) = 10;
Vrful x4 :
( x3 , x4 ) : (41) (31) = 0 < l ( x3 , x4 ) = 5;

(1) (1)
( x2 , x4 ) : 4 2 = < l ( x2 , x4 ) = 5; ( )
(1) (1)
( x1, x4 ) : 4 1 = < l ( x1, x4 ) = 6; ( )
Vrful x3 :
96
( x2 , x3 ) : (31) (21) = < l ( x2 , x3 ) = 4; ( )

(1) (1)
( x1, x3 ) : 3 1 = < l ( x1, x3 ) = 4; ( )
(1) (1)
( x0 , x3 ) : 3 0 = < l ( x0 , x3 ) = 13; ( )
Vrful x2 :

{( x , x ) :
0 2
(1)
2
( )
01 = 5 = l ( x0 , x2 ) ;
Vrful x1 :
( x2 , x1 ) : 1(1) (21) = 3 5 = 2 < l ( x2 , x1 ) = 4; ( )
(1) (1)
( x0 , x1 ) : 1 0 = 3 = l ( x0 , x1 ) .
Au fost marcate cu (*) relaiile care pot aduce efectiv mbuntiri valorilor j .

(
Primele trei relaii, dei sunt de forma j i < l xi , x j , nu aduc practic nici o )
mbuntire. De exemplu, din prima relaie, pentru ( x4 , x5 ) , ar trebui s lum:
( ) ( )
52 = 41 + l ( x4 , x5 ) = . Aceasta se ntmpl pentru toate arcele xi , x j U , pentru ( )
(
care i = j = i l xi , x j > 0 i finit.)
(1) (1) (1)
Se pot mbunti valorile: 4 , 3 , 1 i le vom calcula:
(42 ) = (21) + l ( x2 , x4 ) = 5 + 5 = 10;
( 2) (1)
4 = 1 + l ( x1, x4 ) = 3 + 6 = 9.
( 2)
Cum noi cutm drumul de valoare maxim, alegem 4 = 10 .
3( 2 ) = (21) + l ( x2 , x3 ) = 5 + 4 = 9;

( 2) ( 2) (1)
Pentru 3 : 3 = 1 + l ( x1, x3 ) = 3 + 4 = 7;
( 2) (1)
3 = 0 + l ( x0 , x3 ) = 0 + 13 = 13.
( 2)
Alegem 3 = 13 (valoarea maxim).

(1)
1( 2 ) = (21) + l ( x2 , x1 ) = 5 + 4 = 9;
Pentru 1 : ( 2) (1)
1 = 0 + l ( x0 , x1 ) = 0 + 3 = 3.
( 2)
Alegem 1 = 9 (valoarea maxim).
Pentru celelalte valori ale lui j, j {0,2,5} , pstrm valorile anterioare:
( ) ( ) ( ) ( ) ( ) ( )
02 = 01 = 0 , 22 = 21 = 5 , 52 = 51 = .
Se recalculeaz, pentru toate arcele ( xi , x j ) U , diferenele: ( ) ( )
j2 i 2 i se
(
compar cu l xi , x j . )
97
Valorile actualizate ale numerelor j pentru etapa a 3-a sunt, deci

(0 ) = 0 , 1( ) = 9 , (2 ) = 5 , (3 ) = 13 , (4 ) = 10 , (5 ) = .
2 2 2 2 2 2

Etapa 3. ( k + 1 pentru k = 2 )
Vrful x5 :
( 2) ( 2)
5 4 = < l ( x4 , x5 ) = 5; ( )
( 2)
5 3( ) = < l ( x3 , x5 ) = 10; ( )
2

Vrful x4 :
( 2 ) ( 2 ) = 3 < l ( x , x ) = 5; ( )
4 3 3 4
(2) ( 2)
4 2 = 5 = l ( x2 , x4 ) ;
(2) ( 2)
4 1 = 1 < l ( x1, x4 ) = 6; ( )

Vrful x3 :
( 2 ) ( 2 ) = 8 > l ( x , x ) = 4;
3 2 2 3
( 2) ( 2)
3 1 = 4 = l ( x1, x3 ) ;
( 2) ( 2)
3 0 = 13 = l ( x0 , x3 ) ;

Vrful x2 :

{( ) ( ) = 5 = l ( x , x );
2
2
0
2
0 2

Vrful x1 :
( 2 ) ( 2 ) = 4 = l ( x , x ) ;
1 2 2 1
(2)
1 (0 ) = 9 > l ( x0 , x1 ) = 3.
2

Inegalitile j i (
i j )
( k ) ( k ) < l x , x au fost marcate cu (*). Se pot mbunti ( 2 )
5
( 2)
i 4 . Valoarea mbuntit pentru etapa urmtoare se calculeaz cu relaia:

(j
k +1)
(
= (i ) + l xi , x j
k
) ( > ( ) ) .
i
k

Pentru 5 avem:
( 3) = ( 2 ) + l ( x , x ) = 10 + 5 = 15;
5 4 4 5
( 3)
5 = (3 ) + l ( x3 , x5 ) = 13 + 10 = 23.
2

( 3)
Vom lua 5 = 23 , deoarece cutm drumul de valoare maxim ntre valorile x0 i
x5 .

98
Pentru 4 avem:
( 3) = ( 2 ) + l ( x , x ) = 13 + 5 = 18;
4 3 3 4
( 3)
4 = 1( ) + l ( x1, x4 ) = 9 + 6 = 15.
2

( 3)
Din acelai motiv vom lua, pentru etapa urmtoare, 4 = 18 .
Valorile actualizate ale numerelor j pentru etapa a 4-a sunt:

(0 ) = 0 , 1( ) = 9 , (2 ) = 5 , 3( ) = 13 , (4 ) = 18 , (5 ) = 23 .
3 3 3 3 3 3

Etapa 4. ( k + 1 pentru k = 3 ). Se recalculeaz pentru toate arcele ( xi , x j ) U ,


( 3)
diferenele j i (
( 3) i se compar cu l x , x .
i j )

Vrful x5 :
( 3 ) ( 3 ) = 5 = ( x , x ) ;
5 4 4 5
( 3)
5 (3 ) = 10 = l ( x3 , x5 ) ;
3

Vrful x4 :
( 3 ) ( 3) = 5 = l ( x , x ) ;
3 4
4 3
( 3) ( 3)
4 2 = 13 > l ( x2 , x4 ) = 5;
( 3) ( 3)
4 1 = 9 > l ( x1, x4 ) = 6;

Vrful x3 :
( 3) ( 3) = 8 > l ( x , x ) = 4;
2 3
3 2
( 3) ( 3)
3 1 = 4 = l ( x1, x3 ) ;
( 3) ( 3)
3 0 = 13 = l ( x0 , x3 ) ;

Vrful x2 :

{( ) ( ) = 5 = l ( x , x );
2
3
0
3
0 2

Vrful x1 :
( 3 ) ( 3) = 4 = l ( x , x ) ;
1 2 2 1
( 3)
1 (0 ) = 9 > l ( x0 , x1 ) .
3

99
La sfritul acestei etape toate relaiile dintre j i ( i )
( k ) ( k ) i l x , x sunt de tip =
j
( 3)
sau >, deci nici unul dintre numerele i nu mai poate fi mbuntit. Rezult c valorile:
0 = 0 ; 1 = 9 ; 2 = 5 ; 3 = 13 ; 4 = 18 ; 5 = 23 sunt optime i se poate trece
la etapa de depistare a drumului optim de la x0 i x5 .
Determinarea drumului optim de la x0 la x5 .
Dac xi este penultimul vrf al drumului optim, atunci: 5 i = l ( xi , x5 ) (relaii
de tip =). Rezult i = 3 sau i = 4 . Fie x3 penultimul vrf. Dac x j precede pe x3 , atunci:
3 j = l ( x j , x3 ) . Rezult j = 0 sau j = 1 . Dac j = 0 , se obine drumul optim
1 = ( x0 , x3 , x5 ) . Dac j = 1 se determin succesiv vrfurile care-l preced pe x1 i se
obine drumul optim: 2 = ( x0 , x2 , x1, x3 , x5 ) . Dac penultimul vrf este luat x4 , atunci
analog se determin toate vrfurile care-l preced pe x4 i se obin drumurile optime:
3 = ( x0 , x3 , x4 , x5 ) , 4 = ( x0 , x2 , x1, x3 , x4 , x5 ) .
Valoarea fiecruia dintre drumurile determinate este maxim i egal cu 23.

100
LECIA 8
3.7 Algoritmul Bellman-Kalaba pentru determinarea drumurilor de valoare
minim dintre dou vrfuri ale unui graf

Definiia 3.7.1
Un graf se numete graf cu arce valorizate dac este definit astfel: G = ( X ,U , l ) ,
unde X = { x0 , x1 ,..., xn } este mulimea vrfurilor, U = mulimea arcelor i l :U +
este o funcie real, pozitiv, care asociaz fiecrui arc un numr pozitiv numit valoarea sa.
Funcia l se poate prelungi pe mulimea drumurilor din graf. n cele ce urmeaz se va
considera c l este definit pe mulimea drumurilor.
Ne propunem s determinm drumul de valoare minim de la x0 la xn . Algoritmul
lui Bellman-Kalaba ce va fi descris n continuare are la baz principiul optimalitii
formulat, la modul general , astfel: orice subpolitic a unei politici optime este, de asemenea,
o politic optim. n cazul grafurilor formularea este, pentru situaia determinrii drumurilor
minime, urmtoarea: orice subdrum al unui drum optim este, de asemenea, un drum optim.

( )
l ( i, j ) , dac xi , x j U , i j;

Fie cij = 0, dac i = j; (3.7.1)

+, ( )
dac xi , x j U , i j.
Pentru a nelege mai bine utilitatea introducerii acestei notaii vom considera graful
( )
G = X ,U% , l% , n care exist toate arcele posibile, cu excepia buclelor, iar aceste arce sunt
valorizate astfel:

l ( u ) dac u U ;
l% ( u ) = (3.7.2)
+ dac u U% \ U .

Prin urmare cij ( i j ) reprezint valoarea arcului ( xi , x j ) n G% ; orice drum n G%


care nu exist n G are valoarea + , iar orice drum din G exist i n G% i are aceeai
valoare n ambele grafuri.
Aflarea unui drum de valoare minim ntre dou vrfuri n G este echivalent cu
aflarea drumului de valoare minim ntre cele dou vrfuri din G% . Este preferabil s folosim
( )
graful G% deoarece n raionamente putem vorbi despre arcul xi , x j , oricare ar fi vrfurile
distincte xi i x j . Dac un drum optim ntre dou vrfuri va avea valoarea + , atunci
aceasta nseamn c n graful G nu exist nici un drum ntre cele dou vrfuri.
Fazele i etapele algoritmului:
Faza I declanarea i funcionarea algoritmului pn la realizarea condiiei de
oprire.
Etapa 0
(k ) (k )
Definim numerele vi , i = 0,1,..., n 1 , vn = 0 , ca fiind valoarea minim a
drumurilor de la xi la xn formate din k + 1 arce.
101
(k )
Determinarea valorilor optime vi cuprinde k etape.
(0)
= cin , i = 0,1,..., n ; vn( ) = 0 . Se construiete
0
n aceast etap se definesc vi

( )
matricea c = cij . vi
( 0)
, i = 0,1,..., n 1 , reprezint valoarea drumului format dintr-un
singur arc, de la xi la xn .

Etapa 1
(1)
n etapa urmtoare vom lua vi = valoarea minim a drumurilor formate din cel mult
dou arce de la xi la xn , unde i = 0,1,..., n 1 .
Pentru i fixat, drumurile de la xi la xn , formate din cel mult dou arce, sunt
urmtoarele:
( xi , x1, xn ) , ( xi , x2 , xn ) ,..., ( xi , xi 1, xn ) , ( xi , xn ) , ( xi , xi +1, xn ) ,..., ( xi , xn 1, xn ) .
Valorile acestor drumuri sunt, respectiv urmtoarele:
l% ( xi , x1, xn ) = l% ( xi , x1 ) + l% ( x1, xn ) = ci1 + v1( ) ;
0

l% ( xi , x2 , xn ) = l% ( xi , x2 ) + l% ( x2 , xn ) = ci 2 + v2( ) ;
0

.......................................................................
l% ( xi , xn ) = vi( ) = cin = l% ( xi , xi , xn ) = cii + vi( ) = vi( ) , ( cii = 0 ) ;
0 0 0

........................................................................
l ( xi , xn 1, xn ) = l% ( xi , xn 1 ) + l% ( xn 1, xn ) = cin 1 + vn( )1.
0

Valoarea minim a drumurilor de la xi la xn , formate din cel mult dou arce este:

( )
n
vi( ) = min cij + v (j ) , vn( ) = 0 , i = 0,1,..., n 1
1 0 1
(3.7.3)
j =0

Etapa 2
( 2)
n etapa a doua vom lua vi = valoarea minim a drumurilor de la xi la xn formate
( 2)
din cel mult trei arce, i = 0,1,..., n 1 i vn = 0 .
Cel mai bun drum de la xi la xn format din cel mult trei arce i care are drept al
doilea vrf un anumit vrf x j este format din arcul xi , x j ( ) i cel mai bun drum de la x j la
xn format din cel mult dou arce. Valoarea acestui drum este:

cij + v(j ) ,
1
(3.7.4)

astfel c pentru aceast etap vom lua:

( )
n
vi( ) = min cij + v(j ) , i = 0, n 1 i vn( ) = 0 .
2 1 2
(3.7.5)
j =0

102
S mai observm c pentru j = i expresia (3.7.4) ne d valoarea celui mai bum drum
(1) (1)
de la xi la xn format din cel mult dou arce: cii + vi = vi , ( cii = 0 ) , iar pentru j = n
aceeai expresie, (3.7.4), ne d valoarea drumului format dintr-un singur arc:

cin + vn( ) = cin , vn( ) = 0 .


1
( 1
) (3.7.6)

Deci, putem afirma c cel mai bun drum de la xi la xn format din cel mult trei arce
are valoarea

( )
n
vi( ) = min cij + v(j ) , i = 0,1,..., n 1 . Cum, n general, cij 0 , rezult c:
2 1
j =0

vi( ) vi( ) , ( ) i = 0,1,..., n 1.


2 1
(3.7.7)
n continuare se procedeaz analog i la etapa a k-a vom lua:

( )
n
vi( ) = min cij + v (j ) , i = 0, n 1 i vn( ) = 0 .
k k 1 k
(3.7.8)
j =0

Printr-un raionament similar se arat c vi


( k ) reprezint valoarea celui mai bun drum
de la xi la xn , format din cel mult k + 1 arce i c, pentru orice k i i,

vi( ) vi( )
k k 1
(3.7.9)
Condiia de oprire a algoritmului
(k )
< vi(
k 1)
Dac, ntr-o anumit etap, pentru un anumit i, avem c vi aceasta
nseamn c exist cel puin un drum de la xi la xn format din exact k + 1 arce care este mai
bun (adic de valoare mai mic) dect orice drum de la xi la xn format din cel mult k arce.
(Acest drum poate apare n etapa urmtoare, k + 1 ).
(k )
= vi(
k 1)
Procedeul de calcul se va ntrerupe la prima etap k n care vom avea: vi ,
() i = 0, n 1 .
(k )
= vi(
k 1)
n aceast etap valoarea vi , pentru orice i = 0, n 1 , reprezint valoarea
(k )
celui mai bun drum (de valoare minim) de la xi la xn , deci vi sunt valorile optime,
() i = 0, n 1 .
Faza II determinarea drumului optim de la x0 la xn .
Dup realizarea condiiei de oprire a algoritmului (avnd ca stare iniial cunoaterea
(k )
valorilor optime vi , i = 0, n 1 ) se trece la determinarea drumului optim de la x0 la xn .
( )
Presupunnd c acest drum este = x0 , xi , x j ,..., xn , se determin succesiv indicii
i, j ,... astfel:
1. indicele i se determin din relaia: v0 = c0i + vi ;

103
2. odat determinat i i dac i n se trece la determinarea vrfului urmtor x j din
relaia: vi = cij + v j etc.
n concluzie algoritmul Bellman-Kalaba pentru determinarea drumului de valoare
minim de la x0 la xn const n:
Faza I declanarea i funcionarea algoritmului pn la realizarea condiiei de
oprire.
( 0)
= cin , i = 0, n 1 , vn( ) = 0 (Faza I, etapa 0);
0
a) se ia vi

( )
n
( k ) = min c + v( k 1) ,
i = 0, n i vn( ) = 0 .
k
b) pentru k = 1,2,... , se calculeaz vi ij j
j =1
(Faza I, etapele 1, 2,...,k );
vi( ) = vi( ) ,
k 1
c) dac ntr-o etap k se ajunge la
k
( ) i = 0, n , valorile

vi = vi( ) = vi( ) sunt valorile optime i se trece la determinarea drumului optim.


k k 1

Faza II determinarea drumului optim (de valoare minim )de la x0 la xn .


Aceasta se face innd cont c dac xi , x j sunt vrfuri consecutive n aceast ordine
ale drumului optim, atunci vi = cij + v j .

3.8 Exemple la algoritmul lui Bellman-Kalaba pentru determinarea drumurilor


de valoare minim dintre dou vrfuri ale unui graf

Exemplul 3.8.1
S se determine drumul de valoare minim de la x0 la x6 n graful din figura
urmtoare

Fig. 3.8.1

Faza I declanarea i funcionarea algoritmului pn la realizarea condiiei de


oprire.
Etapa 0; k = 0 .

104
( )
n aceast etap se construiete matricea C = cij , i, j = 0,1,...,6 i se definesc

= ci 6 , i = 0,1,...,5 , v6( ) = 0 , reprezentnd valoarea drumului format dintr-un


( 0) 0
numerele vi
singur arc de la xi , i = 0,1,...,5 , la x6 .
Matricea C este urmtoarea:
x0 x1 x2 x3 x4 x5 x6
0 2 4 5 x0
0 12 1 x1
0 4 2 x2
C=
11 0 2 4 11 x3
0 3 x4
2 0 7 x5
0 x6
Se observ c elementele diagonalei principale ale matricei C sunt nule ( cii = 0 ,
(0) ,
conform cu relaia (3.7.1)). Valorile vi i = 0,1, 2,...,6 , se afl pe ultima coloan a
matricei C.
Etapa 1; k = 1 .

( )
6
(1) = min c + v( 0 ) ,
n aceast etap se calculeaz valorile vi ij j i = 0,1,2,...,5 ,
j =0

v6( ) = 0 (conform relaiilor 3.7.3), reprezentnd valoarea minim a drumurilor de la xi la


1

x6 , formate din cel mult dou arce. Avem:


Pentru i = 0 :

( )
6
v0( ) = min c0 j + v(j ) = min ( 0 + ;2 + ; + 2;4 + 11;5 + ; + 7; + 0 ) = 15 ;
1 0
j =0
Practic, se adun elementele corespunztoare din linia lui x0 cu elementele
corespunztoare din coloana lui x6 din matricea C, dup care se determin cea mai mic
valoare din vectorul rezultat.
Pentru i = 1 :

( )
6
v1( ) = min c1 j + v(j ) = min ( + ;0 + ;12 + 2;1 + 11; + ; + 7; + 0 ) = 12 =
1 0
j =0
6
( )
= min c1 j + c j 6 min ( linia lui x1 + coloana lui x6 ) .
j =0
Pentru i = 2 :

( )
6
v2( ) = min c2 j + v(j ) = min ( + ; + ;0 + 2;4 + 11; + ; + 7;2 + 0 ) = 2 =
1 0
j =0
6
( )
= min c2 j + c j 6 min ( linia lui x2 + coloana lui x6 ) .
j =0

105
Pentru i = 3 :

( )
6
v3( ) = min c3 j + v(j ) = min ( + ; + ;11 + 2;0 + 11;2 + ;4 + 7;11 + 0 ) = 11 =
1 0
j =0
6
( )
= min c3 j + c j 6 min ( linia lui x3 + coloana lui x6 ) .
j =0
Pentru i = 4 :

( )
6
v4( ) = min c4 j + v(j ) = min ( + ; + ; + 2; + 11;0 + ;3 + 7; + 0 ) = 10 =
1 0
j =0
6
( )
= min c4 j + c j 6 min ( linia lui x4 + coloana lui x6 ) .
j =0

Pentru i = 5 :

( )
6
v5( ) = min c5 j + v (j ) = min ( + ; + ;2 + 2; + 11; + ;0 + 7;7 + 0 ) = 4 =
1 0
j =0
6
( )
= min c5 j + c j 6 min ( linia lui x5 + coloana lui x6 ) .
j =0
(1)
Pentru i = 6 : v6 = 0 .
La sfritul etapei 1 rezult vectorul
1
( 1 1 1
)
V ( ) = v0( ) , v1( ) , v2( ) ,..., v6( ) = (15,12,2,11,10,4,0 ) .
1

( 0)
Comparnd cu V = ( , ,2,11, ,7,0 ) (comparaia se face ntre componentele
(1)
< vi( ) i anume i {0,1,4,5} ,
0
de acelai rang) se constat c exist indici i pentru care vi
deci algoritmul continu.
Etapa 2; k = 2 .

( )
6
( 2 ) = min c + v(1) ,
n aceast etap se calculeaz valorile vi ij j i = 0,1,2,...,5 i
j =0

v6( ) = 0 (conform relaiilor (3.7.5)), reprezentnd valoarea minim a drumurilor de la xi la


0

x6 formate din cel mult trei arce. Conform relaiilor 3.7.5 i a observaiilor din etapa 1,
rezult c pentru fiecare i = 0,1, 2,...,5 se va aduna linia corespunztoare vrfului xi din
matricea C cu linia vectorului V
(1)
obinut la sfritul etapei 1, element cu element i apoi se
va determina cea mai mic valoare din fiecare vector astfel obinut. Se obine:

( )
6
i = 0 : v0( ) = min c0 j + v (j ) = 14 < v0( ) = 15 ;
2 1 1
j =0

i = 1 : v( ) = min ( c + v( ) ) = 12 = v( ) ;
6
2 1 1
1 1j j 1
j =0

106
( )
6
i = 2 : v2 = min c2 j + v(j ) = 2 = v2( ) ;
( 2) 1 1
j =0

i = 3 : v( ) = min ( c + v( ) ) = 8 < v( ) = 11 ;
6
2 1 1
3 3j j 3
j =0

i = 4 : v( ) = min ( c + v( ) ) = 7 < v( ) = 10 ;
6
2 1 1
4 4j j 4
j =0

i = 5 : v( ) = min ( c + v( ) ) = 4 = v( ) ;
6
2 1 1
5 5j j 5
j =0

v6( )
2
i = 6: = 0.
(2)
Se obine vectorul V = (14,12,2,8,7, 4,0 ) .
(1)
Comparnd cu vectorul V , obinut la sfritul etapei 1, se constat c exist indici i
( 2) (1) ( 2)
pentru care vi < vi i anume i {0,3,4} , deci valorile vi nu sunt optime, astfel c
algoritmul se continu cu etapa urmtoare.
Etapa 3; k = 3 .
( 3) ( 3)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 utiliznd relaiile (3.7.8), pentru

( )
6
k = 3 : vi( ) = min cij + v(j ) , i = 0,1,2,...,5 . Se obine:
3 2
j =0

( )
6
i = 0 : v0( ) = min c0 j + v(j ) = 12 < v0( ) = 14 ;
3 2 2
j =0

i = 1 : v( ) = min ( c + v( ) ) = 9 < v( ) = 12 ;
6
3 2 2
1 1j j 1
j =0

i = 2 : v( ) = min ( c + v( ) ) = 2 = v( ) ;
6
3 2 2
2 2j j 2
j =0

i = 3 : v( ) = min ( c + v( ) ) = 8 = v( ) ;
6
3 2 2
3 3j j 3
j =0

i = 4 : v( ) = min ( c + v( ) ) = 7 = v( ) ;
6
3 2 2
4 4j j 4
j =0

i = 5 : v( ) = min ( c + v( ) ) = 4 = v( ) ;
6
3 2 2
5 5j j 5
j =0

i = 6 : v6( ) = 0 .
3

( 3)
Se obine vectorul V = (12,9,2,8,7,4,0 ) .
( 2)
n urma comparaiei (pe componente) cu V se constat c exist indicii i {0,1}
( 3) (2) ( 3)
pentru care vi < vi , deci valorile vi nu sunt optime i algoritmul continu.
Etapa 4; k = 4 .

107
( 4) ( 4)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 utiliznd relaiile 3.7.8, pentru

( )
6
k = 4 : vi( ) = min cij + v (j ) , i = 0,1,2,...,5 . Se obine:
4 3
j =0

( )
6
i = 0 : v0( ) = min c0 j + v(j ) = 11 < v0( ) = 12 ;
4 3 3
j =0

i = 1 : v( ) = min ( c + v ( ) ) = 9 = v( ) ;
6
4 3 3
1 1j j 1
j =0

i = 2 : v( ) = min ( c + v( ) ) = 2 = v( ) ;
6
4 3 3
2 2j j 2
j =0

i = 3 : v( ) = min ( c + v( ) ) = 8 = v ( ) ;
6
4 3 3
3 3j j 3
j =0

i = 4 : v( ) = min ( c + v( ) ) = 7 = v( ) ;
6
4 3 3
4 4j j 4
j =0

i = 5 : v( ) = min ( c + v( ) ) = 4 = v( ) ;
6
4 3 3
5 5j j 5
j =0

i = 6 : v6( ) = 0 .
4

( 4 ) = 11,9,2,8,7,4,0
Se obine vectorul V ( ).
( 4) ( 3)
Exist indicele i = 0 astfel nct v0 < v0 , deci se trece la etapa urmtoare.
Etapa 5; k = 5 .
(5) ( 5)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 utiliznd relaiile (3.7.8), pentru

( )
6
k = 5 : vi( ) = min cij + v(j ) , i = 0,1,2,...,5 . Se obine:
5 4
j =0

( )
6
i = 0 : v0( ) = min c0 j + v(j ) = 11 = v0( ) ;
5 4 4
j =0

i = 1 : v( ) = min ( c + v( ) ) = 9 = v( ) ;
6
5 4 4
1 1j j 1
j =0

i = 2 : v( ) = min ( c + v( ) ) = 2 = v( ) ;
6
5 4 4
2 2j j 2
j =0

i = 3 : v( ) = min ( c + v( ) ) = 8 = v( ) ;
6
5 4 4
3 3j j 3
j =0

i = 4 : v( ) = min ( c + v( ) ) = 7 = v( ) ;
6
5 4 4
4 4j j 4
j =0

i = 5 : v( ) = min ( c + v( ) ) = 4 = v( ) ;
6
5 4 4
5 5j j 5
j =0

v6( )
5
i = 6: = 0.
108
( 5 ) = 11,9,2,8,7,4,0
Se obine vectorul V ( ) i se constat c vi(5) = vi( 4) , pentru
orice i = 0,1, 2,...,6 , deci s-a realizat condiia de oprire a algoritmului. Prin urmare
vi = vi( ) = vi( ) , ( ) i = 0,1,...,6 , reprezint valoarea optim a drumurilor de la xi la x6 ,
5 4

formate din cel mult 6 arce.


Faza a II-a determinarea drumului optim de la x0 la x6 .
Determinarea drumului optim se face n sensul de la x0 ctre x6 . Valoarea minim a
( 5)
drumului optim de la x0 la x6 este v0 = v0 = 11, deci valoarea primei componente a
vectorului V
(5)
obinut la sfritul ultimei etape din faza I.
Rescriem n detaliu (pe componente) relaiile cu ajutorul crora s-au obinut valorile
optime vi = vi
( 5) ,
i = 0,1,2,...,6 , n ultima etap din faza I.
i = 0:

( )
6
v0( ) = min c0 j + v(j ) = min ( 0 + 11;2 + 9; + 2;4 + 8;5 + 7; + 4; + 0 ) = 11;
5 4
j =0

minimul se obine pentru j {0,1}.


i = 1:

( )
6
v1( ) = min c1 j + v(j ) = min ( + 11;0 + 9;12 + 2;1 + 8; + 7; + 4; + 0 ) = 9;
5 4
j =0

minimul se obine pentru j {1,3}.


i = 2:

( )
6
v2( ) = min c2 j + v(j ) = min ( + 11; + 9;0 + 2;4 + 8; + 7; + 4;2 + 0 ) = 2;
5 4
j =0

minimul se obine pentru j {2,6}.


i = 3:

( )
6
v3( ) = min c3 j + v(j ) = min ( + 11; + 9;11 + 2;0 + 8;2 + 7;4 + 4;11 + 0 ) = 8;
5 4
j =0

minimul se obine pentru j {3,5}.


i = 4:

( )
6
(5)
v4 = min c4 j + v(j ) = min ( + 11; + 9; + 2; + 8;0 + 7;3 + 4; + 0 ) = 7;
4
j =0

minimul se obine pentru j {4,5}.


i = 5:

( )
6
v5( ) = min c5 j + v(j ) = min ( + 11; + 9;2 + 2; + 8; + 7;0 + 4;7 + 0 ) = 4;
5 4
j =0

minimul se obine pentru j {2,5}.

109
Dac x j este primul vrf care urmeaz dup x0 pe drumul optim, atunci se caut n
relaia scris pentru i = 0 indicele j pentru care:
v0 = c0 j + v j = 11 .
Se obine j {0,1} . Cum x0 este primul vrf al drumului optim, rezult j = 1 , deci
x1 este al doilea vrf al drumului optim: = { x0 , x1,..., x6 } .
S mai observm c l ( x0 , x1 ) = 2 i evident, v1 = 9 = v0 l ( x0 , x1 ) = 11 2 ,
reprezint valoarea optim a subdrumului de la x1 la x6 pe drumul optim.
Fie acum x j vrful care urmeaz dup x1 pe drumul optim. Se va cuta n relaia
scris pentru i = 1 (corespunztoare vrfului anterior, x1 ) indicele j pentru care:
v1 = c1 j + v j = 9 .
Se obine j {1,3} . Cum x1 este ultimul vrf al drumului optim pn n acest
moment, rezult j = 3 , deci x3 este al treilea vrf pe drumul optim: = { x0 , x1, x3 ,..., x6 } .
De asemenea, l ( x1 , x3 ) = 1 i v3 = v1 l ( x1 , x3 ) = 8 , reprezint valoarea optim a
subdrumului de la x3 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x3 pe drumul optim. Se caut n relaia scris pentru
i = 3 indicele j pentru care:
v3 = c3 j + v j = 8 .
Se obine j {3,5} . Cum x3 este ultimul vrf al drumului optim pn n acest
moment, rezult j = 5 , deci x5 urmeaz dup x3 pe drumul optim:
= { x0 , x1, x3 , x5 ,..., x6 } .
Analog l ( x3 , x5 ) = 4 i v5 = v3 l ( x3 , x5 ) = 4 , reprezint valoarea optim a
subdrumului de la x5 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x5 pe drumul optim. Se caut n relaia scris pentru
i = 5 indicele j pentru care:
v5 = c5 j + v j = 4 .
Se obine j {2,5} . Cum x5 se afl deja pe drumul optim, rezult j = 2 , deci x2
urmeaz dup x5 pe drumul optim: = { x0 , x1, x3 , x5 , x2 ,..., x6 } .
Avem i l ( x5 , x2 ) = 2 , iar v2 = v5 l ( x5 , x2 ) = 2 , reprezint valoarea optim a
subdrumului de la x2 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x2 pe drumul optim. Se caut n relaia scris pentru
i = 2 indicele j pentru care:
v2 = c2 j + v j = 2 .
Se obine j {2,6} i cum x2 se afl deja pe drumul optim, rezult j = 6 . Dar x6
este ultimul vrf al drumului optim, astfel c n acest moment s-a ncheiat i faza a II-a a

110
algoritmului, drumul optim obinut este = { x0 , x1 , x3 , x5 , x2 , x6 } , iar v2 = 2 reprezint
valoarea ultimului arc al acestui drum: v2 = 2 = l ( x2 , x6 ) .

3.10 Algoritmul lui Bellman-Kalaba pentru determinarea drumurilor de valoare


maxim dintre dou vrfuri ale unui graf fr circuite. Exemple
Algoritmul lui Bellman-Kalaba poate fi utilizat, ntocmai ca i algoritmul lui Ford, i
pentru determinarea drumului (drumurilor) de valoare maxim ntre dou vrfuri ale unui graf
fr circuite.
Modificrile de esen ale algoritmului lui Bellman-Kalaba pentru determinarea
drumului (drumurilor) de valoare minim ntre dou vrfuri ale unui graf care permit
transformarea sa n algoritmul pentru determinarea drumului (drumurilor) de valoare maxim
ntre dou vrfuri ale unui graf fr circuite sunt urmtoarele:
( )
n matricea C = cij , i, j = 0,1,..., n a valorilor drumurilor formate dintr-un
singur arc de la vrful xi , i = 0,1,..., n 1 pn la vrful x j , j = 0,1,..., n se va lua

( )
valoarea (n loc de + ), dac arcul xi , x j U , i j ;


(k )
valorile v j , i, j = 0,1,..., n , se vor determina schimbnd n relaia (3.7.8)
simbolul min cu simbolul max.
Dac G = ( X ,U , l ) , X = { x0 , x1,..., xn } este un graf cu arce valorizate i fr
circuite (aceasta se poate stabili uor cu ajutorul criteriului rezultat din teorema 2.2.12 din
capitolul 2), atunci algoritmul lui Bellman-Kalaba pentru determinarea drumului (drumurilor)
de valoare maxim dintre vrfurile x0 i xn necesit parcurgerea urmtoarelor faze i etape:
Faza I determinarea i funcionarea algoritmului pn la realizarea condiiei de
oprire.
La rndul su, faza I cuprinde mai multe etape.
Etapa 0
( )
Se construiete matricea C = cij , i, j = 0,1,..., n , conform relaiilor:

l ( xi , x j ) , dac ( xi , x j ) U , i j;

cij = 0 dac i j; (3.10.1)

dac ( xi , x j ) U , i j.
0
Tot n etapa 0 se definesc numerele vi , i = 0,1,..., n 1 , reprezentnd valoarea
maxim a drumurilor de la xi , i = 0,1,..., n 1 , pn la xn , formate dintr-un singur arc.
Aceste numere se afl pe ultima coloan a matricei C, respectiv pe coloana lui xn .

Etapa k; ( k 1 ).
(k ) (k )
n etapa k se calculeaz numerele vi , i = 0,1,..., n 1 , vn = 0 , reprezentnd
valoarea maxim a drumului de la xi la xn format din k + 1 arce, cu relaiile:
111
( )
n
vi( ) = max cij + v(j ) , i = 0,1,..., n 1 , vn( ) = 0 .
k k 1 k
(3.10.2)
j =0

(k )
> vi(
k 1)
Dac la sfritul etapei k exist indici i pentru care vi , aceasta nseamn c
(k )
valorile vi nu sunt optime i c exist cel puin un drum de la xi la xn format din k + 1
arce mai bun (adic de valoare mai mare) dect orice drum de la xi la xn format din cel mult
k arce; acest drum poate apare n etapa urmtoare, k + 1 .
Algoritmul se continu pn la prima etap k n care se va obine:

vi( ) = vi( ) , ( ) i = 0,1,..., n .


k k 1
(3.10.3)

(k )
Valorile vi = vi = vi
( k 1)
, i = 0,1,..., n obinute la sfritul acestei etape sunt
valorile optime i reprezint, pentru fiecare i = 0,1,..., n , valoarea maxim a drumului
(k )
(drumurilor) de la xi la xn . Deci v0 = v0 este valoarea maxim a drumului optim de la x0
la xn .
Relaiile (3.10.3) reprezint, n ansamblul lor, condiia de oprire a algoritmului n faza
I.
Faza II determinarea drumului (drumurilor) optim (de valoare maxim) de la x0 la
xn .
Determinarea drumului optim se face n sensul de la x0 ctre xn , astfel:
dac x j este primul vrf care succede lui x0 pe drumul optim, atunci se caut n
relaia (3.10.2) din ultima etap, scris pentru i = 0 , indicele j pentru care:
v0 = c0 j + v j . (3.10.4)

dac se cunoate un vrf xm al drumului optim i xm xn i dac x j este vrful


care succede lui xm pe drumul optim, atunci se caut n relaia (3.10.2) din ultima etap a
fazei I, scris pentru i = m , indicele j pentru care
vm = cmj + v j . (3.10.5)

algoritmul continu pn cnd ultimul vrf determinat al drumului optim este


nsui xn ;
dac exist mai muli indici j pentru care are loc relaia (3.10.5) i dac vrfurile
care corespund acestor indici nu au fost depistate pn n acest moment ca aparinnd
drumului optim, rezult c exist mai multe drumuri optime, avnd aceeai valoare maxim,
(k )
respectiv v0 , iar vrful anterior lui x j este vrful unde aceste drumuri se ramific.

Exemplul 3.10.1
S se determine drumul de valoare maxim de la x0 la x6 n graful din figura
urmtoare:

112
Fig. 3.10.1

Faza I
Etapa 0; k = 0 .
( )
Matricea C = cij , i, j = 0,1,...,6 se construiete cu ajutorul relaiilor (3.10.1) i
este urmtoarea:
x0 x1 x2 x3 x4 x5 x6
0 5 6 3 x0
0 5 4 x1
0 6 8 x2
C=
8 0 8 10 x3
6 7 0 9 x4
0 5 x5
0 x6
( 0)
Numerele vi , i = 0,1,...,6 se afl pe ultima coloan a matricei C;
0 0
( 0 0
)
V ( ) = v0( ) , v1( ) ,..., v6( ) = ( , ,8,10, ,5,0 ) .

Etapa 1; k = 1 .

( )
6
(0) ,
i = 0,1,...,5 , v6( ) = 0 , conform
1 1
Se calculeaz valorile vi = max cij + v j
j =0
relaiilor (3.10.2) pentru k = 1 :
Pentru i = 0 :

113
( )
6
v0( ) = max c0 j + v(j ) = max ( 0 ;5 ; + 8;6 + 10;3 ; + 5; + 0 ) =
1 0
j =0
6
( )
= 16 = max c0 j + c j 6 max ( linia lui x0 + coloana lui x6 ) .
j =0
Pentru i = 1 :

( )
6
v1( ) = max c1 j + v(j ) = max ( ;0 ;5 + 8;4 + 10; ; + 5; + 0 ) =
1 0
j =0
6
( )
= 14 = max c1 j + c j 6 max ( linia lui x1 + coloana lui x6 ) .
j =0
Pentru i = 2 :

( )
6
v2( ) = max c2 j + v(j ) = max ( ; ;0 + 8; + 10; ;6 + 5;8 + 0 ) =
1 0
j =0
6
( )
= 11 = max c2 j + c j 6 max ( linia lui x2 + coloana lui x6 ) .
j =0
Pentru i = 3 :

( )
6
v3( ) = max c3 j + v(j ) = max ( ; ;8 + 8;0 + 10; ;8 + 5;10 + 0 ) =
1 0
j =0
6
( )
= 16 = max c3 j + c j 6 max ( linia lui x3 + coloana lui x6 ) .
j =0
Pentru i = 4 :

( )
6
v4( ) = max c4 j + v(j ) = max ( ;6 ; + 8;7 + 10;0 ;9 + 5; + 0 ) =
1 0
j =0
6
( )
= 17 = max c4 j + c j 6 max ( linia lui x4 + coloana lui x6 ) .
j =0
Pentru i = 5 :

( )
6
v5( ) = max c5 j + v (j ) = max ( ; ; + 8; + 10; ;0 + 5;5 + 0 ) =
1 0
j =0
6
( )
= 5 = max c5 j + c j 6 max ( linia lui x5 + coloana lui x6 ) .
j =0
(1)
Pentru i = 6 : v6 = 0 .
La sfritul etapei 1 rezult vectorul
1 1
( 1 1
)
V ( ) = v0( ) , v1( ) ,..., v6( ) = (16,14,11,16,17,5,0 ) .

V ( ) = ( , ,8,10, ,5,0 )
0
Comparnd cu (comparaia se face ntre
(1)
> vi( ) i anume
0
componentele de aceleai rang) se constat c exist indici i pentru care vi
i {0,1,2,3,4} , deci algoritmul continu.

114
Etapa 2; k = 2 .

( )
6
( 2)
= max cij + v (j ) , i = 0,1,...,5 , v6( ) = 0 , reprezentnd
1 0
Se calculeaz valorile vi
j =0
valoarea maxim a drumurilor de la xi la x6 formate din cel mult trei arce, pentru fiecare
i = 0,1,2,...,5 . Se obine:

( )
6
i = 0 : v0( ) = max c0 j + v(j ) = 22 > v0( ) = 16 ;
2 1 1
j =0

i = 1 : v( ) = max ( c + v( ) ) = 20 > v ( ) = 14 ;
6
2 1 1
1 1j j 1
j =0

i = 2 : v( ) = max ( c + v( ) ) = 11 = v( ) ;
6
2 1 1
2 2j j 2
j =0

i = 3 : v( ) = max ( c + v( ) ) = 19 > v( ) = 16 ;
6
2 1 1
3 3j j 3
j =0

i = 4 : v( ) = max ( c + v( ) ) = 23 > v( ) = 17 ;
6
2 1 1
4 4j j 4
j =0

i = 5 : v( ) = max ( c + v( ) ) = 5 = v( ) ;
6
2 1 1
5 5j j 5
j =0
( 2)
i = 6 : v6 = 0 .
( 2 ) = 22,20,11,19,23,5,0
Se obine vectorul V ( ) . Comparndu-l, pe componente,
cu vectorul V
(1) obinut la sfritul etapei 1, se constat c exist indici i pentru care

vi( ) > vi( ) i anume { ( 2)


} , deci valorile vi
2 1
i 0,1,3, 4 nu sunt optime.
Etapa 3; k = 3 .
( 3) ( 3)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 , utiliznd relaiile (3.10.2)

( )
6
( 3) = max c + v( 2 ) ( 3)
pentru k = 3 : vi ij j , i = 0,1,2,...,5 , v6 = 0 . Se obine:
j =0

i = 0 : v( ) = max ( c + v ( ) ) = 26 > v( ) = 22 ;
6
3 2 2
0 0j j 0
j =0

i = 1 : v( ) = max ( c + v( ) ) = 23 > v( ) = 20 ;
6
3 2 2
1 1j j 1
j =0

i = 2 : v( ) = max ( c + v( ) ) = 11 = v( ) ;
6
3 2 2
2 2j j 2
j =0

i = 3 : v( ) = max ( c + v( ) ) = 19 = v( ) ;
6
3 2 2
3 3j j 3
j =0

i = 4 : v( ) = max ( c + v( ) ) = 26 > v( ) = 23 ;
6
3 2 2
4 4j j 4
j =0

115
( )
6
i = 5 : v5 = max c5 j + v (j ) = 5 = v5( ) ;
( 3) 2 2
j =0

i = 6 : v6( ) = 0 .
3

( 3) = 26,23,11,19,26,5,0 . Comparndu-l, pe componente,


Se obine vectorul V ( )
( 2) ( 3) ( 2) ( 3)
cu V se gsesc indicii i {0,1,4} pentru care vi > vi , deci valorile vi nu sunt
optime i algoritmul continu.
Etapa 4; k = 4 .
( 4) ( 3)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 , utiliznd relaiile (3.10.2)

( )
6
pentru k = 4 : vi
( 4 ) = max c + v( 4 ) , i = 0,1,2,...,5 , v( 4 ) = 0 . Se obine:
ij j 6
j =0

i = 0 : v( ) = max ( c + v ( ) ) = 29 > v( ) = 26 ;
6
4 3 3
0 0j j 0
j =0

i = 1 : v( ) = max ( c + v( ) ) = 23 = v( ) ;
6
4 3 3
1 1j j 1
j =0

i = 2 : v( ) = max ( c + v( ) ) = 11 = v( ) ;
6
4 3 3
2 2j j 2
j =0

i = 3 : v( ) = max ( c + v( ) ) = 19 = v( ) ;
6
4 3 3
3 3j j 3
j =0

i = 4 : v( ) = max ( c + v( ) ) = 29 > v( ) = 26 ;
6
4 3 3
4 4j j 4
j =0

i = 5 : v( ) = max ( c + v ( ) ) = 5 = v( ) ;
6
4 4 3
5 5j j 5
j =0
( 4)
i = 6 : v6 = 0 .
( 4 ) = 29,23,11,19,29,5,0
Se obine vectorul V ( ) . Exist indicii i {0,4} pentru
( 4)
> vi( ) , deci se trece la etapa urmtoare.
3
care vi

Etapa 5; k = 5 .
(5) ( 5)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 , cu relaiile (3.10.2) pentru

( )
6
k = 5 : vi( ) = max cij + v(j ) , i = 0,1,2,...,5 , v6( ) = 0 . Se obine:
5 4 5
j =0

( )
6
i = 0 : v0( ) = max c0 j + v(j ) = 32 > v0( ) = 29 ;
5 4 4
j =0

116
( )
6
i = 1 : v1 = max c1 j + v(j ) = 23 = v1( ) ;
( 5) 4 4
j =0

i = 2 : v( ) = max ( c + v ( ) ) = 11 = v( ) ;
6
5 4 4
2 2j j 2
j =0

i = 3 : v( ) = max ( c + v( ) ) = 19 = v( ) ;
6
5 4 4
3 3j j 3
j =0

i = 4 : v( ) = max ( c + v( ) ) = 29 = v ( ) ;
6
5 4 4
4 4j j 4
j =0

i = 5 : v( ) = max ( c + v( ) ) = 5 = v ( ) ;
6
5 4 4
5 5j j 5
j =0
( 5)
i = 6 : v6 = 0 .
( 5)
Se obine vectorul V = ( 32,23,11,19,29,5,0 ) . Mai exist un singur indice,
i = 0 , pentru care vi( ) > vi( ) , deci se trece la etapa urmtoare.
5 4

Etapa 6; k = 6 .
( 6) ( 6)
Se calculeaz valorile vi , i = 0,1,2,...,5 , v6 = 0 , cu relaiile (3.10.2) pentru

( )
6
k = 6 : vi( ) = max cij + v(j ) , i = 0,1,2,...,5 i v6( ) = 0 . Se obine:
6 5 6
j =0

( )
6
i = 0 : v0( ) = max c0 j + v(j ) = 32 = v0( ) ;
6 5 5
j =0

i = 1 : v( ) = max ( c + v( ) ) = 23 = v( ) ;
6
6 5 5
1 1j j 1
j =0

i = 2 : v( ) = max ( c + v( ) ) = 11 = v( ) ;
6
6 5 5
2 2j j 2
j =0

i = 3 : v( ) = max ( c + v( ) ) = 19 = v( ) ;
6
6 5 5
3 3j j 3
j =0

i = 4 : v( ) = max ( c + v( ) ) = 29 = v( ) ;
6
6 5 5
4 4j j 4
j =0

i = 5 : v( ) = max ( c + v( ) ) = 5 = v( ) ;
6
6 5 5
5 5j j 5
j =0

i = 6 : v6( ) = 0 .
6

V ( ) = ( 32,23,11,19,29,5,0 ) vi( ) = vi( ) ,


6 6 5
Se obine vectorul i ntruct

() i = 0,1.2,...,6 , rezult c vi = vi( ) , i = 0,1, 2,...,6 reprezint valoarea drumului


6

optim (de valoare maxim) de la xi la x6 , format din cel mult 7 arce. S-a realizat, deci
condiia de oprire a algoritmului, respectiv relaiile (3.10.3), astfel c se poate trece la
determinarea drumului optim de la x0 la x6 .

117
Faza a II-a
Determinarea drumului optim se face n sensul de la x0 ctre x6 . Valoarea maxim a
(6)
drumului optim de la x0 la x6 este v0 = v0 = 32 , deci valoarea primei componente a
vectorului V
(6) obinut la sfritul ultimei etape din faza I.
Se rescriu n detaliu, pe componente i pentru fiecare i = 0,1,...,6 , relaiile cu ajutorul
( 6)
crora s-au obinut valorile optime vi = vi , n ultima etap din faza I.
i = 0:

( )
6
v0 = v0( ) = max c0 j + v(j ) =
6 5
j =0

= max ( 0 + 32;5 + 23; + 11;19 + 6;29 + 3; + 5; + 0 ) = 32;


maximul se obine pentru j {0, 4}.
i = 1:

( )
6
v1 = v1( ) = max c1 j + v (j ) =
6 5
j =0

= max ( + 32;0 + 23;5 + 11;4 + 19; + 29; + 5; + 0 ) = 23;


maximul se obine pentru j {1,3}.
i = 2:

( )
6
v2 = v2( ) = max c2 j + v(j ) =
6 5
j =0

= max ( + 32; + 23;0 + 11; + 19; + 29;6 + 5;8 + 0 ) = 11;


maximul se obine pentru j {2,5}.
i = 3:

( )
6
(6)
v3 = v3 = max c3 j + v(j ) =
5
j =0

= max ( + 32; + 23;8 + 11;0 + 19; + 29;8 + 5;10 + 0 ) = 19;


maximul se realizeaz pentru j {2,3}.

i = 4:

( )
6
( 6)
v4 = v4 = max c4 j + v (j ) =
5
j =0

= max ( + 32;6 + 23; + 11;7 + 19;0 + 29;9 + 5; + 0 ) = 29;


maximul se realizeaz pentru j {1,4}.
i =5:

118
( )
6
v5 = v5( ) = max c5 j + v(j ) =
6 5
j =0

= max ( + 32; + 23; + 11; + 19; + 29;0 + 5;5 + 0 ) = 5;


maximul se realizeaz pentru j {5,6}.
i = 6 : v6 = v6( ) = 0 .
6

Presupunem c x j este primul vrf care urmeaz dup x0 pe drumul optim de la x0

{ }
la x6 : = x0 , x j ,..., x6 . Se caut n relaia scris pentru i = 0 indicele j pentru care:
v0 = c0 j + v j = 32 .
Se obine j {0,4} . Cum x0 este primul vrf al drumului optim, rezult j = 4 , deci
x4 este al doilea vrf al drumului optim: = { x0 , x4 ,..., x6 } .
Se mai observ c l ( x0 , x4 ) = 3 i evident, v4 = v0 l ( x0 , x4 ) = 29 , reprezint
valoarea maxim a subdrumului de la x4 la x6 pe drumul optim.
Fie acum x j vrful care urmeaz dup x4 pe drumul optim. Se va cuta n relaia
scris pentru i = 4 indicele j pentru care: v4 = c4 j + v j = 29 .
Se obine j = {1,4} . Cum x4 se afl deja pe drumul optim, rezult j = 1 , deci x1
este al treilea vrf al drumului optim: = { x0 , x4 , x1 ,..., x6 } .
De asemenea, l ( x4 , x1 ) = 6 i v1 = v4 l ( x4 , x1 ) = 23 reprezint valoarea
maxim a subdrumului de la x1 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x1 pe drumul optim. Se caut n relaia scris pentru
i = 1 indicele j pentru care: v1 = c1 j + v j = 23 .
Se obine j = {1,3} . Cum x1 se afl deja pe drumul optim, rezult j = 3 , deci x3
urmeaz dup x1 pe drumul optim: = { x0 , x4 , x1 , x3 ,..., x6 } .
Analog l ( x1 , x3 ) = 4 i v3 = v1 l ( x1 , x3 ) = 19 reprezint valoarea maxim a
subdrumului de la x3 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x3 pe drumul optim. Se caut n relaia scris pentru
i = 3 indicele j pentru care: v3 = c3 j + v j = 19 .
Se obine j = {2,3} . Cum x3 se afl deja pe drumul optim, rezult j = 2 , deci x2
urmeaz dup x3 pe drumul optim: = { x0 , x4 , x1 , x3 , x2 ,..., x6 } .
Avem i l ( x3 , x2 ) = 6 , iar v2 = v3 l ( x3 , x2 ) = 11 reprezint valoarea maxim a
subdrumului de la x2 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x2 pe drumul optim. Se caut n relaia scris pentru
i = 2 indicele j pentru care: v2 = c2 j + v j = 11 .

119
Se obine j = {2,5} i cum x2 se afl deja pe drumul optim, rezult j = 5 , deci x5
urmeaz dup x2 pe drumul optim: = { x0 , x4 , x1, x3 , x2 , x5 ,..., x6 } .
Avem i l ( x2 , x5 ) = 6 , iar v5 = v2 l ( x2 , x5 ) = 5 reprezint valoarea maxim a
subdrumului de la x5 la x6 pe drumul optim.
Fie x j vrful care urmeaz dup x5 pe drumul optim. Se caut n relaia scris pentru
i = 5 indicele j pentru care: v5 = c5 j + v j = 5 .
Se obine j = {5,6} i cum x5 se afl deja pe drumul optim, rezult j = 6 . Dar x6
este ultimul vrf al drumului optim, astfel c n acest moment s-a ncheiat i faza a II-a a
algoritmului. v5 = 5 reprezint valoarea ultimului arc al drumului optim:
v5 = 5 = l ( x5 , x6 ) . Drumul de valoare maxim dintre vrfurile x0 i x6 este
= { x0 , x4 , x1, x3 , x2 , x5 , x6 } , este format din 6 arce i valoarea sa maxim este v0 = 32 .

120
LECIA 9
3.11 Algoritmul matriceal pentru determinarea drumurilor de valoare minim
dintre dou vrfuri oarecare ale unui graf
Fie G = ( X ,U , l ) un graf cu arce valorizate, X = { x0 , x1 ,..., xn } , l :U + i

( )
C = cij , i, j = 0,1, 2,..., n matricea valorilor arcelor grafului, unde

( ) (
l xi , x j , dac xi , x j U , i j;

)
cij = 0, dac i = j; (3.11.1)

+, (
dac xi , x j U , i j. )
n etapa 0 a algoritmului lui Bellman-Kalaba s-a pornit cu valorile iniiale:

vi( ) = cin , i = 0,1,..., n ,


0
(3.11.2)
iar n etapa k, k 1 , s-au calculat valorile:

( )
n
vi( ) = min cis + vs( ) , i = 0,1,2,..., n 1 , vn( ) = 0 ,
k k 1 k
(3.11.3)
s =0

(k )
unde vi reprezint minimul valorilor drumurilor de la xi la xn formate din cel mult k + 1
arce.
Se poate constata c vrful x0 nu are o situaie aparte fa de celelalte vrfuri xi ,
i n ale grafului, n etapele succesive ale algoritmului. Abia n faza a doua a algoritmului,
deci dup aflarea valorilor optime de la fiecare vrf xi pn la xn , se ine seama de faptul c
intereseaz drumul optim de la x0 la xn . n fond x0 i xn sunt dou vrfuri oarecare ale
grafului i deci toate consideraiile fcute n paragrafele anterioare (care se refer la
algoritmul lui Bellman-Kalaba) pot fi utilizate pentru determinarea drumului optim ntre dou
vrfuri oarecare xi i x j ale grafului.
n continuare se vor preciza modificrile care trebuie fcute n algoritmul lui Bellman-
Kalaba astfel nct n etapa k din faza I a algoritmului s se determine minimul valorilor
drumurilor formate din cel mult k + 1 arce dintre dou vrfuri oarecare xi i x j , i j ale
grafului i nu doar dintre vrfurile xi , i = 0,1,..., n 1 i xn .
Astfel, dac n relaia (3.11.3) vrful xn nu ar fi subneles, atunci relaia trebuie
modificat astfel:

( )
n
( k ) = min c + v( k 1) , v( k ) = 0 .
vin (3.11.4)
is sn nn
s =0

(k )
n aceast relaie vin reprezint minimul valorilor drumurilor de la xi la xn formate
din cel puin k + 1 arce.

121
Dac ne intereseaz minimul valorilor drumurilor de la vrful xi la vrful x j (n loc
de xn ) formate din cel mult k + 1 arce, i j , atunci rolul lui xn va fi luat de x j i relaiile
(3.11.4) devin:

( )
n
vij( ) = min cis + vsj( ) , i j , v(jj ) = 0 ,
k k 1 s
(3.11.5)
s =0

iar relaiile (3.11.2) din etapa 0 devin:

vij( ) = cij , ( ) i, j = 0,1,2,..., n .


0
(3.11.6)

Astfel, n fiecare etap k = 0,1,2,... din faza I a algoritmului se calculeaz matricea


vij( ) , i, j = 0,1, 2,..., n . Vom nota aceast matrice cu C ( ) :
k k +1

vij( ) = C ( ) .
k k +1
(3.11.6)

Avnd n vedere relaiile (3.11.6) rezult:

C( ) = C .
1
(3.11.7)
Pe intervalul [ 0, + ) vom defini operaiile:

a +& b = min {a, b} , (3.11.8)

cu convenia min {, a} = min {a, } = a , ( ) a [ 0, + ) i

a & b = a + b , (3.11.9)
a doua operaie fiind adunarea obinuit pe [ 0, + ) .
Se poate arta uor c aceste operaii sunt asociative i comutative, iar operaia & este
& . Rezultatul compunerii a n elemente din [ 0, + ) cu operaia
distributiv fa de operaia +
n
+& (3.11.8), respectiv suma ( a1 +& a2 +& ... +& an ) , se va nota cu simbolul as , iar dac n
&

s =1

este subneles, cu as . Cu ajutorul acestor dou operaii definite pe [0, + ) se poate


s =1
defini, pe mulimea matricelor ptrate de ordinul m cu elemente din [ 0, + ) , un produs a
dou matrice, prin analogie cu nmulirea obinuit a matricelor, astfel:

cij = ais & bsj , () i, j = 0,1,2,..., m , (3.11.10)


s =1

( ) i B = (bij ) , i, j = 1,2,..., m . Vom spune c matricea C = ( cij ) obinut


unde A = aij
prin relaiile (3.11.10) este produsul matricelor A i B i vom nota:

122
& B.
C = A (3.11.11)
& dintre matrice este asociativ.
Se arat uor c operaia
Avnd n vedere operaiile + & i & definite pe [ 0, + ) prin relaiile (3.11.8) i
& definit pe mulimea matricelor ptratice de ordinul m cu elemente din
(3.11.9) i operaia
[0, + ) prin relaia (3.11.10), rezult c relaiile (3.11.5) se scriu astfel:
vij( ) = cis & vsj( k 1) , () i, j = 0,1,..., n .
k
(3.11.12)
s =1

Rezult c matricea C
( k +1)
este produsul & (relaia (3.11.11)) matricelor C i C (k ) ,
& definit prin relaia (3.11.11):
deci puterea ( k + 1 ) a matricei C n raport cu operaia

C(
k +1) & C
& ...
&C
=C
14 4244 3 (3.11.13)
k +1

(k )
Dat fiind semnificaia valorilor vij , i, j = 0,1,..., n , rezult c elementul cij
( k +1)

din matricea C
( k +1) reprezint valoarea minim a drumului (drumurilor) de la vrful x la
i
vrful x j , formate din cel mult k + 1 arce.
Faza I a algoritmului prezentat sub aceast form, numit algoritmul matriceal pentru
determinarea drumului de valoare minim ntre oricare dou vrfuri distincte ale unui graf,
se ncheie ntr-o etap k n care se realizeaz condiia:

C(
k +1)
= C( ) ,
k
(3.11.14)
( k +1) (k )
numit i condiia de oprire a algoritmului. C =C este matricea drumurilor de
valoare minim dintre oricare dou vrfuri ale grafului.
Faza a II-a a algoritmului, respectiv determinarea drumului (drumurilor) de valoare
minim ntre dou vrfuri oarecare xi i x j , va fi prezentat pe exemple; valoarea minim a

acestui drum este vij


( k +1) = v( k ) = c( k +1) din matricea C ( k +1) = C ( k ) .
ij ij

Observaia 3.11.1
Din prezentarea algoritmului matriceal pentru determinarea drumului de valoare
minim dintre dou vrfuri oarecare ale unui graf rezult c algoritmul lui Bellman-Kalaba
este un caz particular al algoritmului matriceal. ntr-adevr, fie V j
( k +1) coloana j a matricei

C(
k +1)
: Vj
( k +1)
( k +1 k +1 ( k +1) t
= v0( j ) , v1( j ) ,..., vnj . )
Atunci relaiile (3.11.4) pentru j = n se scriu astfel:

Vn(
k +1) & V (k )
=C n (3.11.15)
Altfel spus, n etapa k a algoritmului Bellman-Kalaba se determin numai ultima
( k +1)
coloan a matricei C .

123
n mod asemntor i varianta algoritmului Bellman-Kalaba prezentat i
exemplificat n paragraful 3.9 poate fi prezentat matriceal. Astfel, dac se noteaz cu
Vi(
k +1) ( k +1) , adic:
linia i a matricei C

Vi(
k +1)
(
= vi(0 ) , vi(1 ) ,..., vin
k +1 k +1 ( k +1) ,
)
atunci pentru i = 0 , relaiile:

( )
n
v0( j ) = min csj + v0( s ) ,
k k 1
(3.11.15)
s =0
pot fi scrise astfel:
V0(
k +1)
= V0( )
k &
C. (3.11.16)
Cu alte cuvinte, n aceast variant a algoritmului Bellman-Kalaba, n etapa k se
( k +1)
determin prima linie a matricei C .
Exemplul 3.11.2
S se determine matricea drumurilor de valoare minim corespunztoare grafului din
figura urmtoare:

Fig. 3.11.1

Matricea C a valorilor drumurilor dintre oricare dou vrfuri xi i x j ,


i, j = 1, 2,...,6 , se completeaz cu ajutorul relaiilor (3.11.1) i este urmtoarea:
x1 x2 x3 x4 x5 x6
0 4 2 x1
1 0 4 10 x2
C = C( ) =
1
1 0 2 8 6 x3
3 0 1 x4
0 5 x5
8 2 0 x6

124
n continuare, utiliznd operaiile definite prin (3.11.8) i (3.11.9) se calculeaz, cu
& definit prin
relaiile (3.11.13) puterile succesive ale matricei C, n raport cu operaia
(3.11.10) i (3.11.11)
0 3 2 4 10 8 0 3 2 4 10 5
1 0 3 4 10 5 1 0 3 4 7 5

2 1 0 2 8 3 ( 3) 2 1 0 2 5 3
C( ) =
2
; C = ;
4 3 0 3 1 4 3 6 0 3 1
13 0 5 14 13 17 0 5

9 8 12 2 0 9 8 11 12 2 0
0 3 2 4 7 5 0 3 2 4 7 5
1 0 3 4 7 5 1 0 3 4 7 5

2 1 0 2 5 3 (5) 2 1 0 2 5 3
C( ) =
4
; C = .
4 3 6 0 3 1 4 3 6 0 3 1
14 13 16 17 0 5 14 13 16 17 0 5

9 8 11 12 2 0 9 8 11 12 2 0
Se constat c pentru k = 5 s-a obinut C
( 5) = C ( 4 ) , deci s-a realizat condiia de

oprire a algoritmului matriceal. Matricea C = C


(5) ( 4 ) este matricea valorilor minime
(optime) ale drumurilor de la orice vrf xi la orice vrf x j al grafului, i, j = 1,2,...,6 .
Drumurile optime dintre dou vrfuri oarecare xi i x j ale grafului pot fi determinate

dup obinerea matricei drumurilor optime. S determinm, cu ajutorul matricei vij = C ( ) (5) ,

drumul de valoare minim de la x2 la x5 . Valoarea sa se afl n matricea C


( 5) , la intersecia
liniei lui x2 cu coloana lui x5 : v25 = 7 .
Dac pe drumul optim vrful xi este succesorul lui x2 , atunci indicele i se va
determina din relaia:
c2i + vi 5 = v25 = 7 . (3.11.17)
Singurul indice diferit de 2 care verific aceast relaie este i = 4 . Analog, din
aproape n aproape, se obine drumul = { x2 , x4 , x6 , x5} .

Observaia 3.11.3
& de nmulire a matricelor definit prin relaiile
Datorit asociativitii operaiei
(3.11.10) i (3.11.11), rezult c se poate reduce numrul etapelor necesare determinrii
matricei drumurilor de valoare minim dintre oricare dou vrfuri ale grafului. ntr-adevr,
dup calculul matricei C
( 2 ) se poate obine direct C ( 4 ) fr a mai calcula C ( 3) :
( 4) ( 2) & ( 2)
C = C C .
Mai departe, se obine direct C
(8) fr a mai calcula C ( 5) , C ( 6 ) , C ( 7 ) :

125
C( ) = C( ) C ( ) , etc.
8 4 & 4

Algoritmul se oprete la pasul r pentru care C


( 2r +1 )
=C
( 2r )
i n acest caz C
( 2r )

este matricea drumurilor de valoare minim.

3.12 Algoritmul matriceal pentru determinarea drumurilor de valoare maxim


dintre dou vrfuri oarecare ale unui graf fr circuite
ntocmai ca i algoritmii lui Ford sau Bellman-Kalaba, i algoritmul matriceal poate fi
utilizat pentru determinarea drumului (drumurilor) de valoare maxim dintre dou vrfuri
oarecare ale unui graf fr circuite. De la nceput se face meniunea c algoritmul matriceal
este i n acest caz mai general dect algoritmul lui Bellman-Klaba, acesta regsindu-se ca un
caz particular n algoritmul matriceal.
Modificrile de esen ale algoritmului matriceal pentru determinarea drumului
(drumurilor) de valoare minim ntre oricare dou vrfuri ale unui graf care conduc la
transformarea sa n algoritmul matriceal pentru determinarea drumului (drumurilor) de
valoare maxim ntre oricare dou vrfuri ale unui graf fr circuite sunt urmtoarele:
( )
n matricea C = cij , i, j = 1,2,..., n a valorilor drumurilor formate dintr-un
singur arc de la vrful xi pn la vrful x j , i, j = 1,2,..., n , se va lua valoarea (n loc

( )
de + ), dac arcul xi , x j U , i j ;
pe intervalul [ , + ) se definesc operaiile:

a +& b = max {a, b} ; (3.12.1)

a & b = a + b , (3.12.2)

cu ajutorul crora se definete produsul C = cij ( ) a dou matrice ( ) ( )


A = aij , B = bij ,
& B , prin relaiile:
i, j = 1, 2,..., n , C = A

cij = air & brj , i, j = 1, 2,..., n . (3.12.3)


r =1
Este evident c cele trei operaii definite prin relaiile (3.12.1), (3.12.2) i (3.12.3) sunt
asociative i comutative, iar nmulirea & (3.12.2) este distributiv fa de adunarea + &
(3.12.1).
n continuare, fcnd aceleai raionamente ca n paragraful anterior, se ajunge la
concluzia c elementul cij
( k +1) aflat la intersecia liniei i cu coloana j din matricea

C(
k +1) & C
& ...
& C,
=C
14 4244 3 (3.12.4)
k +1

reprezint maximul valorilor drumurilor de la vrful xi la vrful x j , formate din cel mult
k + 1 arce.
Dac graful este fr circuite atunci exist o valoare a lui k astfel nct

C(
k +1)
= C( ) ,
k
(3.12.5)
126
aceasta reprezentnd condiia de oprire a algoritmului n faza I.
Matricea C
( k ) obinut n aceast etap de calcul se numete matricea drumurilor de
(k )
valoare maxim, iar valoarea elementului cij reprezint valoarea maxim a drumului
(drumurilor) de la vrful xi la vrful x j , ( ) i, j = 1, 2,..., n .
Drumul optim dintre vrfurile xi i x j se determin dup obinerea matricei
drumurilor de valoare maxim, din aproape n aproape, n sensul de la xi ctre x j .

127
PROBLEME REZOLVATE LA UI 3 UTILIZND VARIANTE ALE
ALGORITMILOR LUI FORD I BELLMAN-KALABA

3.5 Variant a algoritmului lui Ford


Algoritmul lui Ford poate fi organizat astfel nct numerele i din fiecare etap s
aib semnificaia valorilor unor drumuri de la vrfurile xi la xn , i = 0,1,2,..., n 1 .
ntr-adevr, s presupunem c pentru fiecare i = 0,1,2,..., n 1 , dispunem de un
drum de la xi la xn i c valoarea acestui drum este i . Lum n = 0 .
( )
Pentru orice arc xi , x j U comparm diferena i j cu l xi , x j . ( )
( )
Dac i j > l xi , x j , atunci i nu reprezint valoarea drumului optim de la xi
la xn , cci putem afirma c exist un drum de valoare mai mic ntre xi i xn . Valoarea
(
acestui drum este: i = j + l xi , x j < i . )
Punem n eviden acest lucru n exemplul urmtor:
( ) ( )
Fie drumurile i = ( xi , xk ,..., xn ) , j = x j , xl ,..., xn i i = xi , x j , xl ,..., xn ,
ca n figura urmtoare:

Fig. 3.5.1

( ) ( )
Avem: l ( i ) = i , l j = j , l ( i ) = l xi , x j + j .

( )
Dac pentru orice xi , x j U are loc relaia:

i j l ( xi , x j ) , (3.5.1)

atunci rezult la fel ca n teorema demonstrat anterior c i sunt valorile optime. n acest
caz vrfurile consecutive xi , x j ,... ale unui drum optim verific relaia (3.5.1) cu semnul
egal.
(0)
= + , i = 0,1,..., n 1 i (n ) = 0 .
0
n etapa iniial se va lua: i

128
Exemplu
S se determine drumul de valoare minim de la x0 la x5 din graful urmtor,
utiliznd aceast variant a algoritmului Ford.

Fig. 3.5.2

(0) (0)
= ...(4 ) = + i (5 ) = 0 .
0 0
n etapa 0 (start) vom lua: 0 = 1
Rezult c pentru orice j5 i ( ) ( xi , x j ) U avem:
( ) ( )
i 0 j0 = 0 < l ( xi , x j ) , iar pentru j = 5 avem:
( ) ( )
10 50 = + > l ( x1, x5 ) = 7 ;
( ) ( )
30 50 = + > l ( x3 , x5 ) = 3 ;
( ) ( )
40 50 = + > l ( x4 , x5 ) = 8 .
( 0) (0) ( 0)
Se pot mbuntii, deci trei valori i anume: 1 , 3 i 4 , astfel c pentru etapa
1 vom lua:
( ) ( )
11 = 50 + l ( x1, x5 ) = 0 + 7 = 7 ;
( ) ( )
31 = 50 + l ( x3 , x5 ) = 0 + 3 = 3 ;
( ) ( )
41 = 50 + l ( x4 , x5 ) = 0 + 8 = 8 .
(1)
= (i ) = + .
0
n rest, pentru i = 0,2,5 vom lua i
Pentru etapa 1 vom scrie toate arcele (dar ncepnd de la vrful x0 ) grafului i vom
(1) ( )
calcula diferenele i j1 corespunztoare:
Vrful x0 :

129
( x0 , x1 ) : (01) 1(1) = + 7 = + > l ( x0 , x1 ) = 2; ( )

(1) (1)
( x0 , x2 ) : 0 2 = + = 0 < l ( x0 , x2 ) = 5;
(1) (1)
( x0 , x4 ) : 0 4 = + 8 = + > l ( x0 , x4 ) = 7; ( )
Vrful x1 :
( x1, x2 ) : 1(1) (21) = 7 = < l ( x1, x2 ) = 1;

(1) (1)
( x1, x4 ) : 1 4 = 7 8 = 1 < l ( x1, x4 ) = 6;
(1) (1)
( x1, x5 ) : 1 5 = ( 7 ) = ( ) < l ( x1, x5 ) = 7;
Vrful x2 :
( x2 , x3 ) : (21) (31) = + 3 = + > l ( x2 , x3 ) = 5; ( )
(1) (1)
( x2 , x4 ) : 2 4 = + 8 = + > l ( x2 , x4 ) = 1; ( )
Vrful x3 :

{( x , x ) :
3 5
(1)
3
( )
51 = 3 = < l ( x3 , x5 ) = 3 ;
Vrful x4 :
(1) (1)
( x4 , x3 ) : 4 3 = 8 3 = 5 > l ( x4 , x3 ) = 2; ( )
(1) (1)
( x4 , x5 ) : 4 5 = 8 = < l ( x4 , x5 ) = 8.
(1) (1) (1)
Se pot mbuntii valorile: 0 , 2 i 4 , i pentru etapa urmtoare vom lua:
(02 ) = 1(1) + l ( x0 , x1 ) = 7 + 2 = 9;
( 2) (1)
0 = 4 + l ( x0 , x4 ) = 8 + 7 = 15.
Cum noi determinm drumul de valoare minim ntre x0 i x5 , vom prefera s lum:
(0 ) = 9 . Pentru (2 ) avem tot dou posibiliti:
2 2

(22 ) = 3(1) + l ( x2 , x3 ) = 3 + 5 = 8;
(2) (1)
2 = 4 + l ( x2 , x4 ) = 8 + 1 = 9.
( 2) ( 2)
Conform aceluiai raionament vom lua: 2 = 8 . Pentru 4 vom avea:
( ) ( ) ( )
42 (
= 31 + l x4 , x3 ) = 3 + 2 = 5 . Deci 42 = 5 . n rest, pentru i = 1,3,5 vom avea:
( ) ( )
i 2 = i1 adic:

130
1( 2 ) = 1(1) = 7; ( )
02 = 9;

( 2) (1) ( )
3 = 3 = 3; 22 = 8;
( 2) (1) ( )
5 = 5 = +; 42 = 5.

Etapa 2
Vrful x0 :
( x0 , x1 ) : (02 ) 1( 2 ) = 9 7 = 2 = l ( x0 , x1 ) ;

( 2) ( 2)
( x0 , x2 ) : 0 2 = 9 8 = 1 < l ( x0 , x2 ) = 5;
( 2) ( 2)
( x0 , x4 ) : 0 4 = 9 5 = 4 < l ( x0 , x4 ) = 7;
Vrful x1 :
( x1, x2 ) : 1( 2 ) (22 ) = 7 8 = 1 < l ( x1, x2 ) = 1;

( 2) (2)
( x1, x4 ) : 1 4 = 7 5 = 2 < l ( x1, x4 ) = 6;
( 2) ( 2)
( x1, x5 ) : 1 5 = 7 = < l ( x1, x5 ) = 7;
Vrful x2 :
( x2 , x3 ) : (22 ) 3( 2 ) = 8 3 = 5 = l ( x2 , x3 ) ;
(2) ( 2)
( x2 , x4 ) : 2 4 = 8 5 = 3 > l ( x2 , x4 ) ; ( )
Vrful x3 :

{ (x ,x ):
3 5
( 2)
3
( )
52 = 3 = < l ( x3 , x5 ) = 3;

Vrful x4 :
( x4 , x3 ) : (42 ) 3( 2 ) = 5 3 = 2 = l ( x4 , x3 ) ;
( 2) ( 2)
( x4 , x5 ) : 4 5 = 5 = < l ( x4 , x5 ) = 8.
( 2)
Se poate mbunti valoarea 2 i pentru etapa urmtoare vom lua:
( ) ( )
23 = 42 + l ( x2 , x4 ) = 5 + 1 = 6 , iar celelalte valori rmn nemodificate.
( ) ( ) ( ) ( ) ( )
03 = 9 , 13 = 7 , 33 = 3 , 43 = 5 , 53 = + .

Etapa 3
Vrful x0 :

131
( x0 , x1 ) : (03) 1( 3) = 9 7 = 2 = l ( x0 , x1 ) ; ( )

( 3) ( 3)
( x0 , x2 ) : 0 2 = 9 6 = 3 < l ( x0 , x2 ) = 5;
( 3) ( 3)
( x0 , x4 ) : 0 4 = 9 5 = 4 < l ( x0 , x4 ) = 7;
Vrful x1 :
( x1, x2 ) : 1( 3) (23) = 7 6 = 1 = l ( x1, x2 ) ; ( )

( 3) ( 3)
( x1, x4 ) : 1 4 = 7 5 = 2 < l ( x1, x4 ) = 6;
( 3) ( 3)
( x1, x5 ) : 1 5 = 7 = < l ( x1, x5 ) = 7;
Vrful x2 :
( x2 , x3 ) : (23) (33) = 6 3 = 3 < l ( x2 , x3 ) = 5;
( 3) ( 3)
( x2 , x4 ) : 2 4 = 6 5 = 1 = l ( x2 , x4 ) ( )
Vrful x3 :

{( x , x ) :
3 5
( 3)
3
( )
53 = 3 = < l ( x3 , x5 ) = 3;
Vrful x4 :
( x4 , x3 ) : (43) (33) = 5 3 = 2 = l ( x4 , x3 ) ; ( )
( 3) ( 3)
( x4 , x5 ) : 4 5 = 5 = < l ( x4 , x5 ) = 8.
Constatm c la sfritul acestei etape pentru nici un vrf al grafului nu se
( 3) ( 4) ( 3)
( )
nregistreaz nici o relaie de forma: i j > l xi , x j , deci valorile i = i ,
i = 0,1,2,3,4,5 , sunt optime. Am marcat cu (*) toate relaiile de forma (3.3.1) verificate cu
semnul = obinute la sfritul etapei 3.

Determinarea drumului optim de la x0 la x5


Primul vrf este x0 . Dac xi este al doilea vrf al acestui drum, atunci
0 i = l ( x0 , xi ) . Analiznd aceste relaii pentru vrful x0 , rezult i = 1 . Deci x1 este al
doilea vrf pe drumul optim. Dac xi urmeaz dup x1 pe drumul optim, atunci trebuie s
avem: 1 i = l ( x1, xi ) . Rezult i = 2 . Deci x2 este al treilea vrf al drumului optim.
Relaia: 2 i = l ( x2 , xi ) este verificat pentru i = 4 . Rezult c x4 este al patrulea vrf
al drumului optim. 4 i = l ( x4 , xi ) . Rezult i = 3 , deci vrful urmtor este x3 i apoi,
ultimul vrf pe drumul optim este x5 . Aadar drumul optim este = ( x0 , x1 , x2 , x4 , x3 , x5 )
i lungimea sa este 0 = 9 .

132
Observaie
( 0) (1) ( 2)
= 5( ) = 0 , se obine i drumul 1 = ( x0 , x1, x5 ) .
3
Pe varianta 5 = 5 = 5

3.9 Variant a algoritmului lui Bellman-Kalaba pentru determinarea drumurilor


de valoare minim ntre dou vrfuri ale unui graf
Ca i n cazul algoritmului lui Ford i n cazul de fa algoritmul lui Bellman-Kalaba
poate fi organizat n sens invers, prin aceasta nelegnd urmtoarele: n etapele succesive
ale algoritmului se vor determina valorile optime ale drumurilor formate dintr-un arc, din cel
mult dou arce, din cel mult trei arce etc., dar de la vrful iniial x0 i pn la fiecare din
celelalte vrfuri x j , j = 1,2,..., n ale grafului. Algoritmul cuprinde aceleai faze i etape ca
i n cazul anterior, prezentat n paragraful 3.8.
Faza I declanarea i funcionarea algoritmului pn la realizarea condiiei de
oprire.
Faza I cuprinde mai multe etape.
Etapa 0.
( )
Se formeaz matricea c = cij , i, j = 1, 1, 2,..., n , conform relaiilor:

l ( xi , x j ) , dac ( xi , x j ) U , i j;

cij = 0 , dac i = j; (3.9.1)

+ ( )
, dac xi , x j U , i j.


( 0)
Se definesc numerele v j = c0 j , j = 0,1, 2,..., n , reprezentnd valoarea minim
a drumurilor de la x0 la x j , j = 1,2,..., n , formate dintr-un singur arc. Aceste valori se afl
pe prima linie a matricei C, respectiv pe linia lui x0 .
Etapa k ( k 1 ).
(k ) (k )
n etapa k se calculeaz numerele v j , j = 1,2,..., n , v0 = 0 , reprezentnd
valoarea minim a drumului de la x0 la x j format din cel mult k + 1 arce, cu relaiile:

( )
n
v(j ) = min cij + vi( ) , j = 1,2,..., n , v0( ) = 0 .
k k 1 k
(3.9.2)
i =0

Dac la sfritul etapei k exist indici j pentru care v j


( k ) < v( k 1) , aceasta nseamn c
j
( k ) nu sunt optime i c exist cel puin un drum, de la x la
valorile v j 0 x j format din k + 1
arce, mai bun (deci de valoare mai mic) dect orice drum de la x0 la x j format din cel mult
k arce; acest drum poate apare n etapa urmtoare, k + 1 .
Algoritmul se continu pn la prima etap k n care se va obine:

v(j ) = v(j ) , ( ) j = 0,1, 2,..., n .


k k 1
(3.9.3)

133
(k )
Valorile v j = v j = v j
( k 1)
, j = 0,1, 2,..., n , obinute la sfritul acestei etape sunt
valorile optime i reprezint, pentru fiecare j = 0,1, 2,..., n , valoarea minim drumului
(k )
(drumurilor) de la x0 la x j . Valoarea vn = vn este valoarea minim a drumului optim de la
x0 la xn . Relaiile (3.9.3) reprezint, n ansamblul lor, condiia de oprire a algoritmului n
faza I.
Faza II determinarea drumului optim (de valoare minim) de la x0 la xn .
Determinarea drumului optim se face n sensul de la xn ctre x0 , astfel:
dac xi este primul vrf care-l precede pe xn pe drumului optim, atunci se caut
n relaia (3.9.2) din ultima etap a fazei I, scris pentru j = n , indicele i pentru care:

vn = cin + vi . (3.9.4)

dac se cunoate un vrf xm al drumului optim i xm x0 i dac xi este vrful


care-l precede pe xm pe drumul optim, atunci se caut n relaia (3.9.2) din ultima etap a
fazei 1 scris pentru j = m , indicele i pentru care:

vm = cim + vi . (3.9.5)
algoritmul se continu pn cnd ultimul vrf determinat al drumului optim este
nsui x0 .

Exemplul 3.9.1
S se determine drumul de valoare minim dintre vrfurile x0 i x6 n graful din
figura 3.8.1, utiliznd aceast variant a algoritmului lui Bellman-Kalaba.
Faza I
Etapa 0.
Matricea C este aceeai ca n cea din exemplul 3.8.1.
x0 x1 x2 x3 x4 x5 x6
0 2 4 5 x0
0 12 1 x1
0 4 2 x2
C=
11 0 2 4 11 x3
0 3 x4
2 0 7 x5
0 x6
( 0)
Numerele v j = c0 j , j = 0,1,...,6 se afl n matricea C pe linia corespunztoare lui
x0 i reprezint valoarea minim a drumurilor de la x0 la x j , j = 1,2,...,6 , formate dintr-
un singur arc. Vectorul V
( 0 ) este urmtorul:

V ( ) = 0,2, ,4,5, ,
( ).
0

134
Etapa 1; k = 1 .
(1) (1)
Calculm numerele v j , j = 1,2,..., n , v0 = 0 , cu relaiile (3.9.2), pentru k = 1 .
Avem:
(1)
Pentru j = 0 : v0 = 0 .
Pentru j = 1 :

( )
6
(1)
v1 = min ci1 + vi( ) = min ( 2 + 0;0 + 2; + ; + 4; + 5; + ; + ) = 2 .
0
i =0
Practic, se adun elementele corespunztoare din coloana lui x1 cu elementele

vectorului V
( 0)
(aflate n aceast etap pe linia lui x0 n matricea C), dup care se determin
cea mai mic valoare din vectorul rezultat.
Pentru j = 2 :

( )
6
(1)
v2 = min ci 2 + vi( ) = min ( + 0;12 + 2;0 + ;11 + 4; + 5;2 + ; + ) = 14
0
i =0
min ( coloana lui x2 + linia lui x0 ) .
Pentru j = 3 :

( )
6
v3( ) = min ci 3 + vi( ) = min ( 4 + 0;1 + 2;4 + ;0 + 4; + 5; + ; + ) = 3
1 0
i =0
min ( coloana lui x3 + linia lui x0 ) .
Pentru j = 4 :

( )
6
v4( ) = min ci 4 + vi( ) = min ( 5 + 0; + 2; + ;2 + 4;0 + 5; + ; + ) = 5
1 0
i =0
min ( coloana lui x4 + linia lui x0 ) .
Pentru j = 5 :

( )
6
v5( ) = min ci 5 + vi( ) = min ( + 0; + 2; + ;4 + 4;3 + 5;0 + ; + ) = 8
1 0
i =0
min ( coloana lui x5 + linia lui x0 ) .
Pentru j = 6 :

( )
6
v6( ) = min ci 6 + vi( ) = min ( + 0;0 + 2;2 + ;11 + 4; + 5;7 + ;0 + ) = 15
1 0
i =0
min ( coloana lui x6 + linia lui x0 ) .

La sfritul etapei 1 se obine vectorul:


1
( 1 1
)
V ( ) = v0( ) , v1( ) , v2( ) ,..., v6( ) = ( 0,2,14,3,5,8,15) .
1 1

( 0 ) = 0,2, , 4,5, ,
Comparnd, pe componente, cu vectorul V ( ) , se constat c
(1) ( 0) (1)
exist indici j pentru care v j < v j i anume j {2,3,5,6} , deci valorile v j nu sunt
optime, astfel c algoritmul continu.
135
Etapa 2; k = 2 .

( )
6
( 2 ) = min c + v(1) ( 2)
Se calculeaz valorile v j ij i , j = 1,2,...,6 , v0 = 0 (relaiile
i =0
(3.9.2), k = 2 ). Practic, pentru fiecare j = 1,2,...,6 se va aduna (pe componente) coloana
corespunztoare vrfului x j din matricea C cu vectorul V
(1) obinut la sfritul etapei 1,
element cu element i apoi se determin cea mai mic valoare din fiecare vector astfel obinut.
Rezult:
j = 0 : v0( ) = 0 ;
2

( )
6
j = 1 : v1( ) = min ci1 + vi( ) = 2 = v1( ) ;
2 1 1
i =0

j = 2 : v( ) = min ( c + v( ) ) = 10 < v( ) = 14 ;
6
2 1 1
2 i2 i 2
i =0

j = 3 : v( ) = min ( c + v( ) ) = 3 = v( ) ;
6
2 1 1
3 i3 i 3
i =0

j = 4 : v( ) = min ( c + v ( ) ) = 5 = v( ) ;
6
2 1 1
4 i4 i 4
i =0

j = 5 : v( ) = min ( c + v( ) ) = 7 < v( ) = 8 ;
6
2 1 1
5 i5 i 5
i =0

j = 6 : v( ) = min ( c + v( ) ) = 14 < v( ) = 15 .
6
2 1 1
6 i6 i 6
i =0
( 2)
= ( 0,2,10,3,5,7,14 ) . Comparnd cu vectorul V ( ) obinut
1
Se obine vectorul V

la sfritul etapei 1, se constat c exist indicii j {2,5,6} pentru care v j


( 2 ) < v(1) , deci
j
( 2)
valorile v j nu sunt optime.
Etapa 3; k = 3 .

( )
6
Se calculeaz valorile v j
( 3) = min c + v( 2 ) , j = 1, 2,...,6 , v( 3) = 0 i se obine:
ij i 0
i =0

j = 0 : v0( ) = 0 ;
3

( )
6
j = 1 : v1( ) = min ci1 + vi( ) = 2 = v1( ) ;
3 2 2
i =0

j = 2 : v( ) = min ( c + v( ) ) = 9 < v( ) = 10 ;
6
3 2 2
2 i2 i 2
i =0

j = 3 : v( ) = min ( c + v ( ) ) = 3 = v( ) ;
6
3 2 2
3 i3 i 3
i =0

j = 4 : v( ) = min ( c + v( ) ) = 5 = v( ) ;
6
3 2 2
4 i4 i 4
i =0

j = 5 : v( ) = min ( c + v( ) ) = 7 = v( ) ;
6
3 2 2
5 i5 i 5
i =0

136
( )
6
j = 6 : v6 = min ci 6 + vi( ) = 12 < v6( ) = 14 .
( 3) 2 2
i =0
( 3) = 0,2,9,3,5,7,12
Se obine vectorul V ( ) i n urma comparaiei (pe componente)
( 2 ) se constat c exist indicii j 2,6 pentru care ( 3) ( 2 ) , deci valorile
cu vectorul V { } vj < vj
v(j ) nu sunt optime i algoritmul continu.
3

Etapa 4; k = 4 .

( )
6
Se calculeaz valorile v j
( 4 ) = min c + v ( 3) , j = 1, 2,...,6 , v ( 4 ) = 0 i se obine:
ij i 0
i =0

j = 0 : v0( ) = 0 ;
4

( )
6
j = 1 : v1( ) = min ci1 + vi( ) = 2 = v1( ) ;
4 3 3
i =0

j = 2 : v( ) = min ( c + v( ) ) = 9 = v( ) ;
6
4 3 3
2 i2 i 2
i =0

j = 3 : v( ) = min ( c + v( ) ) = 3 = v( ) ;
6
4 3 3
3 i3 i 3
i =0

j = 4 : v( ) = min ( c + v( ) ) = 5 = v( ) ;
6
4 3 3
4 i4 i 4
i =0

j = 5 : v( ) = min ( c + v ( ) ) = 7 = v( ) ;
6
4 3 3
5 i5 i 5
i =0

j = 6 : v( ) = min ( c + v( ) ) = 11 < v( ) .
6
4 3 3
6 i6 i 6
i =0
( 4)
Se obine vectorul V = ( 0,2,9,3,5,7,11) i exist indicele i = 6 astfel nct
v6( ) < v6( ) , deci algoritmul continu.
4 3

Etapa 5; k = 5 .

( )
6
Se calculeaz valorile v j
( 5) = min c + v( 4 ) , j = 1, 2,...,6 , v( 5) = 0 i se obine:
ij i 0
i =0

j = 0 : v0( ) = 0 ;
5

( )
6
j = 1 : v1( ) = min ci1 + vi( ) = 2 = v1( ) ;
5 4 4
i =0

j = 2 : v( ) = min ( c + v( ) ) = 9 = v( ) ;
6
5 4 4
2 i2 i 2
i =0

j = 3 : v( ) = min ( c + v( ) ) = 3 = v( ) ;
6
5 4 4
3 i3 i 3
i =0

j = 4 : v( ) = min ( c + v( ) ) = 5 = v( ) ;
6
5 4 4
4 i4 i 4
i =0

137
( )
6
j = 5 : v5 = min ci 5 + vi( ) = 7 = v5( ) ;
( 5) 4 4
i =0

j = 6 : v( ) = min ( c + v( ) ) = 11 = v( ) .
6
5 4 4
6 i6 i 6
i =0
( 5 ) = 0,2,9,3,5,7,11
Se obine vectorul V ( ) care este identic cu V ( 4) de la sfritul
( 5) ( 4)
etapei a 4-a, deci v j = v j pentru toi indicii j = 0,1,...,6 , n acest moment fiind realizat
condiia de oprire a algoritmului.
( 5) = v( 4 ) , j = 0,1,...,6 , reprezint, pentru fiecare j,
Prin urmare valorile v j = v j j ( )
valoarea optim (minim) a drumului optim de la vrful iniial x0 pn la vrful x j .
Faza a II-a determinarea drumului optim de la x0 la x6 .
Determinarea vrfurilor drumului optim se face n sensul de la x6 ctre x0 . Valoarea
( 5)
minim a acestui drum este v6 = v6 = 11 , deci valoarea ultimei componente a vectorului
V ( ) obinut la sfritul etapei a 5-a din faza I.
6

Se rescriu n detaliu, pe componente i pentru fiecare indice j = 0,1,...,6 , relaiile


(3.9.2), cu care s-au obinut valorile optime v j = v j
( 5) n ultima etap ( k = 5 ) din faza I.

j = 0 : v0 = v0( ) = 0 ;
5

( )
6
v1 = v1( ) = min ci1 + vi( ) =
5 4
j = 1:
i =0
= min ( 2 + 0;0 + 2; + 9; + 3; + 5; + 7; + 11) = 2;
minimul se obine pentru i {0,1} .

( )
6
v2 = v2( ) = min ci 2 + vi( ) =
5 4
j = 2:
i =0
= min ( + 0;12 + 2;0 + 9;11 + 3; + 5;2 + 7; + 11) = 9;
minimul se obine pentru i {2,5} .

( )
6
v3 = v3( ) = min ci3 + vi( ) =
5 4
j = 3:
i =0
= min ( 4 + 0;1 + 2;4 + 9;0 + 3; + 5; + 7; + 11) = 3;
minimul se obine pentru i {1,3} .

( )
6
v4 = v4( ) = min ci 4 + vi( ) =
5 4
j = 4:
i =0
= min ( 5 + 0; + 2; + 9;2 + 3;0 + 5; + 7; + 11) = 5;
minimul se obine pentru i {3,4} .

138
( )
6
( 5)
v5 = v5 = min ci 5 + vi( ) =
4
j = 5:
i =0
= min ( + 0; + 2; + 9;4 + 3;3 + 5;0 + 7; + 11) = 7;
minimul se obine pentru i {3,5} .

( )
6
v6 = v6( ) = min ci 6 + vi( ) =
5 4
j = 6:
i =0
= min ( + 0; + 2;2 + 9;11 + 3;8 + 5;7 + 7;0 + 11) = 11;
minimul se obine pentru i {2,6} .
Presupunem c xi este primul vrf care-l precede pe x6 pe drumul optim de la x0 la
x6 : = { x0 ,..., xi , x6 } . Se caut n relaia (3.9.4) scris pentru j = 6 din ultima etap
indicele i pentru care: v6 = ci 6 + vi = 11 .
Se obine i = {2,6} . Cum x6 este ultimul vrf al drumului optim, rezult i = 2 , deci
x2 este vrful care-l precede pe x6 pe drumul optim: = { x0 ,..., x2 , x6 } .
Cum l ( x2 , x6 ) = 2 , rezult c v6 l ( x2 , x6 ) = 11 2 = 9 = v2 i reprezint
valoarea minim a subdrumului de la x0 la x2 pe drumul optim.
Fie xi vrful care-l precede pe x2 pe drumul optim. Se caut n relaia (3.9.2) scris
pentru j = 2 din ultima etap indicele i pentru care:
v2 = ci 2 + vi = 9 .
Se obine i {2,5} i cum x2 se afl deja pe drumul optim rezult i = 5 , deci x5 l
precede pe x2 pe drumul optim: = { x0 ,..., x5 , x2 , x6 } .
Cum l ( x5 , x2 ) = 2 , rezult c v2 l ( x5 , x2 ) = 9 2 = 7 = v5 i reprezint
valoarea minim a subdrumului de la x0 la x5 pe drumul optim.
Fie xi vrful care-l precede pe x5 pe drumul optim. Se caut n relaia (3.9.2) scris
pentru j = 5 din ultima etap indicele i pentru care:
v5 = ci 5 + vi = 7 .
Se obine i = {3,5} i cum x5 se afl deja pe drumul optim rezult i = 3 , deci x3 l
precede pe x5 pe drumul optim: = { x0 ,..., x3 , x5 , x2 , x6 } .
Cum l ( x3 , x5 ) = 4 , rezult c v5 l ( x3 , x5 ) = 7 4 = 3 = v3 i reprezint
valoarea minim a subdrumului de la x0 la x3 pe drumul optim.
Fie xi vrful care-l precede pe x3 pe drumul optim. Se caut n relaia (3.9.2) scris
pentru j = 3 din ultima etap indicele i pentru care:
v3 = ci 3 + vi = 3 .
Se obine i = {1,3} i cum x3 se afl deja pe drumul optim rezult i = 1 , deci x1 l
precede pe x3 pe drumul optim: = { x0 ,..., x1 , x3 , x5 , x2 , x6 } .

139
Cum l ( x1 , x3 ) = 1 , rezult c v3 l ( x1, x3 ) = 3 1 = 2 = v1 i reprezint valoarea
minim a subdrumului de la x0 la x1 pe drumul optim.
Fie xi vrful care-l precede pe x1 pe drumul optim. Se caut n relaia (3.9.2) scris
pentru j = 1 din ultima etap indicele i pentru care:
v1 = ci1 + vi = 2 .
Se obine i = {0,1} i cum x1 se afl deja pe drumul optim, rezult i = 0 . Dar x0
este primul vrf al drumului optim, astfel c n acest moment s-a ncheiat i faza a II-a a
algoritmului. v1 = 2 reprezint valoarea primului arc, ( x0 , x1 ) al drumului optim. Prin
urmare, drumul de valoare minim dintre vrfurile x0 i x6 este = { x0 , x1 , x3 , x5 , x2 , x6 } ,
este format din 5 arce i are valoarea minim v6 = 11 .
Se constat c rezultatul final este identic cu cel obinut prin algoritmul lui Bellman-
Kalaba n sensul direct de la x0 la x6 , ceea ce era de ateptat.

140
TESTE DE AUTOEVALOARE

Test de autoevaluare

Problema nr. 1
ntr-o ntreprindere exist 7 secii ntre care se face permanent un schimb de produse
sub diferite forme (componente, subansamble, ansamble, etc.). Posibilitile de transport ntre
cele 7 secii sunt reprezentate printr-un graf cu arce valorizate cu 7 vrfuri, avnd matricea
conexiunilor urmtoare:
x1 x2 x3 x4 x5 x6 x7
0 1 0 1 0 0 0 x1
0 0 1 0 0 1 0 x2
1 0 0 0 1 1 1 x3
A= .
1 0 1 0 1 0 0 x4
0 0 0 0 0 1 1 x5
0 1 0 0 0 0 1 x6
0 0 0 0 1 0 0 x7
Valoarea ataat fiecrui arc reprezint timpul de transport dintre seciile
corespunztoare extremitilor arcului respectiv. Matricea valorilor arcelor grafului este
urmtoarea:
x1 x2 x3 x4 x5 x6 x7
0 3 6 x1
0 2 4 x2
3 0 5 1 4 x3
C= .
1 1 0 4 x4
0 3 2 x5
2 0 2 x6
1 0 x7
1) S se construiasc o reprezentare sagital a grafului schemei de transport;
2) S se planifice transportul de la secia x1 la secia x5 astfel nct acesta s se fac
ntr-un timp minim;
3) Cum trebuie organizat transportul ntre oricare dintre cele 7 secii ale ntreprinderii,
astfel nct timpul total de transport s fie minim;
4) Presupunnd c datorit unei mai bune organizri a activitii din ntreprindere se
micoreaz timpul de transport de la secia x2 la secia x6 cu 2 uniti de timp, s se
determine soluia problemei de la punctul 3) n aceast ipotez;
5) n ipoteza apariiei unei defeciuni care necesit suspendarea legturii dintre seciile
x6 i x7 , s se determine noua soluie a problemei de la punctul 4).

141
Problema nr. 2
Pentru prelucrarea unui produs complex ntr-o ntreprindere economic, acesta poate
trece pe la unele din staiile x1 , x2 ,..., x8 , n care se execut anumite lucrri specifice fiecrei
staii de lucru. ntre aceste staii exist un sistem de transport reprezentat printr-un graf a crei
matrice a conexiunilor este urmtoarea:
x1 x2 x3 x4 x5 x6 x7 x8
0 1 0 0 0 0 1 0 x1
0 0 1 0 0 1 0 0 x2
0 0 0 1 1 0 0 1 x3
A= 1 1 0 0 0 0 0 0 x4 .
1 0 0 1 0 0 0 0 x5
0 0 0 1 1 0 0 0 x6
0 1 0 0 1 1 0 0 x7
1 0 0 1 0 0 1 0 x8
Valoarea ataat unui arc oarecare ( xi , x j ) din aceast reea de transport reprezint
creterea, cu numrul respectiv, a beneficiului net pe unitatea de produs cnd acesta trece de
la staia xi la staia x j pentru prelucrarea din staia x j , atunci cnd valoarea este pozitiv,
iar cnd este negativ, reprezint o micorare a acestui beneficiu, datorit faptului c
transportul unitar dintre xi i x j cost mai mult dect se ctig prin mbuntirea adus
prin prelucrarea din staia x j . Matricea valorilor arcelor grafului descris de matricea A este
urmtoarea:
x1 x2 x3 x4 x5 x6 x7 x8
0 2 4 x1
0 2 2 x2
0 1 1 2 x3
C= 1 3 0 x4 .
3 2 0 x5
3 1 0 x6
1 2 3 0 x7
2 1 1 0 x8
1) S se construiasc o reprezentare sagital a grafului sistemului de transport dintre
cele 8 secii ale ntreprinderii;
2) S se determine matricea conex terminal ataat grafului utiliznd algoritmul lui
Chen;
3) S se stabileasc dac graful are circuite;
4) S se determine numrul i lungimea drumurilor (numrul arcelor) dintre oricare
dou vrfuri xi i x j ale grafului;

142
5) S se determine prin care dintre cele opt staii i n ce ordine trebuie transportat
produsul dac, odat ajuns ntr-o staie, el trebuie supus prelucrrii din staia respectiv i
astfel nct mrimea total a beneficiului net pe unitatea de produs s fie maxim;
6) Cum se modific soluia problemei dac beneficiul suplimentar net la unitatea de
produs, transportat de la staia x6 la staia x4 scade cu dou uniti;
7) Determinai cu algoritmul lui Ford valoarea maxim a drumului de la x6 la x5 , n
ipoteza l ( x6 , x4 ) = 3 ;
8) Determinai cu algoritmul lui Bellman-Kalaba valoarea maxim a drumului de la
x6 la x5 n ipoteza de la punctul 6: l ( x6 , x4 ) = 1 .

143
TEME DE CONTROL

Problema nr. 1
O companie de transport mrfuri trebuie s efectueze transportul unor produse ntre
apte puncte economice notate cu x1 , x2 ,..., x7 , acestea fiind ntreprinderi, depozite,
magazine de desfacere, etc. Reeaua de transport este un graf cu 7 vrfuri, x1 , x2 ,..., x7 i
avnd matricele A a conexiunilor, respectiv C a valorilor arcelor, urmtoare:
x1 x2 x3 x4 x5 x6 x7
0 1 0 0 1 1 1 x1
0 0 1 1 0 0 0 x2
1 0 0 1 0 0 0 x3
A= ;
0 1 0 0 0 1 0 x4
0 0 1 1 0 1 0 x5
1 0 1 0 1 0 0 x6
1 0 0 1 0 1 0 x7
x1 x2 x3 x4 x5 x6 x7
0 3 3 2 1 x1
0 2 4 x2
3 0 2 x3
C= .
4 0 2 x4
3 4 0 2 x5
2 3 2 0 x6
1 3 2 0 x7
(
Valoarea arcului xi , x j ) reprezint valoarea cheltuielilor de transport pe unitatea de
produs ntre vrfurile xi i x j ale reelei formate din cele 7 puncte economice.
1) S se construiasc o reprezentare sagital a grafului reelei de transport
corespunztoare matricelor A i C;
2) S se determine modul n care trebuie organizat transportul ntre dou puncte
arbitrare ale reelei astfel nct costul total de transport s fie minim;
3) S se determine modificrile soluiei problemei de transport de la punctul 2) n
ipoteza c nu mai poate fi utilizat legtura de la punctul x1 la punctul x6 .

Problema nr. 2
n departamentul de cercetare al unei fabrici din industria aeronautic s-au fcut studii
i cercetri privind influena anumitor tratamente suplimentare n prelucrarea unor piese
asupra mrimii sau micorrii timpului mediu de funcionare al pieselor respective.

144
Rezultatele cercetrilor au artat c acest timp se mrete sau se micoreaz cu un
anumit numr de uniti de timp, aceasta depinznd numai de ordinea n care se aplic aceste
tratamente.
S-a stabilit c modificarea timpului mediu de funcionare a unei piese eseniale din
ansamblul trenului de aterizare depinde de tratamentul aplicat la un moment dat i de
tratamentul aplicat anterior, existnd numai posibilitile indicate prin arcele unui graf cu 9
vrfuri, reprezentnd cele 9 tratamente posibile care pot fi aplicate. Matricea conexiunilor
acestui graf este urmtoarea:
x1 x2 x3 x4 x5 x6 x7 x8 x9
0 0 0 1 1 1 0 0 0 x1
1 0 1 0 1 0 0 0 0 x2
0 1 0 0 0 0 0 0 1 x3
1 1 1 0 0 0 0 0 0 x4
A= .
0 0 0 0 0 1 0 0 0 x5
0 0 0 0 1 0 1 0 0 x6
0 0 0 0 0 1 0 1 0 x7
0 0 0 0 1 0 1 0 0 x8
0 1 0 0 1 1 0 1 0 x9
Valoarea ataat fiecrui arc ( xi , x j ) reprezint numrul de uniti de timp cu care
crete timpul mediu de funcionare al piesei dac se aplic consecutiv tratamentele xi i x j ,
cu convenia c o valoare pozitiv reprezint o cretere propriu-zis, iar o valoare negativ
reprezint o scdere a acestui timp. Matricea valorilor arcelor grafului este urmtoarea:
x1 x2 x3 x4 x5 x6 x7 x8 x9
0 1 2 6 x1
7 0 4 8 x2
1 0 4 x3
2 2 2 0 x4
C= .
0 5 x5
7 0 1 x6
2 0 1 x7
6 2 0 x8
1 5 3 2 0 x9
Cercetrile au evideniat i faptul c modificrile din timpul mediu de funcionare a
piesei descrise prin graful dat, se cumuleaz prin aplicarea succesiv a mai multor tratamente
succesive, dar nu mai multe de 10; aplicarea a mai mult de 10 tratamente devine incomod i
costisitoare i creterea numrului lor peste 10 nu conduce la modificarea semnificativ a
timpului mediu de funcionare a piesei.
1) S se construiasc o reprezentare sagital a grafului celor 9 tratamente termice,
avnd matricea conexiunilor A i matricea valorilor arcelor C;
145
2) S se determine matricea drumurilor T ataat grafului i s se precizeze dac n
graf exist circuite;
3) S se determine care dintre cele 9 tratamente posibile trebuie efectuate asupra piesei
i care este ordinea aplicrii lor astfel nct timpul mediu de funcionare a piesei s creasc cu
un numr ct mai mare de uniti de timp;
4) Presupunnd c n urma unor studii suplimentare s-a constatat c aplicarea
tratamentului x7 dup tratamentul x5 conduce la creterea timpului mediu de funcionare a
piesei cu 5 uniti de timp, s se determine soluia problemei n aceast ipotez suplimentar.
Problema nr. 3
ntre opt puncte de lucru ale unui sistem economic exist o reea de transport al crui
graf este dat prin matricea A a conexiunilor dintre vrfurile x1 , x2 ,..., x8 ale sale, unde:
x1 x2 x3 x4 x5 x6 x7 x8
0 1 0 0 0 1 0 1 x1
0 0 1 0 1 0 0 0 x2
0 0 0 1 0 0 0 0 x3
A= 0 0 0 0 0 1 0 1 x4 .
1 0 0 1 0 0 0 0 x5
0 0 1 0 1 0 1 0 x6
1 1 0 1 0 0 0 0 x7
0 1 0 0 0 0 1 0 x8
Valorile asociate fiecrui arc ( xi , x j ) reprezint cheltuielile de transport
corespunztoare, pe unitatea de produs transportat, de la punctul xi la punctul x j al reelei.
Matricea valorilor arcelor grafului este urmtoarea:
x1 x2 x3 x4 x5 x6 x7 x8
0 3 2 1 x1
0 5 3 x2
0 3 x3
C= 0 3 2 x4 .
3 4 0 x5
6 0 2 x6
4 2 2 0 x7
2 3 0 x8
1) S se construiasc o reprezentare sagital a grafului cu arce valorizate a sistemului
de transport dintre cele opt puncte ale sistemului economic aferent matricelor A i C;
2) S se determine matricea drumurilor asociat acestui graf utiliznd algoritmul lui
Chen;
3) S se stabileasc dac graful are circuite;

146
4) S se determine cum trebuie organizat transportul ntre oricare dou puncte ale
sistemului astfel nct costul total de transport ntre aceste puncte s fie minim;
5) S se studieze cum se modific aceast organizare dac apare o nou posibilitate de
transport, ntre vrfurile x3 i x7 , valoarea asociat acestui arc fiind de dou uniti bneti.

BIBLIOGRAFIE RECOMANDAT PENTRU UNITATEA DE NVARE NR. 3:

1. Claude Berge: Teoria grafurilor i aplicaiile ei, Editura tehnic, Bucureti, 1969;
2. Tiberiu Ionescu: Grafuri. Aplicaii, Vol I, II, Editura didactic i pedagogic,
Bucureti, Bucureti, 1973;
3. Al. Rou: Teoria grafurilor. Algoritmi i aplicaii, Editura militar, Bucureti,
1974;
4. C. Dinescu, B. Svulescu: Metode de matematic modern pentru economiti.
Culegere de probleme, Editura didactic i pedagogic, Bucureti, 1975;
5. O. Popescu, D.P. Vasiliu, .a.: Matematici aplicate n economie, Editura didactic
i pedagogic, Bucureti, 1997;
6. Nicolae Micu: Teoria grafurilor, Editura Academiei Militare, Bucureti, 1981;
7. C. Dinescu, I. Ftu: Matematici pentru economiti, vol. II, III, Editura didactic i
pedagogic, Bucureti, 1995.
8. Drago-Radu Popescu: Combinatoric i teoria grafurilor, Biblioteca Societii de
Stiine Matematice din Romnia, Bucureti, 2005.

147
Chestionar feedback

n dorina de ridicare continu a standardelor desfurrii activitilor


dumneavoastr, va rugm ca dup parcurgerea fiecrei uniti de nvare s
completai acest chestionar i s-l transmitei indrumatorului de an.

Disciplina: Algoritmica grafurilor


Unitatea de invatare/modulul:__________________
Anul/grupa:__________________________
Tutore:_________________________

Partea I . Coninut

1. Care dintre subiectele tratate in aceasta unitate/modul considerai c este cel


mai util i eficient? Argumentati raspunsul.

2. Ce aplicatii/proiecte din activitatea dumneavoastra dorii s


imbunatatiti/modificai/implementai n viitor n urma cunotinelor acumulate
n cadrul acestei unitati de invatare/modul?

3. Ce subiecte din acesta unitate de invatare/modul considerai c ar fi trebuit s


fie tratate mai extins ?

4. La care aplicatii practice ati intampinat dificultati in realizare? Care credeti


ca este motivul dificultatilor intalnite?

148
5. Timpul alocat acestui modul a fost suficient?

6. Daca ar fi sa va evaluati cunostintele acumulate din parcurgerea unitatii de


invatare/modului, care este nota pe care v-o alocati, pe o scala de la 1-10?.
Argumentati.

Partea II. Impresii generale

1. Acest modul a ntrunit ateptrile dumneavoastr?

n totalitate n mare msur n mic msur Nu

2) Avei sugestii care s conduc la creterea calitii acestei unitati de


invatare/modul?

3) Avei propuneri pentru alte teme n cadrul acestei discipline ?


Argumentati.

4) Cunoatei care sunt disciplinele din anii urmtori de studiu la care vei
utiliza cunotinele dobndite la aceast disciplin ?

V mulumim pentru rspunsul dumneavoastr!

149

Vous aimerez peut-être aussi