Sunteți pe pagina 1din 10

Observaie.

Problema determinrii drumului de lungime minim poate fi


generalizat. Menionm trei generalizri:
(i). Fiind dat digraful D = (V, A) marcat, n care fiecrui arc aA i asociem un
numr l(a) > 0 pe care-l numim lungimea lui a s se determine un drum d, care
porne!te din "#rful v !i a$unge n "#rful w, astfel nc#t lungimea total a drumului:

=
d a
a l d l ) ( ) (
s fie minim.
(ii). %ac fiecrui drum d = (v
1
, v
2,
,v
m
) i punem n coresponden o "aloare
numeric f(d), se pune problema s se determine drumul d pentru care numrul f(d) s
fie c#t mai mic posibil.
(iii). Fiind dat un digraf D, fiecrui subdigraf parial D
1
i corespunde un numr
h(D
1
); s se determine un digraf parial astfel ca h(D
1
) s fie minim.
Prezentm n continuare trei algoritmi reprezentati"i pentru rezol"area
problemei determinrii drumului de lungime minim de tipul (i) !i anume: algoritmul
lui %antzig, algoritmul lui Ford !i algoritmul &ellman-'alaba.
8.2. Algoritmul lui Dantzig
Fie digraful D = (V, A), V = {v
1
, v
2
,,v
n
}. (e propunem s calculm lungimile
minime ale drumurilor de la "#rful v
1
la toate celelalte "#rfuri v
2
, v
3
,,v
n
.
)ntroducem funcia distan minim de la "#rful v
1
la celelalte "#rfuri, notat cu
, deci:
! V
"
,
unde (v
#
) reprezint lungimea minim a drumurilor de la "#rful v
1
la "#rful v
#
al
digrafului (# = 1, 2, ,n). (otm prin V
$
o submulime a lui V format din $ "#rfuri,
V
$
V, iar funcia l ! A
"
(funcia distan), care asociaz fiecrui arc lungimea sa.
*lgoritmul const n urmtoarele:
Pasul 1. +e noteaz V
1
= {v
1
} !i se define!te (v
1
) = 0.
Pasul 2. %ac s-a determinat mulimea
, ,..., , -
. / $
i i i $
v v v V =
, pentru fiecare "#rf
$ i
V v
#

se determin "#rful notat $ i
V w
#

, care este cel mai apropiat de
#
i
v
, adic
lungimea arcului
) , (
# #
i i
w v
este minim n mulimea lungimilor arcelor care pornesc din
#
i
v
ctre "#rfuri care nu aparin lui V
$
.
%ac e0ist mai multe "#rfuri care sunt unite prin arce de lungime minim ce
pornesc din
#
i
v
, se "a alege unul oarecare dintre ele.
+e determin acel "#rf
%
i
w
cu proprietatea:
.12
), , ( ) ( - min ) , ( ) (
/
& & & % % %
i i i
$ &
i i i
w v l v w v l v + = +

!i se define!te
, -
/
%
i $ $
w V V =
+
,
definindu-se funcia n
%
i
w
prin:
) , ( ) ( ) (
% % % %
i i i i
w v l v w + =
.
+e repet pasul 2 pentru $ = 1, 2, , n'1.
3orectitudinea algoritmului se demonstreaz prin inducie dup $. 4a sf#r!itul
aplicrii algoritmului se obine "aloarea minim a funciei distan pentru toate "#rfurile
v
2
, v
3
,,v
n
, adic distanele minime de la "#rful v
1
la celelalte "#rfuri ale digrafului.
%ac funcia nu poate fi definit ntr-un "#rf v
#
, nseamn c nu e0ist nici un
drum de la v
1
la v
#
!i punem prin definiie (v
#
) = .
5emarcm faptul c acest algoritm construie!te prin recurent, n mod
sistematic, distanele minime de la v
1
la celelalte "#rfuri ale digrafului.
Observaie. *cest algoritm se poate aplica !i grafurilor.
8.3. Algoritmul lui Ford
Fie digraful D = (V, A), V = {v
1
, v
2
,,v
n
}, marcat, deci este definit funcia l
! A
"
, l(a) 0 reprezent#nd lungimea arcului aA. (e propunem s determinm
drumul (drumurile) d = (v
1
,,v
n
) pentru care lungimea:

=
d a
a l d l ) ( ) (
este minim.
*lgoritmul lui Ford const n urmtoarele:
Pasul 1. +e marc6eaz fiecare "#rf v
i
al digrafului D = (V, A) cu o "aloare
i
dup regula:
1
= 0 pentru "#rful iniial v
1
, iar "#rfurile v
i
(i = 2, 3, , n) se marc6eaz
cu
i
= (i = 2, 3, , n).
Pasul 2. Pentru fiecare arc (v
i
, v
&
)A se consider "alorile
&
'
i
!i d
i&
=l(v
i
, v
&
).
%ac
&
'
i
d
i&
, atunci "aloarea lui
&
se pstreaz nesc6imbat, iar dac
&
'
i
7 d
i&
,
atunci
&
se nlocuie!te cu
i
" d
i&
(
&
.
+e continu operaia aceasta p#n c#nd nici un arc nu mai permite mic!orarea
"alorii
$
pentru nici un "#rf. 8n aceast situaie "aloarea
n
asociat "#rfului v
n
este
"aloarea drumului minim.
8ntr-ade"r, fie
/
#
v
ultimul "#rf folosit pentru reducerea "alorii lui
n
, cunoscut
fiind faptul c pe parcursul algoritmului "aloarea lui
n
descre!te, deci:
) , (
/ /
n # # n
v v l =
.
.9:
Fie
.
#
v
astfel ca:
) , (
/ . . /
# # # #
v v l =
!.a.m.d..
+uccesiunea
,... , ,
. /
# # n

este strict descresctoare, iar la un moment dat a"em
/
/
v v
)
#
=
+
. *tunci
n
este lungimea celui mai scurt drum de la v
1
la v
n
, drumul fiind
) , ,..., , , (
/ /
/ n # # #
v v v v v d
) )
=
!i lungimea drumului d este:
) , ( ... ) , ( ) , ( ) (
/ /
/ n # # # # n
v v l v v l v v l d l
) ) )
+ + + = =

.
Corectitudinea algoritmului. ;aloarea
n
este "aloarea minim a lungimilor
drumurilor de la v
1
la v
n
. 8ntr-ade"r, fie d* un drum oarecare de la v
1
la v
n
, de lungime
l(d*),
) ,..., , , ( <
/ . /
/ n ) ) )
v v v v v d
%
= =
+
. *tunci a"em:
) , (
/ /
/ / ) )
v v l
,
) , (
. / / .
) ) ) )
v v l
,
========.
) , (
n ) ) n
v v l
% %

,
deci
) ,..., ( < ) ( ), < (
/ n n
v v d d l =
.
Observaie. *lgoritmul lui Ford se poate folosi !i pentru determinarea drumului
(drumurilor) de "aloare ma0im ntr-un digraf, dar numai n cazul n care digraful este
fr circuite. 8n acest caz fiecrui "#rf i se asociaz "aloarea
i
> : (i = 1, 2, , n) !i se
compar diferenele
&
'
i
cu "alorile d
i&
= l(v
i
, v
&
) pentru fiecare arc. %ac
&
'
i
( d
i&
atunci
&
se nlocuie!te cu & i& i &
d > + =
?
, iar dac
&
'
i
d
i&
, atunci
&
se las
nesc6imbat. @peraia se continu p#n c#nd nici un arc nu mai permite ma$orarea
"alorii
$
pentru nici un "#rf. ;aloarea ata!at "#rfului v
n
reprezint "aloarea drumului
ma0im.
8.. Algoritmul !ellman"#alaba
%at fiind digraful D = (V, A), V = {v
1
, v
2
,, v
n
}, marcat, pentru care este definit
funcia l ! A
"
, l(v
i
, v
&
) reprezent#nd "aloarea (lungimea) arcului (v
i
, v
&
), ne propunem
s determinm drumul (drumurile) de lungime minim dintre "#rfurile v
i
!i v
n
, (i = 1, 2,
, n).
*lgoritmul const n urmtoarele:
Pasul 1. +e determin matricea $M
n
(), numit matricea "alorilor, n care
elementele sunt:

=


=
& i da+,
& i A v v da+,
& i A v v da+, v v l
m
& i
& i & i
i&
, :
, ) , ( ,
, ) , ( , ) , (

Pasul 2. +e calculeaz "ectorul ) ,..., , (
) : ( ) : (
.
) : (
/
) : (
n
m m m m = , unde:

=
n i da+,
n i da+, m
m
in
i
, :
,
) : (
.
Pasul 3. +e calculeaz "ectorul ) ,..., , (
) / ( ) / (
.
) / (
/
) / (
n
m m m m = , unde:
.9/

=
+
=

n i da+,
n i da+, m m
m
i& &
i &
i
, :
,, - min
) : (
) / (
.
================
Pasul %&2. +e calculeaz "ectorul ) ,..., , (
) ( ) (
.
) (
/
) ( )
n
) ) )
m m m m = , unde:

=
+
=

n i da+,
n i da+, m m
m
i&
)
&
i &
)
i
, :
,, - min
) / (
) (
.
Pasul %&3. *lgoritmul se nc6eie atunci c#nd n i m m
)
i
)
i
,..., . , / ,
) / ( ) (
= =
+
. 8n
acest caz "alorile
) ()
i
m reprezint lungimea minim a drumului (drumurilor) de la v
i
la
v
n
.
%rumul (drumurile) de lungime minim de la v
i
la v
n
rezult din !irul de
egaliti:
,
/ /
) ( ) (
i&
)
&
)
i
m m m + =
,
. / . /
) ( ) (
& &
)
&
)
&
m m m + =
=======.
n &
)
n
)
&
m m m
#
+ =
) ( ) (
,
de unde rezult:
n & & & i&
)
i
m m m m

+ + + = ...
. / /
) (
,
adic unul din drumurile cutate, de la v
i
la v
n
este:
) , ,..., , , (
. /
n & & & i
v v v v v d
#
=
.
3orectitudinea algoritmului este asigurat de principiul optimalitii al lui
&ellman pentru procese dinamice discrete.
Observaie. 8n cazul cutrii drumului (drumurilor) de lungime ma0im,
algoritmul se modific n sensul c se ia - n loc de A, iar "alorile
) ()
i
m se determin
sc6imb#nd min cu ma-.
8.'. ()emplu
+e d digraful urmtor care poate reprezenta sistemul de comunicare a datelor cu
pri"ire la necesarul de materiale dintr-un sector producti".
+e cere s se afle ruta optimal care stabile!te timpul minim de transmitere a
informaiei dintre "#rfurile v
1
!i v
.
utiliz#nd:
a) algoritmul lui %antzig
b) algoritmul lui Ford
c) algoritmul &ellman-'alaba.
.9.
Figura B2.
*ezolvare+
a) V
1
= {v
1
}, (v
1
} = 0;
v
1
V
1
w
1
= v
2
V
1;
V
2
= {v
1
, v
2
}, (v
2
) = (v
1
) "l(v
1
, v
2
) = 1;
v
1
V
2
w
1
= v
3
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 2;
v
2
V
2
w
2
= v
3
, (w
2
) = (v
2
) " l(v
2
, w
2
) = /;
V
3
= {v
1
, v
2
, v
3
}, (v
3
) = 2;
v
1
V
3
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
3
w
2
= v
1
, (w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
v
3
V
3
w
3
= v
2
, (w
3
) = (v
3
) " l(v
3
, w
3
) = /;
V
/
= {v
1
, v
2
, v
3
, v
2
}, (v
2
) = /;
v
1
V
/
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
/
w
2
= v
1
, (w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
v
3
V
/
w
3
= v
/
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 1;
v
2
V
/
w
2
= v
/
sau v
1
(w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
C0aminm cazul w
2
= v
/
deci:
V
3
= {v
1
, v
2
, v
3
, v
/
, v
2
}, (v
/
) = 1;
v
1
V
3
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
3
w
2
= v
1
, (w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
v
3
V
3
w
3
= v
.
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 0;
v
/
V
3
w
/
= v
3
sau v
.

(w
/
) = (v
/
) " l(v
/
, w
/
) = .;
v
2
V
3
w
2
= v
1
, (w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
V
2
= {v
1
, v
2
, v
3
, v
/
, v
2,
v
1
}, (v
1
) = 1;
v
1
V
2
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
2
w
2
nu e0ist
v
3
V
2
w
3
= v
.
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 0;
v
/
V
2
w
/
= v
3
sau
(w
/
) = (v
/
) " l(v
/
, w
/
) = .;
v
2
V
2
w
2
nu e0ist
v
1
V
2
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
.91
C0aminm cazul w
/
= v
3
!
V
1
= {v
1
, v
2
, v
3
, v
/
, v
3
, v
2,
v
1
}, (v
3
) = .;
v
1
V
1
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
1
w
2
nu e0ist
v
3
V
1
w
3
= v
.
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 0;
v
/
V
1
w
/
= v
.
, (w
/
) = (v
/
) " l(v
/
, w
/
) = .;
v
3
V
1
w
3
nu e0ist
v
2
V
1
w
2
nu e0ist
v
1
V
1
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
V
.
= {v
1
, v
2
, v
3
, v
/
, v
3
, v
2,
v
1
, v
.
}, (v
.
) = .;
C0aminm cazul w
/
= v
.

V
1
= {v
1
, v
2
, v
3
, v
/
, v
2,
v
1
, v
.
}, (v
.
) = .;
v
1
V
1
w
1
nu e0ist
v
2
V
1
w
2
nu e0ist
v
3
V
1
w
3
nu e0ist
v
/
V
1
w
/
= v
3
, (w
/
) = (v
/
) " l(v
/
, w
/
) = .;
v
2
V
1
w
2
nu e0ist
v
1
V
1
w
1
nu e0ist
v
.
V
1
w
.
nu e0ist
V
.
= {v
1
, v
2
, v
3
, v
/
, v
3
, v
2,
v
1
, v
.
}, (v
3
) = ..
C0aminm cazul w
2
= v
1
!
V
3
= {v
1
, v
2
, v
3
, v
2
, v
1
}, (v
1
) = 1;
v
1
V
3
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
3
w
2
nu e0ist
v
3
V
3
w
3
= v
/
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 1;
v
2
V
3
w
2
= v
/
, (w
2
) = (v
2
) " l(v
2
, w
2
) = 1;
v
1
V
3
w
2
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
V
2
= {v
1
, v
2
, v
3
, v
/
, v
2,
v
1
}, (v
/
) = 1;
v
1
V
2
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
v
2
V
2
w
2
nu e0ist
v
3
V
2
w
3
= v
.
, (w
3
) = (v
3
) " l(v
3
, w
3
) = 0;
v
/
V
2
w
/
= v
3
sau v
.

(w
/
) = (v
/
) " l(v
/
, w
/
) = .;
v
2
V
2
w
2
nu e0ist
v
1
V
2
w
1
= v
.
, (w
1
) = (v
1
) " l(v
1
, w
1
) = 0;
C0aminm cazul w
/
= v
3
!
V
1
= {v
1
, v
2
, v
3
, v
/
, v
3
v
2,
v
1
}, (v
3
) = 0;
5ezult:
V
.
= {v
1
, v
2
, v
3
, v
/
, v
3
, v
2,
v
1
, v
.
}, (v
.
) = ..
8n sf#r!it se e0amineaz cazul w
/
= v
.
!
V
1
= {v
1
, v
2
, v
3
, v
/
, v
2
, v
1
, v
.
}, (v
.
) = .;
5ezult:
V
.
= {v
1
, v
2
, v
3
, v
/
, v
3
, v
2,
v
1
, v
.
}, (v
3
) = ..
Prin urmare,
(v
1
) =0, (v
2
) =1, (v
3
) =2, (v
/
) =1, (v
3
) =., (v
2
) =/, (v
1
) =1, (v
.
) =..
.99
4)
1
= 0;
2
=
3
= =
.
= ;

2
'
1
= > l(v
1
, v
2
) = 1
2
= 1;

3
'
1
= > l(v
1
, v
3
) = 2
3
= 2;

.
'
1
= > l(v
1
, v
.
) = 0
.
= 0;

3
'
2
= 2 5 1 ( l(v
2
, v
3
) = 3;

1
'
2
= ' 1 > l(v
2
, v
1
) = 2
1
= 1;

/
'
3
= ' 2 > l(v
3
, v
/
) = 3
/
= 1;

2
'
3
= ' 2 > l(v
3
, v
2
) = 2
2
= /;

.
'
3
= 0 5 2 = l(v
3
, v
.
) = 1;

3
'
/
= ' 1 > l(v
/
, v
3
) = 1
3
= .;

1
'
/
= 1 5 1 ( l(v
/
, v
1
) = 2;

.
'
/
= 0 ' 1 > l(v
/
, v
.
) = 1
.
= .;

2
'
3
= / ' . ( l(v
3
, v
2
) = 3;

/
'
2
= 1 ' / ( l(v
2
, v
/
) = 3;

1
'
2
= 1 ' / ( l(v
2
, v
1
) = 3;

.
'
1
= . ' 1 ( l(v
1
, v
.
) = 2.
4ungimea minim a drumurilor de la v
1
la v
.
este
.
> D.
%rumurile rezult din relaiile:

3
'
1
= l(v
1
, v
3
) = 2;

/
'
3
= l(v
3
, v
/
) = 3;

.
'
/
= l(v
/
, v
.
) = 1;
deci:
d
1
= (v
1
, v
3
, v
/
, v
.
); l(d
1
) = 2 " 3 " 1 = .
!i

3
'
1
= l(v
1
, v
3
) = 2;

2
'
3
= l(v
3
, v
2
) = 2;

/
'
2
= l(v
2
, v
/
) = 3;

.
'
/
= l(v
/
, v
.
) = 1;
deci:
d
2
= (v
1
, v
3
, v
2
, v
/
, v
.
); l(d
2
) = 2 " 2 " 3 "1 = ..
c) %eterminm matricea "alorilor care este de tipul . . !i n continuare, pe
linie, trecem componentele "ectorilor
) ()
m , pentru ) = 0, 1, 2, 3.
5egsim acelea!i rezultate ca mai sus:
.9B
v
1
v
2
v
3
v
/
v
3
v
2
v
1
v
.
---------------------------------------------------------------------------
v
1
: / . 2
v
2
: 1 E
v
3
: B . F
v
/
: / . /
v
3
: 1
v
2
1 : 1
v
1
: .
v
.
:
----------------------------------------------------------------------------
m
(0)
2 F / . :
----------------------------------------------------------------------------
m
(1)
2 D E / 9 . :
----------------------------------------------------------------------------
m
(2)
2 D E / F 9 . :
----------------------------------------------------------------------------
m
(3)
2 D E / F 9 . :
---------------------------------------------------------------------------
,. Flu)ul ma)im -n reele de transport
,.1. *eea de transport. Flu). ./ietur/ -n reea
5eelele de transport reprezint unul dintre cele mai importante modele ale
teoriei digrafurilor, a"#nd multiple aplicaii n rezol"area problemelor te6nice,
economice, etc.
De0iniia '1. +e nume!te reea de transport un digraf finit !i fr bucle D=(V,
A) n care fiecrui arc a i se asociaz un numr natural +(a) (numit capacitatea arcului
a) !i n plus:
(i). C0ist un "#rf v
0
V !i numai unul, numit intrarea -n reea, pentru care g
'
(v
0
) = 0
(ii). C0ist un "#rf, 6V !i numai unul, numit ie2irea din reea, pentru care g
"
(6)
= 0.
Fie

v
A
mulimea arcelor incidente spre interior "#rfului v !i
+
v
A
mulimea
arcelor incidente spre e0terior "#rfului v.
De0iniia '1. @ funcie ! A
"
, se nume!te 0lu) pentru reeaua de transport
D = (V, A) dac:
(i)
6 v v v V v a a
v v
A a A a
=

+

, , ) ( , ) ( ) (
:

(ii)
. ) ( ), ( ) ( A a a + a
%in (i) rezult c:
. ) ( ) (
:
6
A a A a
6 v
a a = =

+

(umrul
6
se nume!te 0lu)ul -n v3r0ul 6 sau valoarea 0lu)ului .

.9E
De0iniia '2. Fie 7V, v
0
7, 67 mulimea

7
A a arcelor incidente spre
interior "#rfurilor din 7 se nume!te t/ietur/ -n reea. +e nume!te capacitatea t/ieturii

7
A "aloarea:

=
7
A a
7
a + A + ) ( ) (
.
Observaie. @rice unitate de cantitate de produs care pleac de la v
0
la 6
nt#lne!te cel puin odat un arc al tieturii

7
A deci, oricare ar fi flu0ul !i tietura

7
A are loc inegalitatea ) (

7 6
A + .
.eorema 33. 4Ford"Ful%erson5. 8ntr-o reea de transport dat, "aloarea ma0im
a flu0ului este egal cu capacitatea minim a tieturilor n reea, adic:
) ( min ma0

=
7
A
6
A +
7

.
8ntr-ade"r, dac pentru un flu0
0
!i o tietur 8, a"em:

0
= +(8),
atunci flu0ul
0
are "aloare ma0im !i tietura 8 are capacitate minim deoarece

6
+(8) =
0
, ()
6
!i
+(8) =
0
+(

7
A ), ()

7
A .
,.2. Algoritmul Ford"Ful%erson pentru determinarea unui 0lu) ma)im
3onsiderm o reea de transport !i un flu0 ! A
"
pentru reea. (e propunem
s ma0imizm "aloarea flu0ului n reeaua dat.
Pasul 1. Pornind de la flu0ul se determin un flu0 complet (un flu0 se nume!te
complet, dac orice drum care pleac din v
0
!i a$unge la 6, conine cel puin un arc
saturat un arc a se nume!te saturat dac (a) = +(a)).
%ac flu0ul nu este complet, se poate determina un drum d ale crui arce s fie
nesaturate drumul d se determin n digraful parial al arcelor nesaturate
d = (v
0
,,6).
)ntroducem flu0ul
*
definit astfel:

*
(a) = (a) " 1, dac ad

*
(a) = (a), dac ad.
5emarcm faptul c /
<
+ =
6 6
. *stfel se obine un flu0 complet pornind de la
un flu0 incomplet.
Pasul 2. Fie un flu0 complet printr-un procedeu iterati" "om marca succesi"
toate "#rfurile digrafului n care putem face s par"in o unitate de flu0 suplimentar.
Marcm v
0
cu coeficientul 0.
%ac v
i
este un "#rf marcat, "om marca cu coeficientul "i orice "#rf w nemarcat
astfel ca (v
i
, w)A !i (v
i
, w) ( +(v
i
, w).
%ac v
i
este un "#rf marcat, "om marca cu coeficientul -i orice "#rf w nemarcat
nc astfel ca (w, v
i
)A si (w, v
i
) > 0.
.9F
%ac prin acest procedeu a$ungem s marcm "#rful 6, atunci e0ist un
semidrum = 9v
0
,,6: ale crui "#rfuri sunt distincte !i marcate cu indicele "#rfului
precedent (abstracie fc#nd de semn).
)ntroducem flu0ul
*
definit astfel:
.9D

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