Sunteți pe pagina 1din 6

2.

Drumuri n grafuri: lungimea unui drum, optimizri n mulimea


drumurilor, algoritmul lui Roy-Floyd, algoritmii lui Dantzig
Deseori n rezolvarea unor proleme este ne!esar !a ar!elor unui graf s li se aso!ieze
numere reale pozitive !e pot reprezenta lungimea unui drum, timpul ne!esar efe!turii unei
operaii sau !ostul unei a!tiviti.
Fie G"#X,U$ un graf orientat %i
$ , & ' : U l
o fun!ie numit pondere !are aso!iaz
unui ar! u numrul l#u$ numit lungimea arcului. Da!
{ }
n
u u u ,..., ,
2 (

este un drum n graful
G, atun!i numrul
( )

n
k
k
u l l
(
$ #
#($
se nume%te lungimea drumului
.
)e nume%te distan minim dintre dou v*rfuri ale lui G
lungimea minim a drumurilor elementare !are unes! !ele dou v*rfuri. +stfel n graful din fig.
(( e,ist !in!i drumuri !e unes! v*rfurile a %i c: { } $ , # $, , #
(
c b b a ,
{ } $ , # $, , # $, , #
2
c b b e e a ,
{ } $ , # $, , # $, , #
-
c d d e e a
, { } $ , # $, , # $, , # $, , #
.
c d d d d e e a ,
{ } $ , #
/
c a
de lungimi
( ) ( /
(
+ l
, 0
( ) , / ( 2 2
2
+ + l
( ) , 0 2 2 2
-
+ + l
( ) , 1 2 - 2 2
.
+ + + l
( ) . 2
/
l

De!i
2
este singurul drum de lungime minim !e une%te pe a !u c, distana minim dintre fiind
egal !u /.
Desigur ! n !azul unor grafuri av*nd ordin mare este difi!il gsirea tuturor drumurilor
!e unes! dou v*rfuri aritrarea %i alegerea unuia de lungime minim. Din a!est motiv a fost
ne!esar gsirea unor algoritmi !are s simplifi!e rezolvarea prolemei. 3rezentm pentru
n!eput algoritmul lui Roy-Floyd.
Fie graful orientat G"#X,U$ !u
{ }
n
a a a X ,..., ,
2 (

%i
$ , & ' : U l
o fun!ie pondere.
4om nota
0-
( ) ( ) ( )
( ) .
pentru , &
iar , pentru ,
iar , pentru , ,

'

j i
j i U a a
j i U a a a a l
l
j i
j i j i
ij
#2$
5atri!ea ptrat
( )
n j i
ij
l A
,..., 2 , ( ,

se nume%te matricea distanelor directe ale grafului


G. +stfel pentru graful din fig. (( !u v*rfurile !onsiderate n ordinea a
(
" a, a
2
" b, a
-
" c, a
.
" d,
a
/
" e matri!ea distanelor dire!te este
.
& 2 2
& 2
&
( &
2 2 / &

,
_

A
#-$
+lgoritmul Roy-Floyd folose%te matri!ea distanelor dire!te pentru gsirea matricei
distanelor minime dintre v*rfurile grafului G, notat
( )
n j i
ij
l A
,..., 2 , ( ,
6 6

, unde

'


, &
,
$, #
6
l
l
ij
unde este un drum de lungime minim de la a
i
la a
j
, iar i 7 j
da! nu e,ist drumuri de lungime minim de la a
i
la a
j
, iar i 7 j
pentru i " j
#.$
8deea de az a algorimului este de a nlo!ui ar!ul
( )
j i
a a ,
dintr-un drum !u reuniunea
ar!elor
( )
k i
a a ,
%i
( )
j k
a a ,
, da! a!estea e,ist, iar
,.
ij kj ik
l l l < +
9tapele sunt urmtoarele:
a$ 3entru k"( iar
{ } : ; < ,..., 2 , ( , k n j i
,
j i
, se nlo!uie%te elementul ij
l
!u
{ }
kj ik ij
l l l + , min
oin*ndu-se o matri!e
( )
n j i
ij
l A
,..., 2 , ( ,
$ ( # $ ( #

=
$ )e repet pasul a$ pentru k"2,-,>,n, !u matri!ea
$ ( # k
A
n lo!ul lui A, matri!ea
$ #n
A
fiind matri!ea !utat .
6
A
Da! se !onsider n operatori T
k
, k"(,2,>,n definii pe mulimea matri!elor ptrate de
ordin n !u elemente de forma #2$ !u valori n a!eea%i mulime astfel n!*t ( ) ,
$ # ( # k k
k
A A T

unde
,
$ & #
A A atun!i ( ) $. # ...
2 (
6
A T T T A
n
5enionm !a s!?imarea ordinii operatorilor T
k
,
k"(,2,>,n nu modifi! rezultatul final.
@n !azul grafului din fig. (( folosind matri!ea distanelor dire!te #-$ oinem su!!esiv

,
& 2 2
& 2
&
( &
2 2 / &
$ ( #

,
_

A

,
& 2 - 2
& 2
&
( &
2 0 / &
$ 2 #

,
_

A

,
& 2 - 2
& 2
&
( &
2 0 / &
$ - #

,
_

A

0.
,
& 2 - 2
& 2
&
( &
2 0 / &
$ . #

,
_

A

.
& 2 - 2
& 2
&
( &
2 . / . &
6 $ / #

,
_




A A
@n s!opul unei simplifi!ri nu este ne!ear s se s!rie toate matri!ele
$ #k
A
!i doar !oloanele !are
se s!?im fa de matri!ea pre!edent, matri!ea
6
A
fiind format din ultima form a fie!rei
!oloane i

. +stfel putem s!rie


1
1
1
1
1
1
1
1
]
1

2 - 2 - & 2 2
& 2 2 & 2
& & &
( & ( ( &
. / . 0 2 2 / &
. - 2 - / . - 2 (

, de unde se
oine
6
A
.
3entru a oine %i v*rfurile prin !are tre! drumurile !e dau distana minim se define%te n plus
matri!ea
( )
n j i
ij
! "
,..., 2 , ( ,

ale !rei elemente sunt mulimi de v*rfuri. Aa n!eput se !onsider



{ }

'

,
,

i
ij
a
!
da! l
ij
B C
da! l
ij #
C .
#/$
@n general ij
!
este mulimea v*rfurilor ve!ine !u a
j
relativ la drumuri de la a
i
la a
j
n final
drumurile fiind !ele de lungime minim. 9tapele transformrii su!!esive ale matri!ei
$ & #
" "
n
( ) n k ! "
n j i
k
ij
k
,..., 2 , ( ,
,..., 2 , ( ,
$ # $ #

, !orespund !elor din algoritmul Roy-Floyd. Regula este


urmtoarea:

'

,
,
,
$ ( #
$ ( # $ ( #
$ ( #
$ #
k
kj
k
kj
k
ij
k
ij
k
ij
!
! !
!
!
da!
da!
da!
$ ( # $ ( # $ ( #
$ ( # $ ( # $ ( #
$ ( # $ ( # $ ( #



+ >
+
+ <
k
kj
k
ik
k
ij
k
kj
k
ik
k
ij
k
kj
k
ik
k
ij
l l l
l l l
l l l
.
#0$
Din modul n !are se !al!uleaz
$ #k
ij
l
dedu!em ! este sufi!ient s se apli!e #0$ doar pentru
elementele pentru !are
<
$ #k
ij
l
, !ellalte rm*n*d nes!?imate.
3entru graful din fig. (( se oin su!!esiv matri!ele:
0/
,
/ / /
. .
-
2 2
( ( ( (

,
_

a a a
a a
a
a a
a a a a
"
,
$ ( #
" "
,
/ / 2 /
. .
-
2 2
( 2 ( (
$ 2 #

,
_

a a a a
a a
a
a a
a a a a
"
,
$ 2 # $ . # $ - #
" " "
.
/ / 2 /
. .
-
2 2
( / 2 / (
$ / #

,
_

a a a a
a a
a
a a
a a a a a
"
De asemenea !a n !azul matri!elor
$ #k
A
se pot s!rie doar
!oloanele !are se s!?im de la o matri!e la urmtoarea.
Drumul de lungime minim de la a
(
" a la a
-
" c se gse%te folosind elementul de pe
poziia #(,-$ din ultima matri!e. Deoare!e a!esta este a
2
dedu!em ! ultimul ar! al drumului
respe!tiv este #a
2
,a
-
$. +poi pe poziia #(,2$ se afl elementul a
/
"e, de!i penultimul ar! este #a
/
,a
2
$.
@n final oservm ! pe poziia #(,/$ se gse%te a
(
, de!i drumul !utat este
( ) ( ) ( ) { }
- 2 2 / / (
, , , , , a a a a a a .
3rezentm n !ontinuare %i algoritmul lui $ant%ig pentru gsirea matri!ei distanelor
minime dintre v*rfurile unui graf orientat G"#X,U$, unde
{ }
n
a a a X ,..., ,
2 (

, pe !are s-a definit


o fun!ie pondere l. 5enionm ! n a!est !az fun!ia pondere poate s ia %i valori negative, iar
da! graful are un !ir!uit !u lungime negativ graful nu are drumuri de lungime minim ntre
dou v*rfuri ale !ir!uitului deoare!e se poate par!urge !ir!uitul de un numr sufi!ient de mare
pentru a oine o lungime ori!*t de mi!. 3entru ori!e n m vom nota !u
{ }
m m
a a a X ,..., ,
2 (

,
iar !u
$ #m
ij
l
distana minim de la v*rful a
i
la a
j
n sugraful
( )
m m m
U X G ,
al lui G !e are
v*rfurile din m
X
%i numr ma,im de ar!e din U. 9tapele algoritmului sunt urmtoarele:
a$ )e aleg ,
(2
$ 2 #
(2
l l ,
2(
$ 2 #
2(
l l unde
( )
n j i
ij
l A
,..., 2 , ( ,

este matri!ea distanelor dire!te


ale grafului G. Da! &
$ 2 #
2(
$ 2 #
(2
< +l l s-a oinut !ir!uitul ( ) ( ) { }
( 2 2 (
, , , a a a a de lungime negativ %i
algoritmul se n!?eie la a!east etap.
$ 3entru m"-,.,>,n se !al!uleaz su!!esiv
{ }
jm
m
ij
m j
m
im
l l l +


$ ( #
( (
$ #
min
%i
$ #m
mi
l
{ }
mj
m
ji
m j
l l +


$ ( #
( (
min
, pentru i"(,2,>,m-(. Da! e,ist un indi!e i astfel n!*t &
$ # $ #
< +
m
mi
m
im
l l ,
atun!i s-a oinut un !ir!uit n sugraful m
G
de lungime negativ %i algoritmul se n!?eie la
a!east etap. +ltfel se !al!uleaz
{ }
$ # $ # $ ( # $ #
, min
m
mj
m
im
m
ij
m
ij
l l l l +

, i,j"(,2,>,m-(,
j i

oin*ndu-se matri!ea distanelor minime dintre v*rfurile sugrafului m
G

( )
m j i
m
ij
m
l A
,..., 2 , ( ,
$ # $ #

.
3entru graful din fig. (( n prima etap oinem matri!ea
.
&
/ &
$ 2 #

,
_

A
Da! m"-,
gsim su!!esiv
{ } { } , 0 , min min
2-
$ 2 #
(2
(-
$ 2 #
((
-
$ 2 #
(
2 (
$ - #
(-
+ + +

l l l l l l l
j
j
j

{ } +

-
$ 2 #
2
2 (
$ - #
2-
min
j
j
j
l l l

00
{ } , ( : ( , min; , min
2-
$ 2 #
22
(-
$ 2 #
2(
+ + l l l l
{ } { } + + +

-2
$ 2 #
2(
-(
$ 2 #
((
-
$ 2 #
(
2 (
$ - #
-(
, min min l l l l l l l
j
j
j

, : , min;

{ } { } + + +

: , min; , min min
-2
$ 2 #
22
-(
$ 2 #
((
-
$ 2 #
2
2 (
$ - #
-2
l l l l l l l
j
j
j
,
$ - #
(2
l
{ } / : , / min; , min
$ - #
-2
$ - #
(-
$ 2 #
(2
+l l l , { } + : , min; , min
$ - #
-(
$ - #
2-
$ 2 #
2(
$ - #
2(
l l l l %i astfel
.
&
( &
0 / &
$ - #

,
_


A
Da! m".,
{ } { } + + + +

-.
$ - #
(-
2.
$ - #
(2
(.
$ - #
((
.
$ - #
(
- (
$ . #
(.
, , min min l l l l l l l l l
j
j
j

: , , min;
,
{ } { } : , , min; , , min min
-.
$ - #
2-
2.
$ - #
22
(.
$ - #
2(
.
$ - #
2
- (
$ . #
2.
+ + + +

l l l l l l l l l
j
j
j

,

{ } { } , : , , min; , , min min
-.
$ - #
--
2.
$ - #
-2
(.
$ - #
-(
.
$ - #
-
- (
$ . #
-.
+ + + +

l l l l l l l l l
j
j
j

$ . #
.(
l
{ } , , , min
.-
$ - #
-(
.2
$ - #
2(
.(
$ - #
((
+ + + l l l l l l { } , , , min
.-
$ - #
-2
.2
$ - #
22
.(
$ - #
(2
$ . #
.2
+ + + l l l l l l l
$ . #
.-
l
{ } 2 : 2 , , min; , , min
.-
$ - #
--
.2
$ - #
2-
.(
$ - #
(-
+ + + l l l l l l , { } + : , / min; , min
$ . #
.2
$ . #
(.
$ - #
(2
$ . #
(2
l l l l
, /

$ . #
(-
l { } , 0 : , 0 min; , min
$ . #
.-
$ . #
(.
$ - #
(-
+l l l

{ } , , min
$ . #
.(
$ . #
2.
$ - #
2(
$ . #
2(
+ l l l l

$ . #
2-
l

{ }
$ . #
.-
$ . #
2.
$ - #
2-
, min l l l +
, ( : , ( min;
{ } , , min
$ . #
.(
$ . #
-.
$ - #
-(
$ . #
-(
+ l l l l { }
$ . #
.2
$ . #
-.
$ - #
-2
$ . #
-2
, min l l l l +
,
de!i
.
& 2
&
( &
0 / &
$ . #

,
_

A
@n final pentru m"/
{ } +

/
$ . #
(
. (
$ / #
(/
min
j
j
j
l l l

{ } , 2 : , , , 2 min; , , , min
./
$ . #
(.
-/
$ . #
(-
2/
$ . #
(2
(/
$ . #
((
+ + + + l l l l l l l l
{ } +

/
$ . #
2
. (
$ / #
2/
min
j
j
j
l l l

{ } , , , , min
./
$ . #
2.
-/
$ . #
2-
2/
$ . #
22
(/
$ . #
2(
+ + + + l l l l l l l l {
$ . #
-.
-/
$ . #
--
2/
$ . #
-2
(/
$ . #
-(
$ / #
-/
, , , min l l l l l l l l + + +

} ,
./
+ l { } , , , , min
./
$ . #
..
-/
$ . #
.-
2/
$ . #
.2
(/
$ . #
.(
$ / #
./
+ + + + l l l l l l l l l

{ + +
$ . #
2(
/(
$ . #
((
$ / #
/(
, min l l l l

} , , ,
/.
$ . #
.( /-
$ . #
-( /2
+ + l l l l l
{ } , 2 , min; , , , min
/.
$ . #
.2
/-
$ . #
-2
/2
$ . #
22
/(
$ . #
(2
$ / #
/2
+ + + + l l l l l l l l l
, 2 : ,
{ } - : . , , - , min; , , , min
/.
$ . #
.-
/-
$ . #
--
/2
$ . #
2-
/(
$ . #
(-
$ / #
/-
+ + + + l l l l l l l l l ,
$ / #
/.
l
{ } , 2 : 2 , , , min; , , , min
/.
$ . #
.. /-
$ . #
-. /2
$ . #
2. /(
$ . #
(.
+ + + + l l l l l l l l { } +
$ / #
/2
$ / #
(/
$ . #
(2
$ / #
(2
, min l l l l
, . : . , / min;
{ } , / : / , 0 min; , min
$ / #
/-
$ / #
(/
$ . #
(-
$ / #
(-
+ l l l l { } : . , min; , min
$ / #
/.
$ / #
(/
$ . #
(.
$ / #
(.
+ l l l l
, .
{ } , , min
$ / #
/(
$ / #
2/
$ . #
2(
$ / #
2(
+ l l l l { } , ( : , ( min; , min
$ / #
/-
$ / #
2/
$ . #
2-
$ / #
2-
+ l l l l { , min
$ . #
2.
$ / #
2.
l l
} ,
$ / #
/.
$ / #
2/
+l l { } , , min
$ / #
/(
$ / #
-/
$ . #
-(
$ / #
-(
+ l l l l { } , , min
$ / #
/2
$ / #
-/
$ . #
-2
$ / #
-2
+ l l l l { , min
$ . #
-.
$ / #
-.
l l
} ,
$ / #
/.
$ / #
-/
+l l { } , , min
$ / #
/(
$ / #
./
$ . #
.(
$ / #
.(
+ l l l l { } , , min
$ / #
/2
$ / #
./
$ . #
.2
$ / #
.2
+ l l l l { , min
$ . #
.-
$ / #
.-
l l
} 2 : , 2 min;
$ / #
/-
$ / #
./
+l l %i astfel
.
& 2 - 2
& 2
&
( &
2 . / . &
$ / # 6

,
_




A A
02
Dn alt algoritm al lui $ant%ig se utilizeaz pentru !al!ulul lungimii minime a drumurilor
de la un v*rf a
(
al unui graf orientat G"#X,U$ pe !are este definit o fun!ie pondere l la !elelalte
v*rfuri ale grafului a
2
, a
-
, >, a
n
. Fie { } E , & ' ,..., , :
F
2 (

n
a a a l o fun!ia !e se define%te re!ursiv
astfel n!*t n final ( )
k
a l
F
este lungimea minim a drumurilor de la
(
a
la un v*rf a
k
, k"2,-,>,n.
)e !onsider ( )
k
a l
F
da! nu e,ist drumuri de la a
(
la a
k
. 9tapele algoritmului sunt
urmtoarele:
a$ )e !onsider { }
( (
a X %i ( ) &
F
(
a l .
$ 3entru m"(,>,n-(, da!
{ }
m
i i i m
a a a X ,..., ,
2 (

, pentru ori!e m i
X a
k

se alege #da!
e,ist$ un v*rf
k
i
b
!are nu este n X
m,
iar lungimea ar!ului
( ), ,
k k
i i
b a
k"(,2,>,m, este minim
n mulimea lungimilor ar!elor
( ), , c a
k
i unde c nu este n X
m
. Din mulimea format din
v*rfurile
k
i
b
se alege unul
s
i
b
pentru !are
( ) ( ) ( ) ( ) { }
k k k s s s
i i i
m k
i i i
b a l a l b a l a l ,
F
min ,
F
(
+ +

.
#2$
+poi se define%te
{ }
s
i m m
b X X
+( %i
( ) ( ) ( )
s s s s
i i i i
b a l a l b l ,
F F
+
.
#G$
3entru graful din fig. (( ne propunem s determinm !u aHutorul !elui de-al doilea
algoritm a lui Dantzig distana minim de la a
(
"a la a
-
"c. Ionform algoritmului pentru m"(
{ }
( (
a X %i ( ) &
F
(
a l . Deoare!e v*rful e"a
/
este la distana minim de a
(
"a se ia
{ }
/ ( 2 /
, ,
(
a a X a b
i

%i folosind #G$ ( ) ( ) ( ) . 2 ,
F F
/ ( ( /
+ a a l a l a l Da! m"2,
,
2
(
a b
i

2
2
a b
i

,
iar din #2$
( ) ( ) { } . : 2 2 , / & min; ,
F
min
2 (
+ + +

k k k
i i i
k
b a l a l
. +stfel 2
2
a b b
i i
s

,
{ }
/ 2 ( 2
, , a a a X
, iar ( ) ( ) ( ) . . ,
F F
2 / / 2
+ a a l a l a l 3entru m"- putem alege
,
-
(
a b
i

-
2
a b
i

%i .
-
a b
i

, iar din
#2$
( ) ( ) ( ) ( ) ( ) ( ) { } + + +
- 2 (
,
F
, ,
F
, ,
F
min
2 / 2 2 ( ( i i i
b a l a l b a l a l b a l a l
.
. : 2 2 , ( . , 2 & min; + + +
. De!i
,
.
-
a b b
i i
s


{ }
/ . 2 ( -
, , , a a a a X
, iar ( ) ( ) +
/ .
F F
a l a l
( ) . . ,
. /
a a l
Da! m"., alegem
,
-
(
a b
i

-
2
a b
i

%i -
-
a b
i

, iar din #2$
( ) ( ) ( ) ( ) ( ) ( ) { } + + +
- 2 (
,
F
, ,
F
, ,
F
min
. . 2 2 ( ( i i i
b a l a l b a l a l b a l a l

. / : 2 . , ( . , 2 & min; + + +
+stfel
s
i
b

-
2
a b
i

,
{ }
/ . - 2 ( .
, , , , a a a a a X
, iar lungimea minim este ( ) ( ) ( ) . / ,
F F
- 2 2 -
+ a a l a l a l
0G

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