Sunteți pe pagina 1din 16

Capitolul X

ElEMENTE DE TEORIA GRAFURILOR

§ 1. Noţiuni generale

Definiţia 1. Un graf G este o perecJw de forma G = (X, A), unde X este


o nwlfime finită, iar A este o submulţime a lui X X X.
Elementele x e X se numesc "vîrfuri " sau "noduri" ale grafului G, iar
perechile (x, y) e A - arce ale grafului.
Penlru un arc (x, y) e A, vîrful x se numeşte extremitate iniţială sau
,.sursă", iar vîrful y, extremitatea finală sau "destinafie".
Ca un exemplu, vom considera graful G = (X, A), dat de X = {x1 , x2 ,
x 3, x 4 } , iar A = {(x1 , x3 ), (x2 , x1 ), (x3 , x 2 ), (x1 , x 4 ) }.
Graful G admite o reprezentare geometrkă în plan, obPnută astfel :
- cele patru vîrfuri se plasează în plan în poziţii distincte oar~care ;
- pentru fiecare a rc (xt, x;) e A, punctele Xt şi Xi se unesc printr-u n
segment orientat.
Se obţine astfel figura 1.
Dacă arcele a 1, a 2, • •• , a ~.; ale unui graf G au proprietatea că extremi-
tatea final ă a arcului a1(j = 1, k - 1) coincide cu extremitatea iniţilllă a
arcului a i+1 • atnnci mulţimea ordonată d = {a1 , a 2 , •• . , a"} formează un
drum în graful G. Dacă extremitatea finală a arcului a ~.; din drumul men-
tionat anterior coincide cu extremitatea iniţială a arcului a 1, atu nci drumul
se numeşte "circuit" în grafu l G: noţiunea de circuit are o mare importan ţă
şi Yom reveni deseori asupra ei.
}Ienţionăm că drumul mai poate fi definit şi ca o mulţime ordonată de
vîrfuri, ceea ce este de multe ori avantajos: anume, fi e d = {x, 1, Xt 2, .• • , Xt1,} C
C X, pentru care avem proprietatea (V) j = 1, h - 1, (X ti, Xi;+ 1) e A .
Echivalenţa celor două moduri de prezentare este evidentă. Se sp une despre
un drum d că "trece" prin arcele ş i prin vîrfurile care le conţine. Dacă un
drnm trece de două sau mai multe ori prin acel aş i Yîrf, el se numeşte drum
neelementar: în cazul contrar, drumul este elementar. Un drum elementar
care trece prin toate vîrfurile grafului se numeşte drum hamiltonian. Uneori,
numărul arcelor care compun un drum este numit "lungimea" acelui drum.
Arcele de forma (x 1, x 1) e A se numesc " bucle".
într-un graf G, se numeşte muchie o pereche [xt, XJ] de vîrfuri pentru care
avem proprietatea că (x 1, x 1) e A sau (x J. Xt) e A : muchiile unui graf re-
prezentat geometric se prezintă ca nişte segmente neorientate.
0 SUCcesiune de vîrfuri lJ = {Xil• Xtz, ••• , X;t}
formează un lanţ în grafulG, dacă (V) j = l, k-1,
avem [x 1J, XiJ+ 1 ) e A. Lanţul se numeşte ele-
mentar dacă nu trece de două ori prin acelaşi
vîrf. Un lanţ avînd X t 1 = Xi~o: şi toate muchiile
distincte două cîte două se numeşte ciclu. Numă­
rul de muchii care formează un lanţ se numeşte
Fig. 1 lungimea lanţului.

102
Un graf G este cone.1: dacă pentru orice dou ă Y lrfuri ale sale, x ş i y, exislă
un lanţ o= {x, cx 1, •.. , cx 1,, y}. Vîrfurile x, yale unui graf G se zic .,adi acente",
dacă [:r, y] este o muchie în G; alunci se sp une că virfurile .1: ş i y s înt inci-
dente la mu chia [.r, y].
F ie G = (X, A ) un graf şi fie Y C X : spu nem că arcul (cx1 , o: 2) este
incident inlerior mulpmii r, dacă cxl ~ y şi CXz E 1'. Dacă ayem 0(1 E ) ',
o: 2 rţ. Y şi (o:1 , cx2) e A, atu nci arcul (o:1, cx2) este incident exterior mulţimii Y.
Vom nota cu w- (Y) mulpmea arcelor incidente interior lui Y, iar cu
w+(n - mulţimea arcelor incidente exlerior lui Y: mu l ţim ea w(l"J = .
= (·)-Cl') U w+(Y) se numeşlc mulţime de arce incidente lui Y. Fie G =
= (X, A) - un graf: atunci graful G1 = (X, B) se numeşte "gTaf partial·'
al lui G, dacă B CA şi "subgraf", d acă are strict m ai puţine vîrfuri decî t G,
iar a rcele sale se obţin prin preh!area arcelor lui G care unesc vîrfuril e sub-
grafului. Aşadar, G2 = (Y, C) este subgraf al lui G, dacă Y C X şi dacă
C = ( Y X Y) n A.

§ 2. Matrici asociate unui graf


Fie G = (X, A) un graf aYînd X = {x1, X2, ... , x.. }. i\Iatricea A = Il UtJ 1
da lă de relaţiile : aH= 1, pentru (x 1, x ,) e A, ş i Uti =O pentru (xt, x,) f/= A,
se numeşte matricea arcelor (malricea conexiunilor directe) pentru graful G.
1\Ialricea r/) = d u , dată de rclapite do= 1 pen lru cazul în care în G
exi s tă cel puţin un drum de la Xt lax, şi do= O în caz co ntrar, se num eşte
matricea dr11murilor (mat r icea conexiunilor t olale) a gr afu lui G. Să remarcăm că :
- dacă dou ă grafuri au aceeaşi m alrice a arcclor (şi aceeaşi mulţime
de Yirfuri), at unci cele două grafuri coincid:
- d ouă grafuri avînd aceeaşi mulţime de vîrfuri ş i aceeaş i matrice a
d rumurilor, atu nci nu este obligatoriu ca aceste două gra furi să aibă ş i ace-
leaşi a rce.
P .-opozipa 1. intr-un graf G avînd ,.n" vîrfuri, orice dmm elemen tar are
!Hngimea de cel mult n- 1.
Demonstraţie. Afirmaţi a este ev identă pentru cazu l n = 2, întrueit
într-u n graf cu numai dou ă Yirfuri, orice drum elemenlar est e format dintr-un
singu r arc.
Presupunem că într-un g ra f av înd k virfuri, orice drum elementar are
ce l mul t k - 1 arce.
F ie acum un graf G ad nd k + 1 virfuri, ş i fie :r A-+ 1 - un Yirf fixat a l
acestu ia . D acă G = (X, .1 ), atunc i subgraful G1 corespu nzind m ul !imii
X "-{:r,.+1 } are k Yirfuri. Pentru a obpne din drumuril e g ra fului G1 , mulţimea
de drumuri din graful G, o bse rvă m că sînt posibile trei metode :
- fiind dat un drum d 1 = fxt1 , . • • , Xt.~:} in g raful G1 , se poale obpne
drumu l d = {:r;1, . . . , 1't1-, xA-+d in .graful G, d acă (:r1k> xH 1) e .tl;
- dacă d 1 = {xt 1, •• •, Xt.~:} este drum in grafu l G1, se poale obpne
drum ul d = {xHI• Xt1, ... , x,.tJ dacă Sn graful G aYe m (:r H I• xc1) e A;
- aYînd drumu l i.l1 = {xt1 , ••. , Xt", x'v+J• .. ., :t;.t} în g rafu l G1• se
poate obţine drumul d = {x;1, ... , x,", :r,.+I• X t" +t• • . . , X tk} în g raful G,
ori de cite ori (xt", .1· 1-+ 1) ş i (x 1.+ l• Xt"+ 1) s înl a rce în G. Se observă aşadar că
trecerea de la drumuril e din subgraful G1 la drumurile din g ra ful G presupune
adă u garea unu i singur arc, deci drumuril e din g r a ful G Yor aYCa cel mult k
arce.

103
Fie G = (X, A) un graf, şi f ie X; e X; vom introduce următoarele
notaţii:
- r <l) (Xti mulpmea de vîrfuri din G la care se poate ajunge din vîrful Xt
fol os ind drumuri formaLe dintr-un singur arc ;
- r <2>(:v,) - m u l-ţim ea de vî rfuri din G la care se poale ajunge din Xt
fol osind drumuri elementar<' formate din două arce;
- r <t> (.c;) - mulţim ea de vîrfuri din G la care se p oa te ajunge din Xt
folosind drumuri elementare formate din k arce.
1n a ces te condij ii es te valabilă următoarea a firm a-ţ i e :
PJ'OJlOZiţia 2. Fie G w1 graf ai' lnd " n" virfuri : atunci elementul d ti(i :f j)
al matricii (/) a d rum urilor grafului G este egal cu 1, d acă şi numai dacă
a\'cm relaţia
n-1
XJ e U r <·•> (:t: t).
S= l

Demonstraţie. Afirmapa este evidentă, deoarece orice drum se p oate


trans fo rm a într-un drum elementar prin s uprimarea unor arce.
în vederea elaborării unor algoritmi de determinare a . matri cii drumu-
rilo r, vom introduce o operaţie adecvată p e mulţimea formală din elemen-
t ele O şi 1, numită oper a p e de ,.adunare boolea nă " ; acea s tă o peraţie este
dată de reg ulil e următoa re : O + O = O, O + 1 = 1 + O = 1, 1 + 1 = 1.
Atunci este ev ident că algoritmul de determinare a m atricii drumurilor unui
graf, p lecînd de la malriqea a rcclor, constă din ap licarea urmă toarelor clape:
- 1. pentru construirea linie i J' din malricea r?J(i = I:ll> urmanm
î ntii elemcnlele egale cu ,.t·' p e linia .,i·· din matricea arcelor: d acă a 1,. = 1 ;
a ta = 1 ; ... ; a ty = 1, atunci d ta. = 1 ; c/; 13 = 1 ; . . . ; d iy = 1.
- 2. folosind adunarea booleană, se adună liniile ct., ~ ••• •, y din matricea cll
la linia "i" ; noile valori de "1 " apărute se trec în li nia " i " a matricei ([);
fie k, 1, ... , m poziţii l e ocupale de aceste noi valo ri în cadrul liniei;
- :1. ad un ă m (b oolean) liniile k, 1, . . ., m din d la linia ,.i·', trecînd
noile valori de " 1" apărute î n linia " i " a m atricei (/), continu înd procedeul
pînă la apariţia uneia din urmr1toarcle situaţii:
sau toate elrmcnLelc d u (j = l. n ) deYin egale cu .. 1··;
sau nu mai apare nici un element egal cu .,1" , caz in care
Jocu rile rămase li bere se completează cu zerouri şi se trece
la linia ..i + 1", pe ntru care se repetă procedeu l.
U na din Lre noţiunile ce vor fi utilizate în continuare face. obiectul defi-
ni ţ ie i de mai jos:

D efiniţia 3. Puterea de atingere p(x;) a vÎrfului .t t e X in graful G = (X,A)


este egală cu numărul de vîrfuri la care se p oate ajunge din X t, adicil egalli cu
numărul de elemente de "1 " de pe linia "i" din matricea fl).
~Ialricea (/) = 11 diJ il;, i=G a drumurilor gra ful ui G poa le ind ica pre-
zenţa sa u absenţa circuitelor în g rafu l G: astfel, d acă d ii = O, (V) i = T,ll,
atu nci grafu l G nu arc circuite; d acă există un indicei, i = 1, n, pentru care
d u= 1, atunci există în graful G un circuit care are ca vîrf ini ţial şi final
pe X ;.

104
ele
De exemplu, pentru gr.aful G din figura 1, matricea conexiunilor directe
este
X;
o
~ (~ ~)
1
o o
d 1 o
o o
j) Matricea drumurilor, obţinută din matricea precedentă, est e
t"ă

0 ~ (l
1
1
1 ] ;)
o o o,
intrucit d11 = 1, in grafu l G din figura 1 ex istă circuite.
ln ceea ce priveşte puterile de atingere ale Yirfurilor, avem p(x1 ) =
= p(x2) = p(x3 ) = 4 ; p(x4 ) = O.
Algoritmul de determinare a matricii drumurilor prezentat anterior
este destul de lent in ce priveşte aplicarea pe calculator, avînd complexi-
tatea O(n 2 ), dar este util in aplicaţi i efectuate manual pe grafuri de dimensiuni
reduse.
Se poate observa de asemenea caracteru l prea sin tetic al acestui algoritm,
in sensul că prezenţa unei valori de "1" in matricea drumurilor nu dă infor-
maţii asupra vîrfurilor din care se compun drumurile corespunzătoare, bine-
inţeles ş i nici asupra numărului de drumuri intre vîrfurile care corespu nd
acelor valori de " 1".
Ca un exemplu de algoritm capabil să răsp und ă aces tor deziderate, pre-
zentăm a lgoritmul fundamental datorat lui A. Kaufmann, numit al " înmu l-
ţirii latine". Drept punct de plecare, acest algoritm foloseşte o matri ce a
conexiunilor directe, notată .:::<:: (1>, care, in locul \·alorilor de "1 '·utilizate de
matricea obişnuită a arcelor, utilizează însu şi arcul respectiv, reprezen tat
prin virfurile care il compun: astfel, pentru graful din figura 1, matricea x<IJ
e este

Sensul simbolului "* .. este acela de " inexisten!ă a arcului".


P rin suprimarea primei litere in matricea .:::<::(ll, se obţine o matrice .:::<:: (0>,
numitii "a destinaţiilor posibile". Se compun matricile _::e:(ll ş i .:::e:w> (in această
0rdine) prin operaţia numită "concatenare" sau ,. înmulţire l atină", astfel :
se respectă regulile din înmulţirea obişnui Lă a matricilor, cu următoa rel e
preci ză ri :
- dacă una din componen tele particip a nte la calcul este ocupată de
si mbolul .,*", atunci rezu ltatu l es te .,*";
- î n caz contrar, rezultatu l compunerii consLă în Si ricrea în continuare
a Yîrfurilor componente ale simbolurilor participante.

105
Kotind această regulă de compunere prin "&", ŞI introducînd relaţia
de recurenţă :
x<r+l) = x<r>&x<o>, r ~ 1,
se obsen·ă că matricea x<m> conţine lista tuturor drumurilor formate din "m"
arce in graful dat. Pentru exemplul analizat, avem

* 3
* * 4:*) ·, _:x 121 = _:xco & _:x <o>=
2 *
* *

~ ((x,, x,) )::<:'"~:<:'"& :X"'~


* (xv X;~, x2) * *
* * (x2, Xl, x3) (x2, x,,
:r2, xJ) * * *
* * * *

~ c·
x3, :r2, XI) * .* *
* (x2, xl, x3, x~) * *
* * (x3, Xz, Xl, x3) (:t:3, x2, xl, x,) )-
* * * *

§ 3. Determinarea drumurilor hamiltoniene


in grafuri fără circuite
Ca şi pînă acum, vom nota prin p(x) puterea de atingere a virfului x
al unui graf. Dacă graful G nu are circuite, vom scrie matricea (/) a drumu-
rilor grafului, ordonind în prealabil vîrfurile grafu lui in ordinea descrescă­
toare a puterilor de atingere: după cum se va arăt:1, prin acest procedeu
toale valorile de " 1" din matrice vor apare deas: -pra diagonalei principale.
Pentru a justifica aceasta, să observăm intii cJ, dacă în graful G există
un drum de Ia x, la x 1, atunci p(x 1) < p(x 1), deoarece orice vîrf atins din x 1
poate fi atins şi din Xt, printr-un drum obţinut in cadrul unei operaţii de
concatenare. Aşadar, dacă ar mai fi posibil ca dtJ = 1, cu i > j, atunci
p(xr) > p(x 1), ceea ce, conform convenţiei privind rearanjarea liniilor şi
coloanelor, nu mai este posibil. 1 O astfel ele formă a matricii (/) se numeşte
,.formă t riangularizată superior". Această formă are proprietatea că fiecare
element egal cu "1" de pe fiecare linie a matricii drumului corespunde unui
drum format dintr-un singur arc. Într-adevăr, să presupunem că d,.b = 1,
(a< b) este prima valoare de "1" de pe linia "a", şi că există un drum de
cel puţin două arce, d = (a, h, b), atunci vîrful xA ar verifica relaţia p(xA) >
> p(.1:b), deci, pe de o parte, csLe sigpr că xA va precede pe xb, iar pe de altă
parle, am avea dAb = 1, ceea ce am presupus că nu se întîmplă.
Aceste consideraţii simple permit elaborarea unui algoritm de determi-
nare a drumurilor hamiltoniene în grafuri fără circuite, după cum urmează :
Teorema (Y. Chen). Un graf fără circuite, care are "n" vîrfuri, conţine
un drum hamillonian, dacă şi numai dacă avem :
~ p(Xt) = n ·(n 2- 1) .

i = 1, n

106
Demonstraţie. Fie d = (x1 , x 2 , ••• , x,.) drumul hamiltonian în G; aturrci :
- dacă· i >
j, din x 1 nu se poate atinge vîrful Xt, deoarece în caz contrar
în G ar exista circuite ;
- din drful Xt (i = -:-1-,.-n-~1 ) se pot atinge virfurile Xt+t• X t.L , •• • ,
2
x,.,
deci p(."Ct) = n - i ;
din vîrful Xn nu se poate atinge nici un vîrf.
în total avem deci :

L: p(~t) = L: (n _ i) = n·(n; 1).


i=l,n i = l,n

Invers, să presupunem că :
~ p(Xt) = n·(n -1) .
LJ
i= l ,Il
2 '

atu n ci în matricea -0 se găsesc n(n- 1)/2 elemente de "1 . 1•riangularizînd


superior această matrice, aceste elemente vor ocupa toate locurile disponi-
bile de deasupra d iagonalei : în final, drumul hamiltonian însuşi esle claL
de succesiunea Yîrfurilor corespunzătoare matricii triangu l arizată superior.
Se observă că într-un graf fără circuite, există cel mult un drum ham il-
tonian. În adevăr, dacă ar exista două drumuri hamiltoniene distinclr,
d)}' ş i d~;>, atunci în cele două drumuri ar exista cel puţin două virfuri Xa, .1:0
aşezate în ordine inversă, ceea ce ar face să apară un circuit între -xa şi :rb.
Algoritmul final de determinare a drumului hamiltonian constă în apli-
carea următoare l or etape : ·
1. se scrie matricea fZ) = 11 di1 11 a ·drumurilor: dacă există un indice
,.i" pentru care d11 = 1, aLunci graful are circuite şi dec i algoritmul Y. Chen
nu se poalc ap lica:
2. în caz conLrar, dacă în malrice ex islă n(n - 1)/ 2 valori de " 1 ",
graful admiLe drum ham il tonian şi se poate trece la ct.apa următoare; dacă
număru l de valori de "1 " este mai mic decît n(n - 1 )/ 2, grafu l nu arc drum
ham iltonian ;
!l. ordinea virfurilor în cadrul dru mulu i hamiltonian esle dală de (lr-
dinea descrescăloare a· puterilor de atingere.
Exemplul J.: să determi năm drumul hamiltonian pent ru graful din
figura 2.
Penlru accsl graf, matricea a rcelor şi malricca drumuri lor sint urmă-
tonrelc :
o o o
d~ (l o () 1
1 () 1
o o ()
o o o fJ.
'0o o o
~ (l
o o 1
1 o 1
Fig. 2
0
o o o
o o o o lJ.
107
deci p(x1 ) = 1, p(x2 ) = 3, p(x3 ) = 4, p(x4 ) = 2, p (:t5 ) = O. Cum este verifi-
cată condiţi a teoremei, deducem că în graful dat există drum hamiltonian.
Cum avem p(.1:3 ) > p(:c2 ) > p(x4 ) > p(x1 ) > p(x5 ), acest drum va fi du =
= (:r3 , x 2 , x 4 , x 1 , X;;) .
.:\Ienţionăm că p rincipalul algoritm (elementar) de determinare a dru-
murilor hamiltoniene în grafuri avînd circuite rămîne algoritmul Kaufmann :-
preze nţa unui clement diferit de ., *" pe diago nala uneia dintre matricile _x <h)
din cadrul acestui algoritm indică atît prezenţa, de exemplu, a unui circuit
hamiltonian, cît şi o rdinea vîrfurilo r. În ceea ce iH·iveşte drumurile hamilto-
niene intr-un graf avînd "n·' vîrfuri, ele coresp und elementelor diferite de "*"
di n matricea _x<n>.

§ 4. Drumuri de valoare optimă într-un graf :


algoritmul Bellman - Kalaba
F ie G = (X, A) un graf ; vo m introdu ce o funcţ ie p: X --+ n+, pent ru
care vom nota: (x 1, x 1) e A = p(x1, x 1) = p ;;.
Numărul Pii va fi numit .. valoarea" a rcului (x ;, XJ), iar funcţia p - funcpe
de valuare a graful ui. Un graf înzestrat cu o funcţie de valuare v a fi numit
:.graf valu~l ", şi va fi notat cu G = (X, A, p). Pentru u n drum d = (x;1,
:t;2 , ••• , XtA:) în graful G, vom numi " valoare a drumul ui ··, su ma valorilor ·
arcelor componente, ad ică :

Ne propunem abordarea următoarei probleme : fiind dat u n graf valuat


şi un vîrf Xn e X fixat, să găsim drumul " d·' de la un virf oarecare X; la
virful Xn, pentru care valoarea p (d) să fie minim ă .
Drept instrument de lucru se foloseşte o matrice, numită " matricea
exti n să a valorilor a rcelor", V= 11 v 11 11, ale cărei elemente se determină
astfel :
O, pentru i = j,
V ;J =
l
PtJ. pen~tr~t (.1:~, ~J) e A ,
co, daca z =1= J ş t (."C;, XJ) f{= A.
Fie, de ase menea, m!"> - valoarea mtmma a drumului d de la X t la Xn
în g raful dat, considerat în mulţimea drumurilor de cel mult k arce : vom
n ota prin m ; - valoarea minimă a drumului de la X; la Xn, considerată în
mu!J imea t ut uror drumurilor (indiferent de numărul de arce componente).
în determinarea matricilor 11 m~"> lli=G• li m t lri=G ne bazăm pe
următoarele propoziţii : .

l,ropoziţia l. Pentru orice k e N* avem


mfh l) = minim {viJ + m?>}.
i =T.Ii

10.8
i- Demonstraţia propoziţiei este evidentă, deoarece un drum de cel mult
L
le + 1 arce cu destinaţia Xn se poate ob-ţine dintr-un drum de cel mult k arce
cu dcslinapa Xn, prin adăugarea unui arc la începutul său . Aşadar,
m?'+l 1 = minim {v 0 + minim {p(d.~;)}} = minim {v 11 + m ~t>}.
j = t;li {d d j=~
!-

Pro})OZiţia 2. Dac(t există k e N* pentru care mlk' = mlk+l>, pentru


orice i = G, atunci :
1)

t
a) m ~kJ = m ~•> , (V) i = 0, (V)s ~ 1.: 1; +
b) mf = i = 0-
m ;, (V)
Demonslra!ie. Vom demonstra proprietatea a) prin inducţie după s:
penlru s = 1.: + 1, proprietatea esle adevărată conform enunţul u i;
- presupunînd proprielalea adevă rată pentru o v aloare s ~ h, ave m
mf11 - l> = minim {vu + m ~M} = minim {v11 + mfk'} = mf+ 1.
j =~ j =~

P roprietatea b) rezultă în mod evident, de vreme ce adăngarea de noi


arce nu ma i conduce la drumuri de valoare mai mică . Din cele pre-
zentate deducem algoritmul de construire a Yectorulu i 11 m c l!i= l.fl; acesta
con s tă în aplicarea urmă toare l o r etape :
J. se cons truieşte matricea V = 11V tJ li;, i=T,li pentru graful dat;
2. se adaugă matricii \', liniile suplimentare 11 mf0 11, 11 ml2 ' 11. . ..,
aslfel :
a. linia 11 m~ 0 11 coincide cu coloana 11 vJn II]=T.n ;
b. presupunînd completată linia 11 mlk) ll i=f.l1• se completează linia
11 m\!:+l ) 11;=[,11 conform propoziţiei 1 ;
c. se continuă aplicarea fazei (b) pînă la obţinerea a două linii
11 m~k> 11, 11 mlk+l J 11 identice.
3. se adună linia "i" din V cu linia 11 m <f+l> 11, urmărindu-se rezultatul '
minim ce se poate obţine : să presupunem că

atunci primul arc din drumul minim de la x 1 la Xn este arcul (x 1, x 1). In con-
tinuare, se adună linia " j" din V cu 11 m <~+l > 11, reţinînd noua valoare minimă,
aflată pe coloana .,!.:" ; atu nci al doilea arc este (x,, x.~:) etc.
Exemplul 3. F ie graful valuat din
figura 3 : ne propunem să determinăm lun-
gimile drumurilor m axime cu desti naţia x 5 •
Pent ru acest graf avem p 12 = 2 ; p 13 = 2

= 8 ; P24 = 12 ; P2s = 2; P32 = 9 ; P 3t> = 1 ~


P 34 = 3; p45 = 10. Î n matricea V, din cauza
faptului că se urmăreŞte · deter~inarea
valorilor drumurilor maxime, vom pune :
(xt. x,) </::. A => v 0 = _:.._ w. Se obţine matri-
cea următoare, ·la care s-au adăugat ş i
liniile si1plimentare din pagina urm ătoare . ) 7ig. 3

.109
X2

o 2 8 1 - 00

- oo o -00 12 2

- 00 9 o 3 1

-00 -00 - Y) o 10

- 00 - 00 -00 -00 o

-00 2 1 10 o
1
Il ml 2 ' 11 11 22 13 10 o
24 22 31 10 o
-
39 22 31 10 o
3H 22 31 10 o

Cum m\ 4 ' = m~ 5 > , (V) i = 1, 5, a lgoritmul ia sfîrşit, linia li ml4 ' co n-


ţinînd deja Jungimile drumurilor maxime de la toate vîrfurile grafului, la
vîrfu l x 5 • Ca un exemplu , valoarea m1 4 ' = 39 arată că drumul ma xim de
la xt la x 5 are Yaloarea 39. Să determinăm efectiv arcele care compun acest
drum.
Cum mf 4 > > mi3 >, deducem că acest drum este format din exact 4 arce:
pe de altă parte,
mf4 > = n:axi_m {ml3 ' + Vt1 } = maxim {24 + O; 22 + 2; 3(+ 8_; IO~+Ll ;
1= 1.:>

- oo +O}= 31 + 8, unde 31 = m~3 > şi 8 = v13 •


Aşadar, primul arc al drumului coresp unde lui v13, este deci arcul (xt, x 3 ).
In continuare, se urmăreşte provenienţa lui m~3 > pentru a determina .cel
de-al doil ea arc al drumului: avem
m~ 3 > = maxim {mi 2> + v13 } = maxim {Il - oo; 22 + 9; 13 +O; 10 + 3;
Î:-::-1,5

O + 1} = 22 + 9, unde 22 = m~2 >, iar 9 = v


32 ;

aşadar, al doilea arc corespunde lui v32 , fiind deci arcul (x3 , X 2 ). Se contiuuă
în mod asemănător pînă la dc.terrninarca tuturor ar.celor.
ln cazul unor grafuri de dimensiuni mari, această metodă nu este con-
venabilă, deoarece presupune memorarea tuturor vectorilor Il m~ll 11.11 mi!> Il, ...
Varianta de organizare prezentat[! în cont inuare uiilizează u·u mai· vectol·ul

110
11 m~"> Il final şi matricea V, ceea ce poate insemna degrevarea unui însemnat
volum de memorie în cazul rezolvării problemei pe calculator.
La exemplul prezentat, urmărim dacă este posibil să avem
mi4> - m~4> = v1" pentru {m~4> fm~4) ~ m{4> }.
Cum se constată că mt4 > - m~ 4 > = 39 - 31 = v13, rezultă că primul arc
este (.1:1, x 3) , rămînînd acum de urmărit provenienţa celorlalte 31 de unităţi
din care este format drumul rămas. Pentru aceasta, se studiază egalitatea
m~ 4 > - m~ 4 > = v3 , ; aYînd m~4 > - m~ 4 > = v32 , se deduce că al doilea arc al
drumului poate fi (x~, x 2 ) etc.

§ 5. Flux maxim intr-o reţea de transport


Un graf orientat valuat G =(V, A, p), fără circuite, se numeşte "reţea
de transport ", dacă îndeplineşte următoarele condiţii: -
a. dacă X = (x1 , x 2, • • • , x ..) atunci (V) i = l,'n, avem .(Xt, Xt) f/= A ;
b. x 1 arc proprietatea că (Xt, x 1) f/= A, (V) i = T,Tl, fiind singurul vîrf
cu aceste proprietăţi; acest vîrf se numeşte "sursa" reţelei;
c. Yîrful x,. are proprietate (x,., x 1) .ţ. A, (V) i = 1, n, fiind singurul
virf cu această proprietate: vîrful x,. se numeşte "destinaţia" reţelei;
d. pentru orice Yîrf x1 e X "'-{xt, x,.}, există cel puţin un drum d de Ia
x 1 la x", care trece prin vîrful x 1•
Definijie. O funcţie cp : A -+ n+se numeşte " flux " pe reţeaua G = (X, A, p),
dacă: -
l. (V) (xi, x,) e A, avem O ~ cp(Xt, Xt) ~ Po ;
2. penlm orice virf x 1 e X"'-{x1, Xn}, avem
~ cp(x~:, x 1) = ~ !fl(Xt, xh).
k=l,n 11 = 1, Il
EA
(Xt , X J ) (x j, x.) e A

Problema avută în vedere este aşa-numita problemă a "fluxului maxi~',


adică situaţia în care, dintre toate fluxurile cp : A -+ R+ posrbde in reţeaua
G = (X, A, p), se urmăreşte să se determine fluxul "cp pentru care

1 n vederea determinării fluxului maxim cp, " vom prezenta în prealabil


unele concepte.
Astfel, un arc (xt, x,) e A se numeşte "arc saturat", dacă. in raport
cu fluxul cp are loc relaţia : cp(Xt, x,) = Plf·
Fiind dată o submulţime Y C X, se numeşte "tăietură de suport Y"
mulţimea de arce

w-(Y) = {(xt, x,) e A/Xt f/= Y; x, e Y} C ;1.


in mod analog, se consideră şi mulţimea următoare :
w+(Y) = {xt1, x,) e A/xt e Y; XJ f/= Y} CA.

111
Cantitatea :
c[w-(Y)] = ~ Po
(~·t. X J) E <·>-(Y)

se numeşte " capacitate a tăieturii" w- (Y).


1n legătt:ira cu aceste nopuni, au loc următoarele afirmaţii :
Propoziţia 1. Fie G = (X, A, p) o refea de transport avînd sursa .x
1
şi destinaţia x,.; fie <p : .~1 ~ n+ un flux oarecare in reJeaua G: atunci

~ <p(:l;l, Xt ) = ~ cp(XJ, Xn),


i = l.n j = l ,n
(x,, ~·, ) E .1l (l'J, x ,.) E A

Demonstraţie. Cum avem relaţia evidentă w- (xJ = (v+(x,.) = f/J, deducem că:
~ f ~ <p(Xt, .'t;) - ~ ? (XJ. X 11 ) ) =
XJ E V (a·;, X; ) E <U- (o·, ) ( Xj, l'!.J E w+ (x J)

~ cp(Xt, x,.) - ~ 'P(x 1, XJ) = O,


(x; , a·,.) E w- (.r n) (x,,a·, ) E w- (x 1)

ceea ce demonstrează afirmaţia.


Valoarea:
ci> = ~ cp(x ,, .1'n ) = ,l: -:p(x 1, X J)
(x ~ , .rn 1 E l.J-(l·t,) (.:ri,Xj ) '2 w+(x,)

se numeşte ,.Yaloare total ă" a fluxului cp : A -> n .


Propoziţia. 2. Fie G = (X, A, p) o refea de transport, Şl fie Y C X o
submulţime cu proprielăfile :
- pentru sursa xt a lui G auem .T 1 fi/= Y;
- pentru destinaţia x" a lui G avem Xn e Y:
Atunci, pentru orice flux cp : A -> n+ avem :
cj> = ~ cp(Xt, XJ) - ~ <p(Xt, XJ) ~ C[w- (1' )].
(.r, , .1:1) E w-(Y) (.1:t ,XJ ) E co+(Y )

Demonstraţie : avem
~ <p(X ;, .'I:J) - ~ <p (Xt, XJ) = ~ f ~ cp(Xt, X A·) -
(x r, x ; ) E w-(Y) (a·, ,o';) E w+( \ ' ) ,., E Y (x,, >'t) E w-(xd

~ cp(.l: ,,., XJ)) = ~ ( ~ :p(.l:t, x,.)- ~ ?(Xk, XJ)) -


(x, , XJ ) E o.+ ; .l't ) x,. E l' (X;, Xt ) E <U-(x.) (.r,., x ; ) E w+ (.~A')

~ f ~ cp(X;, :rh) - ~ cp(.rh, .1'j)) = ~ q;(.T1, Xt) = $,


Xh E V /1 ' (a·.,,tl E w - (x,, ) (Xh, x ; ) E w+ (x•) (:r., x 1) E co""(l· ,)

ceea ce demon strează egalitatea, inlrucîL


cj> = ~ cp(Xt, XJ) - ~ cp(Xt, X; ) ~
(Xi , X 1 ) E w-(1' ) (.1'; , J';) E w+ (Y)

~ ~ cp(.t·;, XJ) ~ ~ p(Xt, l :J) = C (w- (Y)).


(Xt , l'J) E w-(l') (XI, Xj ) E o>-( }')

Pentru simplificare vom considera că toate capacităţile sînt nu mere


raţionale sau, întrucît numărul total de arce este finit, chiar numere nat urale.
Pe baza consideraţiunilor precedente, se deduce următorul algoritm
(Ij'ord-Fulkers<{!l) pentru determinarea fluxului maxim într-o reţea de tra ns-
port: •
1. Se construieşte un flux iniţial oarecare, cp0 : A -> N; se poate lu a chiar
cp0(Xt, x,) = O, (V) (x t, x,) e A, dar interesul este de a dispune de la început
de un flux care să asigure cît mai multe arce saturate.

112
2. Utilizînd operaţiile de marcare ce vor fi prezentate ulterior, se cer-
cetează dacă fluxul iniţial <p0 este maxim : operaţiunile de marcare constau
în · următoarele :
a. marcăm sursa x 1 a reţelei cu semnul "+" ;
b. vîrfurile x 1 e w+(x1 ) sînt marcate cu "+x1 ", dacă arcul (x1 , x 1) este
nesaturat;
e. dacă vîrful x, este deja marcat, şi dacă pentru un vîrf X.~: e w+(x1)
arcul (x 1, xk) este nesaturat, atunci marcăm vîrful X.~: prin "+x/' ;
d. dacă vîrful x 1 este deja marcat, şi dacă pentru un vîrf X.t e w-(x 1)
arcul (xk, x 1) are flux nenul, marcăm vîrful x" prin "-x/'.
In urma terminării operaţiei de marcare, se pot prezenta următoarele
situaţii :
- dacă nu s-a marcat destinaţia Xn a reţelei, atunci fluxul este maxim
şi aplicarea algoritmului se termină ;
- dacă s-a marcat destinaţia Xn, fluxul nu este maxim, şi se va trece
la majorarea fluxului prin aplicarea următoarelor proceduri :
a. se alege un drum "d" de la x1 Ia Xn ;
b. pe arcele drumului marcat cu "+", fluxul se majorează (de
exemplu, cu o unitate) ;
c. pe arcele drumului marcat cu " -", ~luxul se micşorează (de
exemp lu, cu o unitate) ;
d. flu~ul arcelor de pe drumurile nemarcate nu se schimbă;
e. se revine la pasul 2.
Justificarea algoritmului este bazată pe următoarele:
Propoziţia 3. Pentru o refea de transport G = (X, A, p), p: A -+ N
algoritmul Ford-Fulkerson se termină după un număr finit de paşi : fluxul
maxim cp se atinge cînd nu mai ·poate fi marcată destinaţia Xn a reţelei.
Demonstratie. Pentru orice Y C X cu proprietăţile x1 fi/= y, x" e Y ştim
că valoarea <I> a oricărui flu x t? verifică

A A
Aşadar, pentru valoarea <I> a fluxului maxim cp avem de asemenea

Fie Y = fx,. } ; atu nci


"
<I> ~ c[w-(:t:n)] = 2:; p(x1, Xn) = K.
(>·,, Xn)E w - (xn)

Cum la fiecare ap li care a paşilor algoritmului flu xu l creşte cu cel puţin


o unitate, deducem că sînt posibile cel mult K aplicări ale algoritmului.
Fie acum Y mulpmea vîrfurilor ce nu pot fi marcate: aYem evident
xl fi/= Y, Xn E y .

Pentru orice arc (x1, x ,) e w- (Y) avem cp(.'t:;, x 1) = PtJ. deoarece în cazul
contrar, cp(xt, XJ) < fJ iJ, s-ar putea marca şi vîrful x 1. În mod asemănător.
dacă am avea (x ,, x 1) e w+(Y), atunci cp(X;, x 1) = O. În final,

<f> = 2:; cp(Xt, XJ) - 2:; <p(Xt, Xt) = 2:; p(Xt, x 1) = c[w-(g)}
(x,, :r1)e w-(Y)
.
deci fluxul <I> este maxim, iar
(XI, XJ)E wi(Y)

tăietura
(:r1, :r1) ew-(Y)

w-(Y) are capacitate minimă.

8 - Ma temati c! aplicate, voi. Il - cel. 229 113


Exemplul 4. Se consid eră reţra ua de
transport din figura 4, în care nume-
rele din afara parantezelor reprezintă ca-
pacităţile arcelor, iar numerele din inte-
rior, . Yalorile unui flux i niţia l care nu
saturează nici un arc. Se execu tă u rmă ­
tom·ele majorări a le fluxului iniţial :
- folosind drumul d1 = (x,, :r2, x 4 , X5 ),
Fig. 4 fluxul se poate majora cu va lo.a rea minim
(40-20, 15-{i, 22- 16)=6;
pe arcele acestui drum, fluxurile devin cp 12 = 26; cp24 = 12 ; cp 4.:; = 22;
folosind drumu l d 2 = (xl> x 2 , x5 ), m aj orăm flu xu l cu cantitatea minim
(40 - 26 ; 8 - 6) = 2 ;
pe arcele acestui drum, flu xurile devin 9 12 = 28, 9 25 = 8;
folosi nd drum ul d 3· = (x1 , x 2 , x 3 , x5 ), fluxul se poate majora cu valoarea
minim (40 - 28; 12 - 8, 18 - 8) = 4; .
p e arcele acestui d rum, fluxurile devin cp 23 = 12, '? 1" = 12;
folosind drumul d4 = (x 1 , x 3 , x5 ), fluxul se p oate majora cu valoarea
minim (18 - 10, 18 - 12) = 6;
- pe arcele acestui drum, flu xurile devin cp13 = 16, '?:P = 18;
1ntrucît orice drum între x 1 şi x 5 conţine acum· cel puţin un arc saturat,
se trece la marcare : astfel, primesc marcări următoare l e :
vîrful x 2 primeşte marcarea ,;+x1 ".;
vîrful x3 primeşte marcarea "+x1 " ;
vîrful x 4 primeşte ma.rcarea "+x 2 " şi "+x3 ";
vîrful x5 nu primeşte nici o marcare.
Aşadar, fluxul fina l construit este m axim, iar valoarea lui totală este
de 48.

§ 6. Problema arborelui de valoare minimă


Algoritmul Kruskal
Definiţia 1. Un graf neorientat finit se numeşte~. dacă este conex_,şi
nu are cicluri.
Următoarele proprietăţi ale unui arbore sînt evidente:

Propoziţia 1. Un arbore G are următoarele proprietăţi :


a. între orice două virfuri există un singur lan ţ ;
b. graful obţinut din G prin suprimarea oricărei muchii este n econex;
e. graful obţinut din G prin adăugarea unei muchii între do uă vîrfuri
oarecare conţine cel puţin un ciclu ;
d. un arbore avînd "n" vîrfuri, conţine cel puţin două destinaţii, dacă
n;;.:: 2; ·
c. un arbore avînd " n" vîrfuri are n - 1 muchii.
Demonstraţii
a. dacă între două vîrfuri Xt şi XJ nu ar exista nici un lanţ, graful nu
ar fi conex, ceea ce ar contrazice definiţia arborelui; în ceea ce priveşte
unicitatea, dacă între vîrfurile x, şi XJ ar exista două lanţuri, atunci rezultă
u n ciclu obţinut prin reuniunea celor două lanţu ri, ceea ce este imposibil ;

114
b. vom proceda prin reducere la absurd : să presupunem că prin supri-
marea muchiei [xî, x,], graful parţial G1 rezultat ar fi conex, deci că între
x 1 şi x 1 ar exista un lanţ d în G1 . Atunci, prin completarea lanţului d cu muchia
[x 1, x 1] s-ar obţine un ciclu în graful iniţial G, ceea ce ar contrazice definiţia
arborelui;
e. fie G = (X, A) un arbore pentru care [xt, x,] .;tA : să presupunem că
graful Gz obţinut păstrînd vîrfurile şi adăugînd muchia [x1, x1] la mulţimea A
de muchii iniţiale nu ar conţine cicluri; dar cum in G există deja un lanţ d
intre x 1 şi x" reunind lanţul d cu muchia [x,, x,] se va obţine un ciclu în Gz;
d. presupunem că ar exista un arbore G = (X, A) avînd "n" vîrfuri
(n ~ 2), care ar avea cel mult o destinaţie ; fie d = (x1 , x 2 , ••• , x,.) un lanţ
elementar maxim în G. Atunci x 1 are gra'dul cel puţin egal cu 2, deci este
adiacent cu altul dintre vîrfurile lui d, ceea ce face să apară în G un ciclu ;
e. vom proceda prin inducţie după "n", n ~ 2 ; în cazul n = 2, arbo-
rele este format dintr-o singură muchie care uneşte cele două vîrfuri, deci
afirmaţia este adeYărată.
Presupunem că orice arbore cu "m" vîrfuri are m - 1 muchii.
Pen Lru un arbore G1 cu m + 1 vîrfuri, există cel puţin un vîrf terminal x0 •
Suprimîndu-1 pe :1·0 împreună . cu muchia incidentă lui, din G1 se obţine un
graf cu " m'' Yirfuri, care nu conţine cicluri. Să arătăm că G astfel o bţinut
es le şi el conex: fie x 1 , :r2 - două vîrfuri oarecare din G, diferite de x 0 • Atunci
in G1 exis lă llll )anţ d, adnd extremităţile X1 Şi Xz, lanţ care nu trece prin x 0
şi ca re este l a nţ ş i in graful G, deci G1 este conex, adică este arbore.

Definit-ia 2. Un graf parţial S al grafului G, cu proprietatea cel S este


arbore, se n urneşte "arbore parţial" al grafului G.
Propozit-ia 2. Un graf este conex, dacă şi · numai dacă admite un arbore
parjial.
Demonstraţie. Condiţia este în mod evident necesară : în ceea ce priveşte
suficienţa, observăm că dacă G nu este el însuşi un arbore, atunci în G există
cel puţin o muchie [x t, x 1J, care prin suprimare conduce la un graf parţial G1
conex. Dacă G1 devine un arbore, atunci demonstraţia se termină ; în caz
contrar, din . G1 se·poate suprima o muchie, obţinîndu-se un graf G2 conex etc.
Problema pe care dorim să o rezolvăm acum este următoarea: fiind
dat un graf G neorienLat, conex şi valuat, ne propunem să extragem din G
un arbore parţial pentru care suma valorilor muchiilor să fie minimă .
Pentru simplificare, vom presupune întîi că între orice două vîrfuri
ale grafului G există cite o muchie, şi că toate valorile muchiilor sînt dife-
rite două eîle două. Fie X = (a 1 , a 2 , ••• , a".), unde valoarea muchiei a 1
este notală cu p(a ,) = Pl· Vom presupune că p 1 < p 2 < ... < P•n· Alg2:
ritmul (Kruskal) de determinare a arborelui minimal constă în următoarele:
1. se alege muchia a 1 de valoare minimă;
2. se ~lege muchia az de Yaloare minimă rămasă ;
3. fie S = {a1, Uz};
4. dacă ră.spunsul nu este cumva dat la punctul precedent, se alege
muchia de Yaloare minimă din .·1""
S, care nu formează cicluri cu muchiile
lui S; fie a, această muchie ;
5. înlocuim S cu S U {ar} şi reYenim la pasul 4.

115
E:r:emplul 5. Fie graful neorienlat Ya-
luat din figura 5: ne propunem să det ermi-
năm arborele minimal co respu nzător.
a. muchia de valoare minimă este
[x 2, x 5 ] ;
h. selectăm muchia [x2 , :r~] care are
Yaloare minimă dintre muchiţ\e rămase;
c. muchia [x4 , x5 ] avînd următoarea
Yaloare în ordinea crescătoare a mărimilor
trebuie omisă deoarece formează un ciclu
cu precedentele două, deci acum vo m se-
Fig. 5 lecta muchia [x4 , x3] de Yaloare 4 ;
~ d. muchia [x 2 , x3 ] d e valoare 5 urmă-
toare formează ciclu cu precedentele trei, deci la această etapă selectă m
muchia [.r1 , :r2 ] de valoare 6 ; intrucit am acoperit toate Yirfu rile graful ui
dat, a lgoritmu l se opreşte aici: a rborele minimal obpnut arc va loare
to ta lă de 13.
De observat că pretenţ i a ca între orice două \'Îrfuri să existe o muchie
este nee~enţială : dacă există ş i muc hii de Ya lori egale, este posibil ca problema
să admită mai multe solu ţ ii.

§ 7. Aplicarea problemei drumului optim in probleme


de organizare : metoda drumului critic
În scm·tele consideraţiu ni prezentate mai j os, vom numi "program"
o mulţime precizată de operaţii care condu c la realizarea unu i obiectiv eco-
nomic, de exemplu, realizarea unei construcţii, efectuarea unui proces teh-
nologic, etc., în care ordinea exec utării etapelor componente este mai mult
sau · mai puţin lăsată la lati tud inea organizatorului activităţii. Între unele
etape prevăz ute a fi realizate se poate totuşi întîmpla să existe relaţii de
precede nţă obligatorii (de exemplu, cazul în care una dintre o peraţii preia
produsul realizat în cadrul operaţiei anterioare precizate). U n astfel de plan
de activităţi poate fi reprezentat printr-un graf,' numit .,graf de progr..1m"
sau .. graf de ordona n ţare"; arcele acestui graf corespund tocmai operaţii l or
ce se vor executa, ia r valorile ce se trec pe arce sînt tocmai du ratele proiec-
tate de execuţ ie corespunzătoare. Vîrfurile acestui graf au un rol mai mult
conYenţ ional, reprezentînd, de exemp lu, evenimentul term ină rii operaţiei
reprezentată prin a rcul ce se termină în acel v îrf. :Qe a ltfel, v îrfurile grafufui
de ordonanţare se şi numesc "evenimente", şi le vom nota prin E 1, E 2 , ••. ~ En.
Scopul studiului este stabilirea datei realizării întregului ansamblu de
operaţii. Acest timp total nu poate fi inferior sumei timpilor cei mai nefa-
Yorabili dintre toate combinaţiile de la E 1 la E,., adi că tocmai Yalorii drumului
maxim de la E 1 la E,. în graful de ordonanţare. Acest drum se va numi "drum
critic", iar valoarea sa va fi notată prin t+. .
În raport cu drumul critic, evenimentele E 1 , ••. , E,. se împart în două
categorii, şi anume : . .
- evenimentele care aparţin <lrumului critic, numite "evenimente cri-
tice": ele trehuiesc realizate la momentui precis dat de valoarea drumu lui
maxim de la E 1 pînă la fiecare eveniment critic în parte;
- evenimentele care nu aparţin drumului critic, numite .,evenimente
necritice".

116

L
:J.- Evenimentele necritice permit anumite întîrzieri în execuţie, dar între
IÎ- limite ce pot fi determinate exact. Fie astfel E , un eveniment necritic: de-
t erminînd valoarea drumului maxim (deci cel mai nefavorabil) de la Et la E,.,
te ne asigurăm că toate operaţiile care urmează lui E, Yor putea fi efectiv rea-
lizate. Aşadar, pentru fiecare eveniment ne critic E, se pot determina două
mă rimi:
- valoarea t;, reprezentînd lungimea drumului maxim de la E 1 la Et;
aceas tă valoare reprezintă data cea mai apropiată în care trebuie terminată
)T operapunea co respunzătoare lui E,; ·
u - valoarea t;·, reprezentînd diferenţa dintre valoarea t + şi valoarea
dru mului maxim de la E; la E".
Intervalul [1;, ( ] se numeşte "interval de fluctuaţie " al evenimentului E,
necritic, reprezentînd momentul terminării acestuia, care nu perturbă des-
făş u rarea ce lorla lte eYenimente .

..
[

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