Sunteți pe pagina 1din 48

1

1 TEORIA GRAFURILOR 1. No ţ iuni generale Exist ă numeroase probleme economice pentru care o

TEORIA GRAFURILOR

1. Noţiuni generale

Există numeroase probleme economice pentru care o reprezentare

sub forma unor scheme alcătuite din puncte şi săgeţi aduce clarificări şi

uşurează înţelegerea proceselor în sensul elucidării legăturilor de succesiune

şi cauzalitate. Pentru a da un exemplu, ne referim la procesul de luare a unei

decizii. Pornind de la o situaţie A 0 se constată că sunt p variante ce conduc

la situaţiile A 1 ,

pentru fiecare situaţie A i , i = 1, p , există posibilitatea de a trece la una din

, A p . Analizând în continuare desfăşurarea fenomenului,

i . Raţionamentul poate continua cât timp procesul pune

situaţiile A ij , j =

în evidenţă noi variante. O reprezentare sugestivă a procesului descris mai

sus poate fi dată în figura următoare:

1, n

A

0

A

sus poate fi dat ă în figura urm ă toare: 1, n A 0 A 1

1

i

p

poate fi dat ă în figura urm ă toare: 1, n A 0 A 1 i

poate fi dat ă în figura urm ă toare: 1, n A 0 A 1 i

poate fi dat ă în figura urm ă toare: 1, n A 0 A 1 i

A 11

A

1n

1

A i1

A

in

A p1

i

A

pn

p

În raport cu un obiectiv stabilit apriori, dacă este posibil ca pentru

oricare cuplu de situaţii succesive să se asocieze o valoare reală, urmează să

se găsească o metodă de determinare a succesiunii optime din punctul de vedere al obiectivului adoptat. Un graf G este o pereche (X, T) unde X este o mulţime de elemente numite vârfuri sau noduri, iar T este o aplicaţie a lui X pe mulţimea părţilor sale. Vom nota graful G = (X, T). Deci dacă x X, atunci T(x) X. Dacă

x, y X şi y T(x), perechea u = (x, y) se numeşte arc al grafului G, cu x

extremitatea iniţială (originea) arcului u, iar y este extremitatea finală a lui

u.

Notând prin U = (x, y) x X, y T(x)putem da o altă expresie a grafului şi anume G = (X, U). Exemplu: Fie X = x 1 , x 2 , x 3 , x 4 , x 5 şi T(x 1 ) = x 2 , x 4 , x 5 ;

T(x 2 ) = x 3 , x 5 ; T(x 3 ) = x 1 , x 5 ; T(x 4 ) = x 3 ; T(x 5 ) = x 4 . Mulţimea arcelor este:

U = (x 1 , x 2 ), (x 1 , x 4 ), (x 1 , x 5 ), (x 2 , x 3 ), (x 2 , x 5 ), (x 3 , x 1 ), (x 3 , x 5 ),

(x 4 , x 3 ) (x 5 , x 4 ). Pentru graful astfel definit se poate realiza o imagine geometrică construită astfel: vârfurile mulţimii X se aşează în plan şi se duc segmente

orientate care unesc punctele x i şi T(x i ), i = 1,5 .

x 1

x 2 x 4
x 2
x 4

x 3

x 5

O mulţime de vârfuri unite două câte două prin arce formează un

, u k sunt arce ale unui graf cu proprietatea că

extremitatea finală a lui u i coincide cu extremitatea iniţială a lui u i+1,

graf orientat. Dacă u 1 ,

1 i k-1, şirul de arce se numeşte drum. Când extremitatea finală a lui u k coincide cu originea lui u 1 drumul se numeşte circuit. Drumul poate fi definit şi prin specificarea şirului de vârfuri prin care trece, astfel:

d = (x 1 , x 2 ,

,

x r ) dacă aceste vârfuri sunt în ordinea x 1 , x 2 ,

, x r .

Drumul ce trece o singură dată prin unele vârfuri ale grafului se numeşte drum elementar. Drumul elementar ce trece prin toate vârfurile grafului se numeşte drum hamiltonian. Numărul arcelor ce compun un drum se numeşte lungimea drumului. Când x i T(x i ), arcul (x i , x i ) se numeşte buclă.

Vom spune că [x, y] este o muchie dacă (x, y) şi (y, x) sunt arce. De

aceea, o muchie coincide cu mulţimea vârfurilor care o compun. Nu este deci necesar să figurăm două sensuri contrare pe segmentul care le uneşte. Un şir de muchii formează un lanţ dacă oricare două muchii consecutive au o extremitate comună. Lanţul poate fi definit şi de succesiunea de vârfuri prin care trece, astfel:

, x r ] dacă aceasta este ordinea vârfurilor. Lanţul ce

trece o singură dată prin unele vârfuri ale grafului se numeşte lanţ elementar. Lanţul elementar ce trece prin toate vârfurile grafului se va numi lanţ hamiltonian. Când x 1 = x r şi toate muchiile lanţului L sunt distincte două câte două, lanţul se numeşte ciclu. Numărul muchiilor unui lanţ se numeşte lungimea lanţului. Dacă într-un graf oricare două vârfuri ale sale sunt unite printr-un lanţ, graful este conex.

Graful G 1 = (X, U’), cu U’ U este un graf parţial al grafului

G = (X, U), iar graful G 2 = (X’, U’) cu X’ X şi U’U este un subgraf al lui G = (X, U).

L = [x 1 , x 2 ,

Graful cu un număr finit de vârfuri se numeşte graf finit. Când vârfurile grafului G sunt legate numai prin arce vom spune că graful G este orientat, iar când vârfurile sunt legate prin muchii, graful G este neorientat.

2. Matrici asociate unui graf

Fie graful G = (X, U) cu X = x 1 ,

, x n . Matricea A = (a ij ),

1 ≤ i, j ≤ n, cu 1, dac ă exist ă arcul (x i
1 ≤ i, j ≤ n, cu
1, dac ă exist ă arcul (x i , x j )
a ij =
0, în cazul contrar
se numeşte matricea arcelor sau matricea conexiunilor directe. Ea
determină graful în mod unic şi constituie un nou mod de a defini un graf.
Matricea D = (d ij ), 1 ≤ i, j ≤ n, cu
1, dac ă exist ă cel pu ţ in un drum de la x i la x j
d ij =
0, în cazul contrar
se numeşte matricea drumurilor sau matricea conexiunilor totale.
Matricea drumurilor poate determina mai multe grafuri. Astfel
grafurile de mai jos, deşi diferite, au aceeaşi matrice a drumurilor.
x
x 2
D
x
x
x
x
2
1
2
3
4
x
0
1
1
1
1
x 1
x 3
x 1
x 3
x
0
0
0
0
2
x
0
1
0
0
3
x
x 4
x
0
0
0
0
4
4

Dăm acum câteva rezultate necesare prezentării unui algoritm de determinare a matricei drumurilor, datorat lui Y. V. Chen. Propoziţia 1: Într-un graf G cu n vârfuri lungimea maximă a unui drum elementar este egală cu n -1.

Demonstraţie: Aplicăm metoda inducţiei complete şi pentru n = 2 proprietatea este adevărată deoarece între 2 vârfuri poate exista cel mult un drum elementar format dintr-un arc, deci de lungime 1, dacă arcul există. Presupunem că într-un graf cu n -1 vârfuri există un drum elementar de lungime n -2 şi fie acesta:

i n-1 ⎬ ⊂ ⎨1,

d = (x

i

1

,

), i 1 ,

, n-1.

,

x

i

n1

,

Adăugăm

grafului

considerat

încă

drumului de mai sus un arc în plus ((x n , x

i

1

un

vârf

) sau (x

i

n1

x n

ce

poate

, x n ) sau (x

i

k

aduce

, x n ) şi

(x n , x

i

k+1

), cu dispariţia din d a arcului (x

i

k

, x

i

k+1

)) şi lungimea noului drum

va fi n-1. În restul cazurilor drumul elementar are lungimea mai mică decât

n – 1 şi propoziţia este demonstrată. Notăm acum prin T (1) (x i ) mulţimea vârfurilor unui graf G la care se

ajunge din x i prin drumuri de lungime 1 (dintr-un singur arc); T (2) (x i ) mulţimea vârfurilor din G la care se ajunge din x i prin drumuri de lungime 2 (din două arce) ş.a.m.d.; conform propoziţiei 1, ultima mulţime va fi

T (n-1) (x i ), dacă graful G are n vârfuri.

Propoziţia 2: Fie G un graf cu n vârfuri, D = (d ij ), 1 i, j n,

matricea drumurilor lui G. Atunci d ij = 1, i j, dacă şi numai dacă

n 1

x j U

s = 1

T

(

s

)

(

x

i

).

Demonstraţie: Dacă d ij = 1 rezultă că există cel puţin un drum de la

x i la x j . Presupunem că drumul este format din k arce, 1 k n-1; atunci

n 1

x j T (k) (x i ), deci x j U

T

(

s

)

(

x

i

).

s = 1

n 1

Reciproc, dacă x j U

s = 1

T

(

s

)

(

x

i

)

, atunci x j aparţine cel puţin unei

mulţimi a reuniunii, fie aceasta T (k) (x i ). Adică la x j se ajunge din x i printr-un drum de lungime k, deci d ij = 1 şi propoziţia 2 este demonstrată. Reamintim că adunarea booleană se defineşte astfel:

+ 0 1 0 0 1 1 1 1
+
0
1
0
0
1
1
1 1

Cu rezultatele de mai sus dăm etapele următorului Algoritm pentru determinarea matricei D

1)

Asociem grafului dat matricea arcelor A = (a ij ), 1 i, j n;

2) Construim matricea D, linie cu linie, astfel: pentru determinarea

liniei i din D, i = 1, n , urmărim elementele egale cu 1 de pe linia i

, a is se transcriu în linia i din D şi

, s din A la linia i generându-se noi

elemente egale cu 1 pe linia i din D. Fie acestea d ik ,

, d im ce

indică, conform propoziţiei 2, existenţa drumurilor de la x i la

, x m T (2) (x i ).

x

, m din A la linia i, generând noi

elemente egale cu 1 ce vor reprezenta drumurile de la x i la alte vârfuri, formate din 3 arce, ş.a.m.d. până când ajungem la una din situaţiile:

Adunăm boolean liniile k,

din A; dacă acestea sunt a ip , se adună boolean liniile p,

k ,

,

x m , drumuri formate din 2 arce, adică x k ,

a) toate elementele liniei i sunt egale cu 1; b) nu se mai pot genera alte elemente egale cu 1 pe linia i din D şi completăm locurile rămase libere cu 0.

3) Procedăm analog pentru fiecare linie din D şi obţinem în final

matricea drumurilor.

Exemplu: Să se determine matricea D pentru următorul graf:

x 1

x 2 x 4
x 2
x 4

x 5

Rezolvare

Matricea arcelor A va fi:

x 3

A

x 1

x 2

x 3

x 4

x 5

x

1

0

0

0

1

0

x

2

1

0

1

0

1

x

3

0

0

0

0

0

x

4

0

0

1

0

0

x

5

1

0

0

1

0

Pentru a obţine linia 1 din D observăm că în A elementul a 14 = 1; îl

transcriem în linia 1 din D, deci d 14 = 1 şi adunăm boolean linia 4 din A la

linia 1. Se generează elementul d 13 = 1, apoi adunăm boolean linia 3 din A

la linia 1 şi observăm că nu mai pot fi generate alte elemente egale cu 1

deoarece toate elementele liniei 3 sunt nule. Completăm locurile libere din

linia 1 a lui D cu 0.

Să determinăm acum linia 2 din D. Observăm că în A avem a 21 = a 23

= a 25 = 1 şi le preluăm în linia 2 din D, apoi adunăm boolean liniile 1, 3 şi 5

la linia 2. Se obţine d 24 = 1, deci vom aduna linia 4 din A la 2 şi deoarece nu

mai pot fi generate alte elemente egale cu 1, completăm cu 0 locurile libere.

Linia 3 din D este linia 3 din A deoarece are toate elementele 0. Pe

linia 4 din A avem a 43 = 1, îl preluăm în linia 4 din D, adunăm boolean linia

3 din A la linia 4 şi nu mai pot fi generate elemente egale cu 1, deci

completăm cu 0. În sfârşit linia 5 din A are a 51 = a 54 = 1, le preluăm în linia

5 din D, adunăm boolean linia 1 şi 4 din A la linia 5, apare d 53 = 1, adunăm

linia 3 din A la linia 5 şi algoritmul ia sfârşit căci nu mai pot fi generate

elemente egale cu 1. În final matricea D se prezintă astfel:

A

x 1

x 2

x 3

x 4

x 5

x

1

0

0

1

1

0

x

2

1

0

1

1

1

x

3

0

0

0

0

0

x

4

0

0

1

0

0

x

5

1

0

1

1

0

Notăm cu p(x i ) puterea de atingere a vârfului x i prin care înţelegem

numărul de vârfuri ce pot fi atinse de drumurile ce pornesc din x i , adică

numărul elementelor egale cu 1 de pe linia i din D. În exemplul nostru p(x 1 )

= 2, p(x 2 ) = 4, p(x 3 ) = 0, p(x 4 ) = 1, p(x 5 ) = 3.

Observaţia 1: Matricea D pune în evidenţă existenţa circuitelor în

graful considerat. Astfel dacă d ii = 1, graful are un drum ce pleacă din x i şi

revine în x i , deci un circuit. Dacă toate elementele diagonalei principale din

D sunt egale cu 0, graful nu are circuite. În exemplul de mai sus, graful nu

are circuite.

Observaţia 2: Dacă în matricea D a unui graf finit cu n vârfuri fără

circuite ordonăm liniile şi coloanele descrescător după puterile de atingere

ale vârfurilor obţinem o nouă matrice D’ = (d’ ij ), 1 i, j n, cu toate

elementele egale cu 1 deasupra diagonalei principale. Într-adevăr, notând,

x’ 1 ,

, x’ n ordinea liniilor (coloanelor) în D’ şi considerând d’ ij = 1, i < j,

rezultă că există cel puţin un drum de la x’ i la x’ j , deci vârfurile atinse de x’ j

vor fi atinse şi de x’ i , adică p(x’ i ) > p(x’ j ) fapt ce atrage aşezarea liniei i

înaintea liniei j, deci d’ ij = 1 se va găsi deasupra diagonalei principale în D’.

Matricea D’ se numeşte matricea triangularizată superior a matricei D.

Pentru exemplul nostru, D’ se prezintă astfel:

D’

x 2

x 5

x 1

x 4

x 3

x

2

0

1

1

1

1

x

5

0

0

1

1

1

x

1

0

0

0

1

1

x

4

0

0

0

0

1

x

3

0

0

0

0

0

Observaţia 3: În matricea D’ a unui graf fără circuite, primul

element egal cu 1 de pe fiecare linie corespunde unui arc din graf. Într-

adevăr, presupunând prin absurd că primului element pe linia i din D’,

d’ ij = 1, îi corespunde un drum (x’ i ,

x’ m are puterea de atingere mai mare ca x’ j şi coloana lui x’ m o precede pe

cea a lui x’ j . Deci pe linia x’ i există elementul d’ im = 1 care precede d’ ij = 1,

ceea ce contrazice ipoteza.

x’ j ), cu m i, m j, atunci

,

x’ m ,

,

3. Drumuri hamiltoniene într-un graf

3.1 Cazul grafurilor fără circuite

Teorema 1. (Y.V. Chen). Fie G = (X, U) cu X = x 1 ,

, x n , orientat

şi fără circuite. G conţine un drum hamiltonian dacă şi

numai dacă

n

i = 1

p

(

x

i

)

=

n ( n

1)

2

.

Demonstraţie: Presupunem că în G există drumul hamiltonian

d H = (x

,

x

i

n

), unde (i 1 ,

,

i n ) este o permutare a lui (1,

, n).

i

1

,

Rezultă că x

i atinge toate cele n – 1 vârfuri care îl succed, deci pe
1

atinge n – 2

linia lui x

i

1

din D sunt n – 1 elemente egale cu 1. Vârful x

i

2

vârfuri şi pe linia lui x

i

2

vor fi n – 2 elemente egale cu 1, ş.a.m.d., pentru

fiecare vârf următor al drumului hamiltonian numărul elementelor egale cu

a cărui putere de atingere este

1 scade cu câte o unitate până ajungem la x

i

n

zero. Atunci:

n

i =

1

p

(

x

i

)

=

n

1

k =

p

(

x

i

k

)

=

(

n

1)

+

(

n

2)

+

+ +

1

0

=

n ( n

1)

2

.

n

Reciproc, dacă p ( x

i = 1

i

)

=

n ( n

1)

2

şi matricea triangularizată D’ are

liniile şi coloanele ordonate astfel: x’ 1 ,

, x’ n , din observaţia 2 deducem că

toate cele

n(n

1) elemente egale cu 1 ale lui D’ se găsesc deasupra

2

diagonalei principale unde sunt exact

n(n 1)

2

poziţii. Observaţia 3 ne

permite determinarea drumului hamiltonian scriind succesiunea de arce

corespunzătoare primelor elemente egale cu 1 de pe fiecare linie, adică:

(x’ 1 , x’ 2 ), (x’ 2 , x’ 3 ),

Teorema 2. Dacă într-un graf G orientat şi fără circuite există drum

(x’ n-1 , x’ n ) sau d H : (x’ 1 ,

, x’ n ).

,

hamiltonian, el este unic.

Demonstraţie: Presupunem prin absurd că G are două drumuri

hamiltoniene d

(1)

H

(2)

şi d distincte şi

H

d

d

(1)

H

(2)

H

= (x’ 1 ,

, x’ i ,

,

x’ j ,

,x’ n )

= (x’ 1 ,

, x’ j ,

,

x’ i ,

,x’ n )

Din d

(1)

H

rezultă că există un drum de la x’ i la x’ j , iar din d

(2)

H

rezultă

că există un drum de la x’ j la x’ i , adică un circuit, ceea ce contrazice ipoteza. Presupunerea făcută este falsă, deci drumul hamiltonian în G este unic. Teoremele 1 şi 2 ne permit să dăm un Algoritm pentru determinarea drumului hamiltonian într-un graf orientat, finit (cu n vârfuri) şi fără circuite

1. Determinăm matricea A (a arcelor);

2. Determinăm matricea D (a drumurilor);

3. a) Dacă există d ii = 1, graful are circuite, teoremele 1 şi 2 nu se aplică, nu ştim dacă există drum hamiltonian; b) Dacă toate elementele diagonalei principale din D sunt nule, graful nu are circuite, se aplică teoremele 1 şi 2.

n

4. Calculăm p(x i ), i = 1, n şi apoi

i

=

1

p

(

x

i ) . Apare unul din cazurile:

a)

b)

n

=

1

i

p

(

x

i

)

(

n n

1)

2

drum hamiltonian;

1)

n

i

=

1

p

(

x

)

(

n n

i

=

2

; din teorema 1 rezultă că în

G nu există

, atunci din teorema 1 rezultă că există drum

hamiltonian în G, iar din teorema 2 rezultă că acesta este unic.

5. Determinăm drumul hamiltonian scriind vârfurile grafului în

ordinea descrescătoare a puterii lor de atingere. Exemplu Pentru graful precedent am văzut că era fără circuite şi p(x 1 ) = 2,

p(x 2 ) = 4, p(x 3 ) = 0, p(x 4 ) = 1, p(x 5 ) = 3. Deci

5

p(x ) = 10. Dar n = 5 şi

i

i

=

1

n(n 1) =

5×

4 = 10, deci teorema 1 spune că există drum hamiltonian şi

2 2

acesta este d H = (x 2 , x 5 , x 1 , x 4 , x 3 ) şi este unic.

3.2 Cazul grafurilor cu circuite

Prezentăm în cele ce urmează un algoritm, datorat lui Kaufmann, pentru determinarea drumurilor hamiltoniene într-un graf cu circuite. Fie G un graf cu n vârfuri, cu circuite. Determinăm pentru G

,

matricele latine D (k) , 1 k n – 1, matrici ale căror elemente d

(k)

ij

1 i,j n, reprezintă drumurile elementare de la x i la x j , formate din k arce. Deci ultima matrice D (n-1) va conţine toate drumurile hamiltoniene din G.

Matricea D (1) = (d

(1)

ij

), 1 i,j n, se construieşte astfel:

x i x j dacă există arcul (x i , x j )

0 , dacă nu există arcul (x i , x j ).

(1)

d ij

=

Din D (1) formăm matricea D (1) = (d

(1)

ij

(1)

d ij

=

x j dacă există arcul (x i , x j )

0 , dacă nu există arcul (x i , x j ).

),1 i,j n, cu

Deci matricea D (1) se obţine din D (1) prin ştergerea primei litere a

secvenţei x i x j din orice căsuţă (i, j) şi ea conţine vârfurile ce pot fi atinse prin arce de la orice vârf al grafului.

, D (n-1) se construiesc prin operaţia „L”

Următoarele matrici D (2) , (produsul latin), astfel:

D (k) = D (k-1) L D (1) , k = 2,

, n - 1

i x x j dacă toate aceste vârfuri sunt
1

distincte (se vor lua liniile din D (k-1) cu coloanele din D (1) , ca la produsul

matricelor) sau este 0, dacă nu apar k + 1 vârfuri distincte sau se obţine zero

şi elementul d din D (k) este: x i x

(k)

ij

i

k1

pentru toate elementele care participă la înmulţire.

Exemplu

Să se determine drumurile hamiltoniene în graful:

Rezolvare

x 1

x 2

x 5 x 4
x 5
x 4

x 3

Observăm că graful are circuite (altfel am fi determinat matricea D),

de exemplu d = (x 3 , x 5 , x 1 , x 2 ).

Determinăm pe rând matricele D (1) , D (1) , D (2) , D (3) şi D (4) .

D

(1)

x 1

x 2

x 3

x 4

x 5

x

1

0

x 1 x 2

0

0

0

x

2

0

0

x 2 x 3

x 2 x 4

0

 

x

3

0

0

0

x 3 x 4

x 3 x 5

x

4

0

0

0

0

0

x

5

x 5 x 1

0

0

x 5 x 4

0

 

D (1)

x 1

x 2

x 3

x 4

x 5

x

1

0

x

2

0

0

0

x

2

0

0

x

3

x

4

0

x

3

0

0

0

x

4

x

5

x

4

0

0

0

0

0

x

5

x 1

0

0

x

4

0

D (2) = D (1) L D (1)

 

x 1

x 2

x 3

x 4

x 5

x

1

 

0

0

x

1 x 2 x 3

x

1 x 2 x

4

0

x

2

0

0

0

x

2 x 3 x

4

x

2 x 3 x 5

x

3

 

x

3 x 5 x 1

0

0

x

3 x 5 x

4

0

x

4

 

0

0

0

0

0

x

5

0

x

5 x 1 x 2

0

0

0

D (3) = D (2) L D (1)

 

x 1

x 2

x 3

x 4

x 5

x

1

 

0

0

0

x

1 x 2 x 3 x

4

x

1 x 2 x 3 x 5

x

2

x

2 x 3 x 5 x 1

 

0

0

0

0

x

3

 

0

x

3 x 5 x 1 x 2

 

0

0

0

x

4

0

0

0

0

0

x

5

0

0

x

5 x 1 x 2 x 3

x

5 x 1 x 2 x

4

 

0

D (4) = D (3) L D (1)

 

x 1

x 2

 

x 3

 

x 4

x 5

x

1

 

0

0

0

x

1 x 2 x 3 x 5 x

4

0

x

2

0

0

0

0

0

x

3

0

0

0

x

3 x 5 x 1 x 2 x

4

0

x

4

0

0

0

0

0

x

5

0

0

0

x

5 x 1 x 2 x 3 x

4

0

Din D (4) citim că există 3 drumuri hamiltoniene şi anume:

d

(1)

H

= (x 1 , x 2 , x 3 , x 5 , x 4 )

d

d

(2)

H

(3)

H

= (x 3 , x 5 , x 1 , x 2 , x 4 )

= (x 5 , x 1 , x 2 , x 3 , x 4 )

de

pe linia 3 coloana 4 din matricea D (2) . S-a considerat linia 3 din D (1) şi

(k) , s-a obţinut singura

coloana 4 din

Să explicăm modul în care, de exemplu, s-a găsit elementul d

(2)

34

D (1) şi aplicând definiţia lui d

ij

succesiune, diferită de zero, (x 3 , x 5 , x 4 ). Dacă s-ar mai fi găsit şi o altă

succesiune în căsuţa (3, 4) din D (2) , se scriau una sub alta ambele succesiuni

şi în calculele următoare se ţinea seama de fiecare în parte.

4. Drum de valoare optimă (rută optimă) într-un graf

Fie G = (X, U) un graf orientat, cu X = x 1 ,

, x n şi U mulţimea

arcelor sale. Graful G se va numi graf valuat dacă există o funcţie v: U ,

astfel încât oricare ar fi u = (x i , x j ) U, v(u) = v(x i , x j ) 0, i, j = 1, n .

Numărul v(u) se va numi valoarea arcului u. Într-o problemă economică, v(u) poate să însemne costul sau durata transportului de la x i la x j , distanţa dintre vârfurile x i şi x j etc. Dacă d este un drum în graful valuat G, suma valorilor arcelor sale se va numi valoarea drumului d. În cele ce urmează vom dori să determinăm valoarea minimă a drumurilor de la orice vârf al grafului G la un vârf fixat x n . Fie matricea V = (v ij ), 1 i, j n, cu

0 , i = j

v ij = v(x i , x j ), dacă există arcul (x i , x j )

, dacă nu există arcul (x i , x j ).

Notăm prin

m

(k)

in

valoarea minimă a drumurilor dintre x i şi x n ,

valoarea minimă a

drumuri formate din cel mult k arce, iar prin

drumurilor de la x i la x n , indiferent de numărul arcelor. Propoziţia 3:

m in

În graful G, cu n vârfuri, orientat şi valuat, este adevărată relaţia

m

(k +1)

in

=

min (v ij +

1jn

m

(k)

jn

), i n, k 1.

Justificarea acestei propoziţii e dată de principiul de optimalitate al lui Bellman, care pentru problema noastră se enunţă astfel: drumul optim într-un graf este format din subdrumuri optime. Şi cum orice drum de la x i la

x n format din cel mult k + 1 arce trebuie să fie format dintr-un arc (x i , x j ), ij

-

valoarea minimă a drumurilor de la x i la x n formate din cel mult k + 1 arce

şi un drum de la x j la x n format din cel mult k arce, urmează că

m

(k +1)

in

va fi dată de 1 min jn (v ij +

m

(k)

jn

).

Propoziţia 4:

Dacă pentru graful G din propoziţia 1 există k astfel încât

m

m

(k)

in

(k)

in

=

=

m

m

(k +1)

in

in

.

, 1 i n, atunci:

Demonstraţie: Formulată altfel, propoziţia 4 şi anume: există k

astfel încât

m

(k)

in

=

m

(k +1)

in

, atunci:

m

(k)

in

=

m

(k

in

+

s)

, oricare ar fi s , putem

aplica inducţia matematică după s *, astfel: pentru s = 1, proprietatea se

verifică cu relaţia din ipoteză. Presupunem adevărată proprietatea pentru s

oarecare şi demonstrăm că e adevărată şi pentru s + 1.

Dar din propoziţia 3, avem:

m

(k

in

avem că

m

m

(k

in

+s+1)

(k

jn

+

s)

+s+1)

=

=

=

min (v ij +

j

m

m jn , rezultă

(k)

min (v ij +

j

(k)

m jn

(k

jn

+

s)

) =

) şi cum în presupunerea de inducţie

m

(k +1)

in

=

m

(k)

in

tot din propoziţia 3 şi ipoteza propoziţiei 4. Pe aceste două propoziţii se bazează algoritmul Bellman – Kalaba de determinare a drumurilor de valoare minimă de la orice vârf al grafului x i la vârful x n fixat. Etapele algoritmului sunt:

1. Se construieşte matricea V = (v ij ), 1 i,j n, corespunzătoare grafului dat.

2. Se ataşează noi linii matricei V notate succesiv prin

(1)

(2)

m

cel mult 1, 2, fixat, astfel:

m

in

,

in

,

care dau valorile minime ale drumurilor formate din arce de la orice vârf x i (cap de coloană) la x n

a)

linia

drumurilor de la x i , i = 1, n , din G la x n , drumuri formate din

ale

m

(1)

in

ale

cărei

elemente

sunt

valorile

minime

cel mult un arc, reprezintă valorile arcelor (x i , x n ), i = 1, n ,

deci această linie va fi transpusa coloanei lui x n din V;

b) presupunem completată linia

(k)

m in

şi trecem la determinarea

elementelor liniei

calculează cu relaţia din propoziţia 3:

m

(k +1)

in

. Orice element de pe această linie se

m

(k +1)

in

=

min (v ij +

1jn

(k)

m jn

), i = 1, n , ceea ce înseamnă că vom

aduna respectiv elementele liniei lui x i din V cu cele ale liniei

m

(k)

in

şi cea mai mică valoare va fi

m

(k +1)

in

;

c) ataşarea de noi linii continuă până când se obţin două linii

consecutive identice, când în baza propoziţiei 4 algoritmul ia sfârşit şi ultima linie conţine tocmai valorile minime ale drumurilor de la fiecare vârf cap de coloan