Sunteți pe pagina 1din 13

Lucrarea 8. Aplicaii ale teoriei grafurilor la rezolvarea problemelor de transport 8.

1 Generaliti Aplicnd teoria grafurilor se pot rezolva o multitudine de probleme care implic reele de transport ca de exemplu: - problema comis voiajorului; - problema drumului de cost minim; - problema fluxului maxim; - problema arborelui de valoare optim; - probleme de afectare. 8.1.1. Drumuri de valoare optim ntr-un graf Probleme de transport ca: lungimea drumului minim dintre dou localiti, costul parcurgerii unei rute, capacitatea transportat pe o rut au ca rezolvare optimizarea drumurilor ntr-un graf. Din cauza varietii nelimitate, n general, a grafurilor, nu exist un algoritm care s rezolve orice problem n timp util, dar s-au elaborat o mulime de algoritmi, fiecare fiind cel mai eficace pentru anumite cazuri. A. Algoritmul Bellman Kalaba Algoritmul se aplic n cazul unor grafuri finite fr circuite de valoare negativ (pentru problema de minim) sau fr circuite de valoare pozitiv (pentru problema de maxim) i gsete drumurile de valoare minim (maxim) de la toate nodurile grafului la un nod oarecare, fixat. Dac se dorete determinarea drumurilor de valoare minim (maxim) ntre oricare dou noduri se aplic algoritmul, pe rnd, pentru fiecare nod al grafului. Formularea problemei este urmtoarea: fiind dat un graf valuat G = (X, A, p) i un vrf fixat xn X se cere s se determine drumul d de la un vrf oarecare x i la vrful xn pentru care valoarea drumului, p(d) s fie minim. Algoritmul care rezolv aceast problem folosete urmtoarele noiuni i propoziii (care nu vor fi demonstrate); - matricea extins a valorilor arcelor, V = vij unde:
0, v ij = pij , , pentru i = j pentru (x i,x j ) A pentru i ji (x ,x ) i j A

(8.1)

- mi(k) valoarea minim a drumului d de la xi la xh considerat n mulimea drumurilor de cel mult k arce;

- mi valoarea minim a drumului de la x i la xh considerat n mulimea tuturor drumurilor, indiferent de numrul de arce. Propoziia 1: Pentru orice k N*:
+1) ) m(k = min v ij + m(k i j j=1,n

(8.2)

Propoziia 2: Dac exist k N* pentru care mi(k) = mi(k+1 ) pentru orice i = 1,n , atunci:
) = m(s) a) m(k i i , ( )i = 1,n,()s k + 1 ) = mi , ()i = 1,n b) m(k i

(8.3) (8.4)

Din cele de mai sus rezult urmtorul algoritm pentru determinarea vectorului
mi
i=1,n

: 1. Se construiete matricea V pentru graful dat.


(1) (2) (n) 2. Se adaug matricei V liniile suplimentare mi , mi ,..., mi , astfel: (1) a. Linia mi coincide cu v jn (1) , adic mi = v jn j =1,n ) m(k i T j=1,n

;
+1) m(k i i=1,n

b. Presupunnd completat linia conform propoziiei 1;

i=1,n

se completeaz linia

(k ) c. Se continu aplicarea pasului 2. b pn la obinerea a dou linii mi +1) m(k i

i=1,n

i=1,n

identice.
i=1,n

(k +1) 3. Se adun linia i din V cu linia mi

urmrindu-se rezultatul minim care (8.5)

se poate obine; s presupunem c acesta este:


+1) m(k = v ij + mi(k ) i

atunci primul arc din drumul minim de la xi la xn este (xi, xj); n continuare se adun
(k +1) linia j din V cu mi i=1,n

reinnd noua valoare minim aflat pe coloana k al

doilea arc este (xj, xk) .a.m.d. Observaie: n cazul rezolvrii unei probleme de maxim algoritmul se modific astfel: - relaia (8.1) devine:
0, v ij = pij , , pentru i = j pentru (x i,x j ) A pentru i j si (x i,x j ) A

(8.1)

- relaia (8.2) devine:


+1) ) m(k = max v ij + m(k i j j=1,n

(8.2)

Observaie: Pentru rezolvarea aceleiai probleme mai este cunoscut algoritmul lui Ford generalizat i Ford simplificat. De asemenea sunt accesibile pachete de programe ca de exemplu AB/QM sau WINQSB care rezolv astfel de probleme.

Exemplul 1. n graful din figura 8.1 nodurile X = { x1, x 2 ,x 3 , x 4 , x 5 } reprezint 5 localiti iar valorile arcelor - costul transportului unei mrfi ntre localitile respective. Se cere determinarea rutei pentru care costul transportului de la x1 la x5 s fie minim.
X2 2 8 3 2 X
4

9 X
3

2 1 2 1 1 0 X
5

X
1

Figura 8.1. Graful transporturilor de marf ntre 5 localiti Primii doi pai ai algoritmului Kruskal au fost aplicai pentru completarea tabelului 8.1. Tabelul 8.1. Realizarea tabelului pentru rezolvarea algoritmului Kruskal drum de valoare minim X1 X2 X3 X4 X5 X1 0 2 8 2 X2 0 12 2 X3 9 0 3 1 X4 0 10 X5 0 (1) mi 2 1 10 0 (2) mi 4 2 1 10 0 (3) mi 4 2 1 10 0 Pasul 3. La aceast etap aplicarea algoritmului conduce cu uurin la determinarea drumului de valoare minim format din arcele (x1, x2) i (x2, x5) Acelai rezultat se obine i prin scrierea i rularea modelului folosind modulul Network Modeling/Shortest Path Problem din pachetul de programe WINQSB aa cum se poate uor urmrii n imaginile din figura 8.2. Exemplul 2. Considernd acelai graf din figura 8.1, n care nodurile reprezint staiile de ncrcare ale unei reele de transport iar valorile arcelor capacitile de transport ntre staii, se pune problema determinrii drumului de capacitate maxim de la staia x1 la staia x5.

a. fereastra iniial pentru introducerea datelor sub form tabelar

b. fereastra secundar pentru stabilirea nodurilor, iniial i final

c. soluia complex a problemei sub form tabelar

d. drumul de valoare minim sub form tabelar Figura 8.2. Rezolvarea problemei folosind modulul Network Modeling/Shortest Path Problem din pachetul de programe WINQSB Tabelul 8.2. Realizarea tabelului pentru drum de valoare maxim X1 X2 X3 X1 0 2 8 X2 - 0 - X3 - 9 0 X4 - - - X5 - - - (1) mi - 2 1 (2) mi 12 22 13 (3) mi 24 22 31 (4) mi 39 22 31 (5) mi 39 22 31 rezolvarea algoritmului Kruskal X4 2 12 3 0 - 10 10 10 10 10 X5 - 2 1 10 0 0 0 0 0 0

Paii 1 i 2 ai algoritmului au condus la datele din tabelul 8.3 iar aplicarea pasului 3 conduce la drumul de valoare maxim: d = {(x1, x3), (x3, x2), (x2, x4), (x4, x5)} 8.1.2. Arbori de valoare optim Studiul arborilor este justificat de existena n practic a unui numr mare de probleme care pot fi modelate astfel, ca de exemplu: - construirea unor reele de aprovizionare (ap, energie, gaze etc.) a unor puncte de consum de la un punct central; - construirea unor ci de acces (comunicaie) ntre mai multe puncte izolate; - desfurarea unui joc strategic; - luarea deciziilor n mai multe etape (arbori decizionali); - organigramele ntreprinderilor. n toate aceste probleme se dorete ca, dintre muchiile unui graf valuat neorientat, s se extrag arborele optim (minim/maxim). 8.1.3. Algoritmul Kruskal Problema pe care o rezolv acest algoritm este urmtoarea: fiind dat un graf G neorientat, conex i valuat se urmrete extragerea din G a unui arbore parial pentru care suma valorilor muchiilor s fie minim. Pentru simplificare se presupune, iniial c ntre oricare dou vrfuri ale grafului G exist o muchie i c toate valorile muchiilor sunt diferite dou cte dou. Fie A = {a1, a2,..., am} iar valoarea muchiei aj este p (aj) = pj. Vom presupune c p1 < p2 <... < pm. La aceast situaie se poate ajunge prin renumerotarea nodurilor i a muchiilor. Algoritmul Kruskal pentru determinarea arborelui minimal are urmtorii pai: 1. Se alege muchia a1 de valoare minim 2. Se alege muchia a2 de valoare minim din mulimea muchiilor rmase 3. Fie S = {a1, a2} 4. Dintre muchiile rmase se alege muchia de valoare minim care nu formeaz cicluri cu muchiile din S. Dac nu exist o muchie a r atunci algoritmul se ncheie i soluia problemei este S. Dac exist o muchie a r se trece la pasul urmtor 5. Se stabilete noua valoare a lui S = S U {ar } i se reia algoritmul de la pasul 4 pn cnd se ating toate vrfurile grafului Observaie Pentru probleme de maxim n algoritm se nlocuiete minim cu maxim.

Exemplul 3. Pentru graful neorientat valuat din figura 8.3, care reprezint a reea de distribuie iar valorile arcelor costul transportului, se cere determinarea arborelui minimal. Pentru aplicarea algoritmului se face o re-notare a mulimii arcelor astfel:
A = X x X = { a1 = ( x 2 , x 5 ) ,a2 = ( x 2 , x 4 ) ,a 3 = ( x 3 , x 4 ) ,a 4 = ( x 2 , x 2 ) ,a 5 = ( x1, x 3 ) ,...}
X

6 1
X
1

5 2
X
3

8 9
X
5

7 3

4
X
4

Figura 8.3. Exemplu de graf neorientat valuat Aplicarea algoritmului conduce cu uurin la arborele minimal

S ={ a1, a 2 ,a3 , a 4 } de valoare p(S) = 13.

Acelai rezultat se obine i prin scrierea i rularea modelului folosind modulul Network Modeling/Minimal Spaning Tree Problem din pachetul de programe WINQSB aa cum se poate uor urmrii n imaginile urmtoare.

a. fereastra iniial pentru introducerea datelor sub form tabelar

b. soluia problemei sub form tabelar Figura 8.4. Rezolvarea problemei folosind modulul Network Modeling/Minimal Spaning Tree Problem din pachetul de programe WINQSB 8.1.3. Flux maxim ntr-o reea de transport Un graf orientat valuat G = (X, U, c) se numete reea de transport dac satisface urmtoarele condiii: a. exist un vrf unic a X n care nu intr nici un arc sau -(a) = unde -(a) este mulimea arcelor care intr n vrful a; b. exist un vrf unic b X din care nu iese nici un arc, sau +(b) = unde +(b) este mulimea arcelor care ies din b;

c. G este conex i exist drumuri de la a la b. Vrful a se numete intrarea reelei, vrful b - ieirea reelei, iar numrul nenegativ c(u) se numete capacitatea arcului u U. Definiie O funcie f: U R, astfel nct f(u) 0, () uU se numete flux n reeaua de transport G cu capacitatea c, dac sunt ndeplinite condiiile: C. condiia de conservare a fluxului: Pentru () xX cu x a, x b, suma fluxurilor pe arcele care intr n x este egal cu suma fluxurilor pe arcele care ies din x, adic:
u ( x)

f(u) =

u+ ( x )

f(u), () x X

{ a,b}

(8.6)

M. condiia de mrginire a fluxului: Pentru orice arc al reelei, valoarea fluxului nu poate depi capacitatea arcului respectiv: f(u) c(u), () u U (8.7) Exemplul 4. Se d mulimea nodurilor:

X = { a, 1, 2, 3, 4, 5, 6, b} , i cea a arcelor: u8 = ( 2,6 ) , u9 = ( 4,5 ) , u10 = ( 4,5 ) , u11 = ( 5,6 ) ,u12 = ( 4,b ) , u13 = ( 5,b ) , u14 = ( 6,b ) }

U = { u1 = ( a,1) , u2 = ( a,2 ) , u3 = ( 1,3 ) , u4 = ( 2,3 ) , u5 = ( 1,4 ) , u6 = ( 3,4 ) , u7 = ( 3,5 ) ,

u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 8 1 6 4 5 5 4 3

c(u 10 8 7 2 5 2 3 4 3 1 ) f(u) 8 4 3 2 5 2 3 2 3 0
5 (5) 1 8 (10) a 4 (8) 3 (7) 2 (2) 2 3 3 (3) 2 (2)

4 3 (3) 0 (1)

4 (6) 5 (5) 5 b 3 (4)

1(8) 6

2 (4)

Figura 8.5. Exemplu de graf orientat valuat Definiie: Pentru orice mulime de vrfuri A X se definete o tietur de suport A prin mulimea arcelor care intr n mulimea A i se noteaz:
(A) = { (x,y) x A,y A,(x,y) U}

(8.8)

Similar se definete mulimea arcelor care ies din A:

+ (A) = { (x,y) x A,y A,(x,y) U}

(8.9)

Capacitatea tieturii de suport A, -(A), se noteaz cu c(-(A)) i este egal cu suma capacitilor arcelor care fac parte din tietura considerat:
c (A) =

u ( A )

c(u)

(8.10)

n problemele de determinare a fluxului maxim ntr-o reea de transport se lucreaz cu tieturi care conin <ieirea reelei> (b) i nu conin <intrarea reelei> (a).
8 (10) a 4 (8) 2 2 (2) 2 (4) 1 3 (7) 3 5 (5) 2 (2) 3 (3) 3 (3) 4 0 (1) 5 1(8) 6 4 (6) 5 (5) 3 (4) b

Figura 8.6. Exemplu de graf orientat valuat Exemplul 5. Se dau nodurile din tietura suport: A = {3,4,5,b}, mulimea arcelor care intr n tietura suport: -(A) = {(1,4), (1,3), (2,3), (6,b)} i mulimea arcelor care ies din tietura suport: +(A) = {(5,6)}. Rezolvare: innd cont de datele iniiale rezult capacitatea tieturii suport: c(-(A)) = 5 + 7 + 2 + 4 = 18. Teorema 1. Fiind dat o reea de transport cu intrarea a i ieirea b i un flux f, are loc egalitatea:
u+ (a)

f(u) =

u (b)

f(u) = fb

(8.11)

unde fb este fluxul la ieirea reelei. Teorema, care arat c fluxul la intrarea n reea este egal cu cel de la ieirea din reea, se demonstreaz, evident, innd seama de condiia conservrii fluxului. Teorema 2. Pentru o reea de transport G = (X,U,c) cu intrarea a i ieirea b i un flux f:
fb =
u ( A )

f(u)

u+ ( A )

f(u) c (A)

(8.12)

unde A X, a A, b A. Aceast teorem arat c fluxul la ieirea din reeaua de transport este egal cu suma fluxurilor tieturii de suport A minus suma fluxurilor pe arcele care ies din

mulimea A de vrfuri i este mai mic cel mult egal cu capacitatea tieturii de suport A. Exemplul 6. Pentru graful din figura 8.5. s se calculeze fluxul la ieirea din reeaua de transport. Rezolvare:
fb =
u ( A )

f(u)

u ( A )

f(u) = (5 + 3 + 2 + 3) (1) = 12 c (A) = 18

Algoritmul pentru determinarea fluxului maxim la ieirea dintr-o reea de transport (Ford-Fulkerson) este urmtorul: Pasul 1. Se pleac de la un flux iniial care verific condiiile de conservare n fiecare vrf i de mrginire pe fiecare arc (de exemplu de la fluxul avnd componente nule pe fiecare arc al reelei). Pasul 2. Se determin lanurile nesaturate de la a la b (lanurile pe care fluxul poate fi mrit). Se utilizeaz pentru aceasta urmtorul procedeu de etichetare: a) Se marcheaz intrarea a cu +; b) Un vrf x fiind marcat, se va marca: - cu +x oricare vrf y nemarcat cu proprietatea c arcul u = (x,y) este nesaturat, adic f(u) < c(u); - cu x oricare vrf y nemarcat cu proprietatea c arcul u = (y,x) are flux nenul, adic f(u) > 0; Dac prin acest procedeu de marcare se eticheteaz ieirea b, atunci fluxul fb obinut la pasul curent nu este maxim i se trece la pasul 3. Dac nu se mai poate marca ieirea b, atunci fluxul obinut este maxim i problema este rezolvat: STOP. Pasul 3. Se va considera un lan format din vrfuri etichetate (ale cror etichete au semnele + sau -) care unete a cu b (care poate fi uor de gsit dac se urmresc etichetele vrfurilor n sensul de la b ctre a). Fie v acest lan. Se noteaz cu v+ mulimea arcelor (x,y) ale lui v unde marcajul lui y are semnul +, deci care sunt orientate n sensul de la a ctre b i cu v - mulimea arcelor (x,y) ale lui v, unde marcajul lui x are semnul -, deci care sunt orientate n sensul de la b ctre a. Se calculeaz:
1 = min [ c(u) f(u)] +
uv

2 = min f(u)
uv

(8.13)

= min(1, 2 )

Din modul de etichetare rezult > 0. Se va mrii cu fluxul pe fiecare arc u v+ i se va micora cu fluxul pe fiecare arc cu u v-, obinnd la ieire un flux mrit cu . Se revine la pasul 2. Teorema 3. Algoritmul Ford-Fulkerson are un numr finit de pai pentru orice reea de transport cu capaciti numere ntregi. n momentul n care prin procedeul

de etichetare nu se mai poate eticheta ieirea reelei se obine fluxul maxim n reea. Mulimea arcelor care unesc vrfurile etichetate cu cele la care nu s-a mai putut continua etichetarea formeaz o tietur de capacitate minim. Corolar. Pentru orice reea de transport valoarea maxim a fluxului la ieire este egal cu capacitatea minim a unei tieturi de suport A, cu b A. Exemplul 7. Pentru acelai graf din figura 8.5. v = {a,2,6,b} v+ = {(a,2), (2,6), (6,b)} v- = 1 = minuv +{c(u) f(u)} = min {4,2,1} = 1
1 + a 4 (8) 2 + a 2 (2) 8 (10) 3 (7) 3 5 (5) 2 (2) 4 3 (3) 0 (1) 5 1(8) 5 (5) 3 (4) b 4 (6) + 6

3 (3)

2 (4)

6 + 2

Figura 8.7. Graful reelei de transport

Se majoreaz cu 1 fluxurile pe toate arcele care aparin mulimii v+.


5 (5) 1 8 (10) + a 5 (8) 2 + a 3 (7) 2 (2) 3 (4) 2 (2) 3 4 3 (3) + 5 0 (1) 5 1(8) 6 + 2 -6 4 (4) 4 (6) 5 (5) b

+ 4

3 (3)

Figura 8.8. Graful reelei de transport cu fluxurile mulimii v+ majorate cu 1 v = {a,2,6,5,4,b} v+ = {(a,2), (2,6), (5,4), (4,b)} v- = {(5,6)} 1 = minuv+ [c(u) f(u)] = min {3,1,1,2} = 1 2 = min uv- [f(u)] = 1

= min (1, 2) = 1 Se majoreaz cu 1 fluxurile pe arcele care aparin mulimii v + i se micoreaz cu 1 fluxurile pe arcele care aparin mulimii v-. Algoritmul ia sfrit deoarece nu se mai poate eticheta ieirea b. Conform teoremei 3, s-a obinut fluxul maxim la ieirea din reea fb = 14. Se observ c mulimea vrfurilor neetichetate determin o tietur de capacitate minim, egal chiar cu fluxul maxim din reea.
+ a 8 (10) a 6 (8) 2 + a 2 (2) 5 (5) 1 3 (7) 3 + 1 4 (4) 2 (2) 4 3 (3) 3 (3) 0(8) 6 1 (1) 5 5 (6) 5 (5) 4 (4) b

Figura 8.9. Graful reelei de transport cu fluxurile mulimii v+ majorate cu 1 i cu cele ale mulimii v- micorate cu 1 Problema de transport Se pune problema maximizrii cantitii totale de marf care poate fi transportat de la depozitele D1, D2,..., Dm, n care se gsesc cantitile a1, a2,..., am, ctre consumatorii C1, C2,..., Cn, care au necesarul b1, b2,..., bn cunoscndu-se capacitile maxime de transport, cij, pe fiecare rut (de la depozitul D i la consumatorul Cj). Aceasta este o problem de flux maxim n reeaua de transport G = (X,U,c), unde:
X = { a,D1,D2 ,...,Dm ,C1,C 2,...,Cn }
U = ( a,Di ) i=1,2,...,m , C j ,b

(8.14)

j=1,2,...,n

, Di ,C j

i=1,2,...,m j =1,2,...,n

(8.15)

a ,u ( a,D ) i i=1,2,...,m i c = b j,u C j,b j=1,2,...,n c ij ,u Di ,C j i=1,2,...,m j=1,2,...,n

{(

(8.16)

n condiia de echilibru: ai b j
i =1 j =1

Exemplul 8. S se gseasc planul de transport pentru a transporta o cantitate maxim de marf de la trei depozite n care se gsesc cantitile: a 1 = 60,

a2 = 24, a3 = 36 la trei consumatori care au necesarul: b1 = 33, b2 = 19, b3 = 18, cunoscnd capacitile de transport: cij D1 D2 D3 C1 12 15 9 C2 21 18 26 C3 46 34 12

Folosind algoritmul Ford-Fulkerson se obine urmtoarea soluie pentru fluxul maxim n reeaua de transport determinat de cele 3 depozite i 3 consumatori.
D 49(60 ) a 15(24 )
1

18(46 ) D
2

12(12 ) 19(2115(15 ) )

C
1

33(33 ) 19(19 ) 18(18 ) C


1

0(18) 0(26) 0(34) 0(12)

C
2

6(36)

6(9) D
3

Figura 8.10. Graful reelei de transport cu fluxurile mulimii v+ majorate cu 1 i cu cele ale mulimii v- micorate cu 1 Aceeai valoare a fluxului maxim n reea, de 60, este obinut i cu modulul Maximal Flow Problem din pachetul WINQSB pentru care principalele ferestre sunt prezentate n figura 8.11.

a. fereastra iniial pentru introducerea datelor sub form tabelar

b. soluia complex a problemei sub form tabelar

c. drumul de valoare minim sub form grafic Figura 8.11. Rezolvarea problemei folosind modulul Maximal Flow Problem din pachetul de programe WINQSB

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