Sunteți pe pagina 1din 16

Cercetari operationale

B
arb
acioru Iuliana Carmen
SEMINARUL 2

Determinarea drumului de valoare optim


a* Retele de transport

Cuprins
2 Determinarea drumului de valoare optim
a
Re
tele de transport
2.1 Algoritmul Bellman- Kalaba . . . . . . . . . . . . . . . . . . . . . .
2.2 Algoritmul Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . .
Index

5
6
9
15

Pentru etapele algoritmului Bellman- Kalaba studiaz


a Cursul 2
Pentru etapele algoritmului Ford-Fulkerson studiaz
a Cursul 3

Determinarea drumului de valoare optim


a* Retele de transport

Seminarul 2

Determinarea drumului de
valoare optim
a
Re
tele de transport

Determinarea drumului de valoare optim


a* Retele de transport

2.1

Algoritmul Bellman- Kalaba


cij =

cij =

8
>
>
< v (xi ; xj )
1
>
>
: 0

daca (xi ; xj ) 2 U

daca (xi ; xj ) 2
=U

daca

8
< vi = min (vi + cij )

i = 1; n

i6=j

(i 6= j)

(3.6)

(i 6= j)

1,

i=j

j = 1; n

1
(3.7)

: v =0
n

8
< v (k) = min v (k
i
i
i6=j

1)

+ cij

i = 1; n

1, j = 1; n , k = 1; 2; :::

: v (k) = 0
n

(3.8)

Observa
tia 2.1.1 Pentru aplicarea algoritmului Bellman- Kalaba n vederea determinarii drumului de valoare maxima se introduc urmatoarele modicari:
1. La denirea elementelor matricei C, daca (xi ; xj ) 2
= U atunci cij =

1.

2. n relatiile (3.7) si (3.8) se nlocuie


ste operatorul de minim cu operatorul
de maxim.
Exemplul 2.1.2 Sa presupunem ca graful de mai jos pune n evidenta legaturile
tehnologice si economice dintre activitatile necesare n derularea unui proiect complex ce constau n construirea unui obiectiv economic. Fiecare arc al grafului
constituie o activitate a proiectului iar indicatorii vij = v(xi ; xj )
0 ata
sati
acestora reprezinta duratele de executie a activitatilor (xi ; xj ). Se pune problema
determinarii duratei totale de executie a proiectului.

Pentru etapele algoritmului Bellman- Kalaba studiaz


a Cursul 2

Cercet
ari Opera
tionale Seminarul 2
Solu
tie: Durata total
a de executie a proiectului este dat
a de drumul de
valoare maxim
a care uneste vrful initial cu cel nal al grafului. Atasam grafului
matricea C = (cij )1 i;j 6 n care elementele cij sunt denite de relatia (3.6) si
tinnd cont de observatia 2.1.1.

x1

C =

B
x2 B
B
x3 B
B
B
x4 B
B
B
x5 @
x6

x1

x2

x3

x4

14

x5

x6

15

10

11

12

C
1 C
C
18 C
C
C
10 C
C
C
19 A
0

Vom trece matricea atasat


a grafului n tabelul Tabelul 3.3. Acest tabel mai
(k)
contine, pe lng
a elementele matricei C , vectorii linie vi ,
k = 1; 2; 3; ::: calculati pe baza relatiei (3.8) n care se nlocuieste operatorul
(0)
de minim cu cel de maxim (vezi observatia 2.1.1). Se observ
a c
a vectorul vi
s-a obtinut prin transpunerea ultimei coloane a matricii C. Pentru calcularea
(1)
(0)
elementelor vi s-a efectuat suma ntre elementele vectorului vi si elementele
corespunz
atoare ale rndului i (i = 1; 2; :::; 6) a matricii C pentru i 6= j. Dintre
sumele corespunz
atoare ec
arui rnd s-a ales valoarea maxim
a.
Tabelul 3.3
x1

x2

x3

x4

x5

x1

14

15

10

x2

11

18

x3
x4
x5
x6
(0)
vi
(1)
vi
(2)
vi
(3)
vi

12

1
1

1
1

1
1

x6
1
1

10

19

18

10

19

32

23

22

10

19

36

23

22

10

19

36

23

22

10

19

(Tabelul 3.3)

Determinarea drumului de valoare optim


a* Retele de transport
Spre exemplu:
(1)

v1

(1)

v2

= max f 1 + 0; 1 + 5; 18 + 14; 10 + 15; 19 + 10; 0

1g = 32

= max f 1

1g = 23; etc:

1; 1 + 0; 18

1; 10 + 11; 19 + 4; 0

(2)

(1)

Pentru obtinerea lui vi se nsumeaz


a elementele vectorului vi cu elementele
corespunz
atoare ale rndului i (i = 1; 2; :::; 6) a matricei C, retinndu-se pentru
ecare rnd valoarea maxim
a. Spre exemplu:
(2)

v1

(2)
v2

= max f32 + 0; 23 + 5; 22 + 14; 10 + 15; 19 + 10; 0

1g = 36

= max f32

1g = 23; etc:

(3)

1; 23 + 0; 22

1; 10 + 11; 19 + 4; 0

(2)

Cum vi = vi
rezult
a c
a ne oprim, obtinndu-se solutia optim
a. Valoarea
(3)
maximal
a a drumului de la x1 la x6 este v1 = 36. Determinarea vrfurilor prin
care trece drumul se face astfel:
(3)

v1

(2)

= max vj + c1j
j6=1
n
o
(2)
(2)
(2)
(2)
(2)
= max v2 + c12 ; v3 + c13 ; v4 + c14 ; v5 + c15 ; v6 + c16
= max f23 + 5; 22 + 14; 10 + 15; 19 + 10; 0

1g = 36:

Deci:
(3)

v1

(3)

v3

(3)

v4

(2)

(2)

x3

(2)

(2)

x4

(2)

(2)

x6

= max vj + c1j = v3 + c13 = 36


j6=1

= max vj + c3j = v4 + c34 = 22


j6=1

= max vj + c4j = v6 + c46 = 10


j6=1

Drumul de valoare optim


a este

= (x1 ; x3 ; x4 ; x6 ).

Cercet
ari Opera
tionale Seminarul 2

2.2

Algoritmul Ford-Fulkerson

Exemplul 2.2.1 Fie problema de transport ilustrata n gura 4.2, cu capacitati


limitate (primele cifre pe arce) dar si cu costuri unitare de transport (cifra de
pe arce din paranteza). Sa se stabileasca un plan de transport de la a la b astfel
nct cantitatea transportata sa e maxima (x1 poseda un disponibil sucient
pentru acoperirea transportului necesar n retea).

Figura 4.2

Solu
tie: Introducem n retea urm
atorul ux:

x3

'(a; x1 ) = 8

'(a; x2 ) = 6
(
'(x3 ; x4 ) = 1
'(x3 ; x5 ) = 2

x1

'(x1 ; x3 ) = 5
'(x1 ; x4 ) = 4

x4 f'(x4 ; b) = 4

x6 f'(x6 ; b) = 2

x2

x3

'(x2 ; x3 ) = 6

8 '(x2 ; x6 ) = 2
>
>
< '(x5 ; x4 ) = 1

'(x5 ; x6 ) = 6
>
>
: '(x ; b) = 4
5

Compar
am valorile uxului cu capacit
atile de pe ecare arc in parte, pe un drum
Pentru etapele algoritmului Ford-Fulkerson studiaz
a Cursul 3

Determinarea drumului de valoare optim


a* Retele de transport
care uneste a cu b.
'(a; x1 ) = 8
c = 10
'(x1 ; x4 ) = 4
c=5
'(x4 ; b) = 4
c=6

' < c =) (a; x1 ) nesaturat si marc


am x1 cu + a
' < c =) (x1 ; x4 ) nesaturat si marc
am x4 cu + x1
' < c =) (x4 ; b) nesaturat si marc
am b cu + x4

Deci am g
asit lantul
l1 = fa; x1 ; x4 ; bg
prin care s-a marcat iesirea b; deci uxul existent nu este maxim. Avem:
l1+ = f(xi ; xj ) 2 l1 j xj are eticheta xi g = f(a; x1 ); (x1 ; x4 ); (x4 ; b)g
= f(xj ; xi ) 2 l1 j xi are eticheta

l1

"1 = minu2l+ fc(u)


1

"2 nu avem

xj g = ?

'(u)g = min f10

8; 5

4; 6

4g = 1

Lu
am
" = min f"1 ; "2 g = "1 = 1
M
arim uxul cu o unitate pe arcele lui l1+ si-l micsor
am cu o unitate pe arcele lui
l1 (nu e cazul). Noul ux va :
a

x3

'(a; x1 ) = 9

'(a; x2 ) = 6
(
'(x3 ; x4 ) = 1
'(x3 ; x5 ) = 2

x1

'(x1 ; x3 ) = 5
'(x1 ; x4 ) = 5

x4 f'(x4 ; b) = 5

x6 f'(x6 ; b) = 2

x2

x3

'(x2 ; x3 ) = 6

8 '(x2 ; x6 ) = 2
>
>
< '(x5 ; x4 ) = 1

'(x5 ; x6 ) = 6
>
>
: '(x ; b) = 4
5

Deci pe lantul l1 = fa; x1 ; x4 ; bg nu se mai poate marca iesirea b;ntruct s-a


10

Cercet
ari Opera
tionale Seminarul 2
saturat arcul (x1 ; x4 ):

C
aut
am un alt lant plecnd din x1 :
'(a; x1 ) = 9
c = 10
'(x1 ; x3 ) = 5
c=7
'(x3 ; x4 ) = 1
c=2
'(x4 ; b) = 5
c=6

' < c =) (a; x1 ) nesaturat si marc


am x1 cu + a
' < c =) (x1 ; x3 ) nesaturat si marc
am x3 cu + x1
' < c =) (x3 ; x4 ) nesaturat si marc
am x4 cu + x3
' < c =) (x4 ; b) nesaturat si marc
am b cu + x4

ntruct am g
asit lantul:
l2 = fa; x1 ; x3 ; x4 ; bg
prin care s-a putut marca iesirea b; uxul existent nu este maxim. Avem:
"1 = minu2l+ fc(u)
2

"2 nu avem

'(u)g = min f10

9; 7

Lu
am
" = min f"1 ; "2 g = "1 = 1
11

5; 2

1; 6

5g = 1

Determinarea drumului de valoare optim


a* Retele de transport
M
arim uxul cu o unitate pe arcele lui l2+ si-l micsor
am cu o unitate pe arcele lui
l2 (nu e cazul). Noul ux va :
(
(
(
'(x2 ; x3 ) = 6
'(x1 ; x3 ) = 5
'(a; x1 ) = 10
x2
a
x1
'(x1 ; x4 ) = 6
'(a; x2 ) = 6
8 '(x2 ; x6 ) = 2
>
(
>
< '(x5 ; x4 ) = 1
'(x3 ; x4 ) = 2
x4 f'(x4 ; b) = 6
x3
x3
'(x5 ; x6 ) = 6
>
'(x3 ; x5 ) = 2
>
: '(x ; b) = 4
5

x6 f'(x6 ; b) = 2

S-au saturat arcele (a; x1 ); (x1 ; x4 ); (x3 ; x4 ); (x4 ; b):

C
aut
am un alt lant plecnd
)
'(a; x2 ) = 6
' <
c=8
)
'(x2 ; x3 ) = 6
' <
c=8
)
'(x3 ; x5 ) = 2
' <
c=3
)
'(x5 ; b) = 4
' <
c=5

din a:
c =) (a; x2 ) nesaturat si marc
am x2 cu + a
c =) (x2 ; x3 ) nesaturat si marc
am x3 cu + x2
c =) (x3 ; x5 ) nesaturat si marc
am x5 cu + x3
c =) (x5 ; b) nesaturat si marc
am b cu + x5

ntruct am g
asit lantul:
l3 = fa; x2 ; x3 ; x5 ; bg
12

Cercet
ari Opera
tionale Seminarul 2
prin care s-a putut marca iesirea b; uxul existent nu este maxim. Avem:
l3+ = f(xi ; xj ) 2 l3 j xj are eticheta xi g = f(a; x2 ); (x2 ; x3 ); (x3 ; x5 ); (x5 ; b)g
l3

= f(xj ; xi ) 2 l3 j xi are eticheta


"1 = minu2l+ fc(u)
3

"2 nu avem

xj g = ?

'(u)g = min f10

9; 8

6; 3

2; 5

4g = 1

Lu
am
" = min f"1 ; "2 g = "1 = 1
am cu o unitate pe arcele lui
M
arim uxul cu o unitate pe arcele lui l3+ si-l micsor
l3 (nu e cazul). Noul ux va :

x3

'(a; x1 ) = 10

'(a; x2 ) = 7
(
'(x3 ; x4 ) = 2
'(x3 ; x5 ) = 3

x1

'(x1 ; x3 ) = 5
'(x1 ; x4 ) = 6

x4 f'(x4 ; b) = 6

x6 f'(x6 ; b) = 2

x2

x3

'(x2 ; x3 ) = 7

8 '(x2 ; x6 ) = 2
>
>
< '(x5 ; x4 ) = 1

'(x5 ; x6 ) = 6
>
>
: '(x ; b) = 5
5

S-au saturat arcele (a; x1 ); (x1 ; x4 ); (x3 ; x4 ); (x3 ; x5 ); (x4 ; b); (x5 ; b):

13

Determinarea drumului de valoare optim


a* Retele de transport
C
aut
am un alt lant plecnd din a:
'(a; x2 ) = 7
c=8
'(x2 ; x6 ) = 2
c=4
'(x6 ; b) = 2
c=5

' < c =) (a; x2 ) nesaturat si marc


am x2 cu + a
' < c =) (x2 ; x6 ) nesaturat si marc
am x6 cu + x2
' < c =) (x6 ; b) nesaturat si marc
am b cu + x6

ntruct am g
asit lantul:
l4 = fa; x2 ; x6 ; bg
prin care s-a putut marca iesirea b; uxul existent nu este maxim. Avem:
l4+ = f(xi ; xj ) 2 l4 j xj are eticheta xi g = f(a; x2 ); (x2 ; x6 ); (x6 ; b)g
= f(xj ; xi ) 2 l4 j xi are eticheta

l4

"1 = minu2l+ fc(u)

xj g = ?

'(u)g = min f8

"2 nu avem

7; 4

2; 5

2g = 1

Lu
am
" = min f"1 ; "2 g = "1 = 1
M
arim uxul cu o unitate pe arcele lui l3+ si-l micsor
am cu o unitate pe arcele lui
l3 (nu e cazul). Noul ux va :

x3

'(a; x1 ) = 10

'(a; x2 ) = 8
(
'(x3 ; x4 ) = 2
'(x3 ; x5 ) = 3

x1

'(x1 ; x3 ) = 5
'(x1 ; x4 ) = 6

x4 f'(x4 ; b) = 6

x6 f'(x6 ; b) = 3
14

x2

x3

'(x2 ; x3 ) = 7

8 '(x2 ; x6 ) = 3
>
>
< '(x5 ; x4 ) = 1

'(x5 ; x6 ) = 6
>
>
: '(x ; b) = 5
5

Cercet
ari Opera
tionale Seminarul 2
S-au saturat arcele (a; x1 ); (a; x2 ); (x1 ; x4 ); (x3 ; x4 ); (x3 ; x5 ); (x4 ; b); (x5 ; b):

Algoritmul se termin
a ntruct iesirea retelei nu mai poate marcat
a.

15

Index
Algoritmul
Bellman - Kalaba, 6
Ford - Fulkerson, 9
Retea
de transport, 5

16