Sunteți pe pagina 1din 2

1)Grafuri notiuni generale 4.1.1.

Definiia grafului Se numete graf, ansamblul format dintr-o mulime finit X i o aplicaie F a lui X n X. Se noteaz G = (X,F). Numrul elementelor mulimii X determin ordinul grafului finit. Dac card X = n, graful G = (X,F) se numete graf finit de ordinul n. Elementele mulimii X se numesc vrfurile grafului. Geometric, vrfurile unui graf le reprezentm prin puncte sau cerculee. Perechea de vrfuri (x,y) se numete arc; vrful x se numete originea sau extremitatea iniial a arcului (x,y), iar vrful y se numete extremitatea final sau terminal. Un arc (x,y) l reprezentm geometric printr-o sgeat orientat de la vrful x la vrful y. Dac un vrf nu este extremitatea nici unui arc el se numete vrf izolat, iar dac este extremitatea a mai mult de dou arce - nod. Un arc pentru care extremitatea iniial coincide cu cea final se numete bucl. Arcele unui graf le mai notm i cu u1, u2,..., iar mulimea arcelor grafului o notm cu U. Se observ c mulimea U a tuturor arcelor unui graf determin complet aplicaia F, precum i reciproc, aplicaia F determin mulimea U a arcelor grafului. Un graf G poate fi dat fie prin ansamblul (X,F) fie prin ansamblul (X,U). Dou arce se zic adiacente dac sunt distincte i au o extremitate comun. Dou vrfuri se zic adiacente dac sunt distincte i sunt unite printr-un arc. Un arc (x,y) se spune c este incident cu vrful x spre exterior i este incident cu vrful y spre interior. Fie G = (X,F) i x X. Mulimea tuturor arcelor incidente cu x spre exterior (interior) se numete semigradul exterior (interior) a lui x i se noteaz d+x (d_x). Dac pentru un vrf x, d+x=0 sau d_x=0 atunci el se numete vrf terminal. ntr-un graf G = (X,U) se numete drum un ir de arce (u1,...,uk), astfel nct extremitatea terminal a fiecrui arc uI coincide cu extremitatea iniial a arcului urmtor ui+1. Un drum care folosete o singur dat fiecare arc al su se numete drum simplu. Un drum care trece o singur dat prin fiecare vrf al su se numete drum elementar. Lungimea unui drum este numrul de arce din care este compus drumul. Un drum elementar ce trece prin toate vrfurile grafului se numete drum hamiltonian. Un drum simplu ce conine toate arcele grafului se numete drum eulerian. Un drum finit pentru care vrful iniial coincide cu vrful terminal se numete circuit. Graful obinut din graful iniial suprimnd cel puin un vrf al acestuia precum i toate arcele incidente cu el se numete subgraf. Graful obinut suprimnd cel puin un arc se numete graf parial. Un graf se numete complet dac oricare ar fi x i y din X exist un arc de la x la y sau de la y la x. Un graf G = (X,F) se zice tare conex dac pentru orice x, y X (x diferit de y) exist un drum de la x la y sau c oricare pereche de vrfuri x, y cu x diferit de y se afl pe un circuit. Fie G = (X,F) i x X. Mulimea Cx format din toate vrfurile xi X pentru care exist un circuit ce trece prin x i xi se numete component tare conex a lui G corespunztoare vrfului x. Componentele tari conexe ale unui graf G = (X,F) constituie o partiie a lui X. Noiunile introduse sunt valabile pentru grafurile orientate. n cazul n care orientarea arcelor nu are nici o importan graful se va numi neorientat. Arcele se vor numi muchii, drumul - lan, circuitul - ciclu. La fel se introduce noiunea de lan elementar i simplu, lan Euler i hamiltonian. Graful tare conex se va numi conex. Cele dou concepte de graf orientat i graf neorientat se pot sprijini n practic unul pe altul. De la un graf orientat se poate trece la omologul su neorientat cnd se abordeaz o problem ce nu presupune orientarea i invers, dac se precizeaz orientarea. Unui graf orientat simetric i se poate asocia un graf neorientat, legtura dintre dou vrfuri x i y realizat de cele dou arce (x,y) i (y,x) de sensuri contrarii nlocuindu-se cu muchia [x,y]. De asemenea un graf neorientat poate fi identificat cu mai multe grafuri orientate nlocuind fiecare muchie cu dou arce orientate n sens opus. Fie G = (X,U) un graf neorientat i x X. Se numete gradul vrfului x numrul muchiilor care au o extremitate n vrful x. Se noteaz g(x). Un vrf este izolat dac g(x) = 0. 4.1.2. Numr cociclomatic i numr ciclomatic Fie G = (X,F) un graf neorientat cu n vrfuri, m muchii i p componente conexe. Numim numr cociclomatic asociat grafului G numrul r(G) = n p iar numrul ciclomatic numrul s(G) = m - r(G) = m - n + p. Se numete multigraf un graf neorientat n care exist perechi de vrfuri unite prin mai multe muchii. Se numete q - graf un multigraf pentru care numrul maxim de muchii ce unesc dou vrfuri este q. Teorema. Fie G = (X,U) un multigraf, iar G1 = (X,U1) un multigraf obinut din G adugnd o muchie. Dac x, y X i [x,y] este muchia care se adaug la mulimea muchiilor grafului G, atunci: (1) dac x = y sau x i y sunt unite printr-un lan r(G1) = r(G), s(G1) = s(G) + 1 (2) n caz contrar r(G1) = r(G) + 1, s(G1) = s(G). Demonstraia este evident.Consecin. Numerele cociclomatic i ciclomatic sunt nenegative. 4.1.3. Numr cromatic. Grafuri planare. Arbori Un graf G = (X,U) se zice ca este graf p-cromatic daca vrfurile lui se pot colora cu p-culori distincte astfel ca dou vrfuri adiacente s nu fie de aceeai culoare. Cel mai mic numr ntreg i pozitiv pentru care graful este p-cromatic se numete numr cromatic. Un graf se zice c este planar dac poate fi reprezentat pe un plan astfel ca dou muchii s nu aib puncte comune n afar de extremitile lor. Un graf planar determin regiuni numite fee. O fa este o regiune mrginit de muchii i care nu are n interior nici vrfuri, nici muchii. Conturul unei fee este format din muchiile care o mrginesc. Dou fee sunt adiacente dac contururile au o muchie comun. S-a demonstrat c numrul cromatic al unui graf planar este patru. Cu privire la numrul cromatic s-a demonstrat urmtoarea Teorema (Knig). Un graf este bicromatic dac i numai dac nu are cicluri de lungime impar. Se numete arbore oricare graf conex fr bucle i cicluri. Se numete arborescen un graf orientat fr circuite astfel ca s existe un vrf i numai unul care nu e precedat de nici un alt vrf (rdcina) i orice alt vrf s fie precedat de un singur vrf. 4.2. Metode de reprezentare a grafului Exist trei metode de baz de definire a unui graf: 1. Matricea de inciden;

2. Matricea de adiacen; 3. Lista de adiacen (inciden). Vom face cunotin cu fiecare dintre aceste metode. 4.2.1. Matricea de inciden Este o matrice de tipul mxn, n care m este numrul de muchii sau arce (pentru un graf orientat), iar n este numrul vrfurilor. La intersecia liniei i cu coloana j se vor considera valori de 0 sau 1 n conformitate cu urmtoarea regul: 1 - dac muchia i este incident cu vrful j (dac arcul i "intr" n vrful j n cazul unui graf orientat); 0 - dac muchia (arcul) i i vrful j nu sunt incidente; -1 - numai pentru grafuri orientate, dac arcul i "iese" din vrful j. Este uor de observat c aceast metod este de o eficacitate mic n sensul utilizrii memoriei calculatorului: fiecare linie conine doar dou elemente diferite de zero (o muchie poate fi incident cu nu mai mult de dou vrfuri). 4.2.2. Matricea de adiacen Este o matrice ptrat nxn, aici n este numrul de vrfuri. Fiecare element poate fi 0, dac vrfurile respective nu sunt adiacente, sau 1, n caz contrar. Pentru un graf fr bucle putem observa urmtoarele: diagonala principal este format numai din zerouri; pentru grafuri neorientate matricea este simetric fa de diagonala principal. Dup cum este lesne de observat i n acest caz memoria calculatorului este utilizat nu prea eficace din care cauz matricea de adiacen ca i matricea de inciden se vor utiliza de obicei doar n cazul n care se va rezolva o problem concret pentru care reprezentarea grafului n aceast form aduce unele faciliti algoritmului respectiv. Pentru pstrarea grafurilor n memoria calculatorului (n deosebi, memoria extern) se va utiliza una din posibilitile de mai jos. 4.2.3. Lista de adiacen i lista de inciden Lista de adiacen este o list cu n linii (dup numrul de vrfuri n), n linia cu numrul i vor fi scrise numerele vrfurilor adiacente cu vrful i. Lista de inciden se definete analogic cu deosebirea c n linia i vor fi scrise numerele muchiilor (arcelor) incidente cu vrful i. Reprezentarea grafurilor prin intermediul acestor liste permite utilizarea mai eficace a memoriei calculatorului, ns aceste forme sunt mai complicate att n realizare, ct i n timpul procesrii. Pentru a lua n consideraie lungimea variabil a liniilor vor fi utilizate variabile dinamice i pointeri. Vom exemplifica pentru un graf cu n vrfuri. Deoarece fiecare element al listei conine numere de vrfuri este evident s considerm c vom avea un ir de variabile dinamice de tip INTEGER care se vor afla n relaia respectiv de precedare (succedare). Aceast relaie se va realiza prin pointeri, unii mpreun cu variabila de tip ntreg n nregistrarea (Pascal: record). Pentru a pstra indicatorii de intrare n aceste iruri se va folosi un tablou unidimensional de indicatori de lungime n. n calitate de simbol de terminare a irului se va utiliza un simbol care nu a fost folosit la numeraia vrfurilor (de exemplu 0), care va fi introdus n calitate de variabil de tip ntreg al ultimului bloc. 4.3.4. Arbori Se va defini o mulime de structuri fiecare din care va consta dintr-un obiect de baz numit vrf sau rdcina arborelui dat i o list de elemente din mulimea definit, care (elementele) se vor numi subarbori ai arborelui dat. Arborele pentru care lista subarborilor este vid se va numi arbore trivial, iar rdcina lui - frunz. Rdcina arborelui se va numi tatl vrfurilor care servesc drept rdcini pentru subarbori; aceste vrfuri se vor mai numi copiii rdcinii arborelui: rdcina primului subarbore se va numi fiul cel mai mare, iar rdcina fiecrui subarbore urmtor n list se va numi frate. Operaiile de baz pentru arbori vor fi: Formarea unui arbore trivial; Alegerea sau nlocuirea rdcinii arborelui; Alegerea sau nlocuirea listei rdcinilor subarborilor; Operaiile de baz care sunt valabile pentru liste. 4.4. Algoritmi pe grafuri 4.4.1. Cutare n adncime La cutarea n adncime (parcurgerea unui graf n sens direct, n preordine) vrfurile grafului vor fi vizitate n conformitate cu urmtoarea procedur recursiv: mai nti va fi vizitat rdcina arborelui q, apoi, dac rdcina arborelui nu este frunz - pentru fiecare fiu p al rdcinii q ne vom adresa recursiv procedurii de parcurgere n adncime pentru a vizita vrfurile tuturor subarborilor cu rdcina p ordonate ca fii ai lui q. n cazul utilizrii unei stive pentru pstrarea drumului curent pe arbore, drum care ncepe din rdcina arborelui i se termin cu vrful vizitat n momentul dat, poate fi realizat un algoritm nerecursiv de forma: Viziteaz rdcina arborelui i introdu-o n stiva vid S; WHILE stiva S nu este vid DO BEGIN fie p - vrful din topul stivei S; IF fiii vrfului p nc nu au fost vizitai THEN viziteaz fiul mai mare al lui p i introduce-l n S ELSE BEGIN elimin vrful p din stiva S IF p are frai THEN viziteaz pe fratele lui p i introduce-l n stiva S END END

Acest algoritm poate fi modificat pentru a putea fi utilizat la parcurgerea tuturor vrfurilor unui graf arbitrar. n algoritmul de mai jos se va presupune c este stabilit o relaie de ordine pe mulimea tuturor vrfurilor grafului, iar mulimea vrfurilor adiacente cu un vrf arbitrar al grafului este de asemenea ordonat: WHILE va exista cel puin un vrf care nu a fost vizitat DO BEGIN fie p - primul din vrfurile nevizitate; viziteaz vrful p i introduce-l n stiva vid S; WHILE stiva S nu este vid DO BEGIN fie p - vrful din topul stivei S; IF m vrfuri ale lui p sunt vrfuri adiacente nevizitate T HEN BEGIN fie z primul vrf nevizitat din vrfurile adiacente cu p; pa rcurge muchia (p,z), viziteaz vrful z i introduce-l n stiva S; E ND ELSE elimin vrful p din stiva S END END n cazul n care se va lucra cu un graf conex arbitrar cu relaia de ordine lips, nu va mai avea importan ordinea de parcurgere a vrfurilor. Propunem un algoritm care utilizeaz mai larg posibilitile stivei, cea ce face programul mai efectiv n sensul diminurii timpului de calcul necesar. De exemplu, acest algoritm n varianta recursiv este pe larg utilizat n programele de selectare global n subdirectori (cazul programelor antivirus). Introdu n stiv vrful iniial i marcheaz-l; WHILE stiva nu este vid DO BEGIN extrage un vrf din stiv; IF exist vrfuri nemarcate adiacente cu vrful extras THEN marcheaz-le i introduce-le n stiv; END 4.4.2. Algoritmul de cutare n lrgime Parcurgerea grafului n lrgime, ca i parcurgerea n adncime, va garanta vizitarea fiecrui vrf al grafului exact o singur dat, ns principiul va fi altul. Dup vizitarea vrfului iniial, de la care va ncepe cutarea n lrgime, vor fi vizitate toate vrfurile adiacente cu vrful dat, apoi toate vrfurile adiacente cu aceste ultime vrfuri .a.m.d. pn vor fi vizitate toate vrfurile grafului. Evident, este necesar ca graful s fie conex. Aceast modalitate de parcurgere a grafului (n lrgime sau postordine), care mai este adesea numit parcurgere n ordine orizontal, realizeaz parcurgerea vrfurilor de la stnga la dreapta, nivel dup nivel. Algoritmul de mai jos realizeaz parcurgerea n lrgime cu ajutorul a dou fire de ateptare O1 i O2. Se vor forma dou fire de ateptare vide O1 i O2; Introduce rdcina n FA O1; WHILE cel puin unul din firele de ateptare O1 sau O2 nu va fi vid DO IF O1 nu este vid THEN BEGIN fie p vrful din topul FA O1; viziteaz vrful p eliminndu-l din O1; viziteaz pe toi fiii lui p n FA O2, ncepnd cu cel mai mare; END ELSE n calitate de O1 se va lua FA O2, care nu este vid, iar n calitate de O2 se va lua FA vid O1; Vom nota c procedura parcurgerii grafului n lrgime permite s realizm arborele de cutare i n acelai timp s construim acest arbore. Cu alte cuvinte, se va rezolva problema determinrii unei rezolvri sub forma vectorului (a1, a2,...) de lungime necunoscut, dac este cunoscut c exist o rezolvare finit a problemei. Algoritmul pentru cazul general este analogic cu cel pentru un graf n form de arbore cu o mic modificare care const n aceea c fiecare vrf vizitat va fi marcat pentru a exclude ciclarea algoritmului. Algoritmul parcurgerii grafului n lrgime: Se vor defini dou FA O1 i O2 vide; Introdu vrful iniial n FA O1 i marcheaz-l; WHILE FA O1 nu este vid DO BEGIN viziteaz vrful din topul FA O1 i elimin-l din FA; IF exist vrfuri nemarcate adiacente cu vrful dat THEN introdu-le n FA O2; END

4.4.3. Noiune de graf de acoperire. Algoritmul de determinare a grafului de acoperire Fie H un subgraf care conine toate vrfurile unui graf arbitrar G. Dac pentru fiecare component de conexitate a lui G subgraful H va defini un arbore atunci H se va numi graf de acoperire (scheletul sau carcas) grafului G. Este evident c graful de acoperire exist pentru oricare graf: eliminnd ciclurile din fiecare component de conexitate, adic eliminnd muchiile care sunt n plus, vom ajunge la graful de acoperire. Se numete graf aciclic orice graf care nu conine cicluri. Pentru un graf arbitrar G cu n vrfuri i m muchii sunt echivalente urmtoarele afirmaii: 1. G este arbore; 2. G este un graf conex i m = n - 1; 3. G este un graf aciclic i m = n - 1; 4. oricare dou vrfuri distincte (diferite) ale lui G sunt unite printr-un lan simplu care este unic; 5. G este un graf aciclic cu proprietatea c, dac o pereche oarecare de vrfuri neadiacente vor fi unite cu o muchie, atunci graful obinut va conine exact un ciclu. Consecin: numrul de muchii pentru un graf arbitrar G, care va fi necesar a fi eliminate spre a obine un graf de acoperire nu depinde de ordinea eliminrii lor i este egal cu m(G)-n(G)+k(G), unde m(G), n(G) i k(G) sunt numrul de muchii, vrfuri i componente conexe, respectiv. Numrul s(G) = m(G)-n(G)+ k(G) se numete rang ciclic sau numr ciclomatic al grafului G. Numrul r(G) = n(G)-k(G) rang cociclomatic sau numr cociclomatic. Deci, s(G)+r(G)=m(G). Este adevrat urmtoarea afirmaie: orice subgraf a unui graf arbitrar G se conine ntr-un graf de acoperire a grafului G. Exist mai muli algoritmi de determinare a grafului de acoperire. Algoritmul de mai jos nu este un algoritmstandard, ci este unul elaborat n baz algoritmului de cutare n lrgime. Esena algoritmului const n aceea c folosind dou fire de ateptare n unul din care sunt nscrise (pe rnd) numerele vrfurilor adiacente cu vrfurile din cellalt FA (ca i n cazul cutrii n lrgime), vor fi eliminate muchiile dintre vrfurile unui FA i toate muchiile n afar de una dintre fiecare vrf al FA curent i vrfurile din FA precedent. n cazul n care ambele FA vor deveni vide procedura se va termina. Pentru a nu admite ciclarea i ca s fim siguri c au fost prelucrate toate componentele conexe se va utiliza marcarea vrfurilor. Dac dup terminarea unui ciclu ordinar nu au mai rmas vrfuri nemarcate procedura ia sfrit, n caz contrar n calitate de vrf iniial se va lua oricare din vrfurile nemarcate. Descrierea algoritmului: 1. Se vor declara dou FA (FA1 i FA2) vide. 2. Se va lua n calitate de vrf iniial un vrf arbitrar al grafului. 3. Se va introduce vrful iniial n firul de ateptare vid FA1 i se va marca acest vrf. 4. Se vor introduce n FA2 toate vrfurile adiacente cu vrfurile din FA1 i se vor marca. Dac FA2 este vid se va trece la p.7, n caz contrar - la p. 4. 5. Se vor elimina toate muchiile care leag vrfurile din FA2. 6. Pentru toate vrfurile din FA2 vor fi eliminate toate muchiile n afar de una care leag vrful dat cu vrfurile din FA1. 7. Se vor schimba cu numele FA1 i FA2 (FA1 va deveni FA2 i invers). 8. Dac exist cel puin un vrf nemarcat se va lua n calitate de vrf iniial oricare din acestea i se va trece la p.1, altfel 9. STOP. Graful obinut este graful de acoperire. 4.4.4. Noiune de drum minim. Algoritmul lui Ford pentru determinarea drumului minim Pentru un graf orientat G = (X,U) se va numi drum un ir de vrfuri D = (x0, x1,..., xr) cu proprietatea c (x0, x1), (x1, x2),..., (xr-1, xr) aparin lui U, deci sunt arce ale grafului i extremitatea final a arcului precedent coincide cu extremitatea iniial a arcului urmtor. Vrfurile x0 i xr se numesc extremitile drumului D. Lungimea unui drum este dat de numrul de arce pe care le conine. Dac vrfurile x0, x1,..., xr sunt distincte dou cte dou drumul D este elementar. Adeseori, fiecrui arc (muchii) i se pune n coresponden un numr real care se numete ponderea (lungimea) arcului. Lungimea arcului (xi, xj) se va nota w(i,j), iar n cazul n care un arc este lips ponderea lui va fi considerat foarte mare (pentru calculator cel mai mare numr pozitiv posibil). n cazul grafurilor cu arce ponderate (grafuri ponderate) se va considera lungime a unui drum suma ponderilor arcelor care formeaz acest drum. Drumul care unete dou vrfuri concrete i are lungimea cea mai mic se va numi drum minim iar lungimea drumului minim vom numi distan. Vom nota distana dintre x i t prin d(x, t), evident, d(x,x)=0. Permite determinarea drumului minim care ncepe cu un vrf iniial xi pn la oricare vrf al grafului G. Dac prin Lij se va nota ponderea arcului (xi, xj) atunci algoritmul conine urmtorii pai: 1. Fiecrui vrf xj al grafului G se va ataa un numr foarte mare Hj(). Vrfului iniial i se va ataa Ho = 0; 2. Se vor calcula diferenele Hj - Hi pentru fiecare arc (xi, xj). Sunt posibile trei cazuri:

a) Hj - Hi < Lij, b) Hj - Hi = Lij, c) Hj - Hi > Lij. Cazul "c" permite micorarea distanei dintre vrful iniial i xj din care cauz se va realiza Hj = Hi + Lij. Pasul 2 se va repeta atta timp ct vor mai exista arce pentru care are loc inegalitatea c. La terminare, etichetele Hi vor defini distana de la vrful iniial pn la vrful dat xi. 3. Acest pas presupune stabilirea secvenei de vrfuri care va forma drumul minim. Se va pleca de la vrful final xj spre cel iniial. Predecesorul lui xj va fi considerat vrful xi pentru care va avea loc Hj - Hi = Lij. Dac vor exista cteva arce pentru care are loc aceast relaie se va alege la opiune. 4.4.5 Algoritmul Bellman - Calaba Permite determinarea drumului minim dintre oricare vrf al grafului pn la un vrf, numit vrf final. Etapa iniial presupune ataarea grafului dat G a unei matrice ponderate de adiacen, care se va forma n conformitate cu urmtoarele: 1. M(i,j) = Lij, dac exist arcul (xi, xj) de pondere Lij; 2. M(i,j) = , unde este un numr foarte mare (de tip ntreg maximal pentru calculatorul dat), dac arcul (xi, xj) este lips; 3. M(i,j) = 0, dac i = j. La etapa a doua se va elabora un vector V0 n felul urmtor: 1. V0(i) = Lin, dac exist arcul (xi, xn), unde xn este vrful final pentru care se caut drumul minim, Lin este ponderea acestui arc; 2. V0(i) = , dac arcul (xi, xn) este lips; 3. V0(i) = 0, dac i = j. Algoritmul const n calcularea iterativ a vectorului V n conformitate cu urmtorul procedeu: 1. Vk(i) = min{Vk-1; Lij+Vk-1(j)}, unde i = 1, 2,, n - 1, j = 1, 2,..., n; i<>j; 2. Vk(n) = 0. Cnd se va ajunge la Vk = Vk-1 - STOP. Componenta cu numrul i a vectorului Vk cu valoarea diferit de zero ne va da valoarea minim a drumului care leag vrful i cu vrful n.

Determinm cantitatea: e = min {min(c(u) - f(u)), min f(u)}. u v+, u v_ Din modul de etichetare rezult e > 0. Vom mri cu e fluxul pe fiecare arc u din v+ i vom micora cu e fluxul pe fiecare arc u v_, obinnd la ieire un flux egal cu fb+e. Se repet aplicarea pasului 2 cu fluxul nou obinut. Dac prin acest procedeu de etichetare nu putem marca ieirea b, fluxul fb are o valoare maxim la ieire, iar mulimea arcelor care unesc vrfurile marcate cu vrfurile care nu au putut fi marcate constituie o tietur de capacitate minim (demonstrai c se va ajunge n aceast situaie dup un numr finit de pai).

4.5. Reele de transport 4.5.1. Noiuni generale Un graf orientat G = (X, U) se numete reea de transport dac satisface urmtoarele condiii: a) exist un vrf unic a din X n care nu intr nici un arc sau d_(a)=0; b) exist un vrf unic b din X din care nu iese nici un arc sau d+(a)=0; c) G este conex i exist drumuri de la a la b n G; d) s-a definit o funcie c: UR astfel nct c(u) 0 pentru orice arc u din U. Vrful a se numete intrarea reelei, vrful b se numete ieirea reelei, iar c(u) este capacitatea arcului u. O funcie f: UR astfel nct f(u) 0 pentru orice arc u se numete flux n reeaua de transport G cu funcia de capacitate c, care se noteaz G = (X, U, c), dac sunt ndeplinite urmtoarele dou condiii: a) Condiia de conservare a fluxului: Pentru orice vrf x diferit de a i b suma fluxurilor pe arcele care intr n x este egal cu suma fluxurilor pe arcele care ies din x. b) Condiia de mrginire a fluxului: Exist inegalitatea f(u) c(u) pentru orice arc u U. Dac f(u) = c(u) arcul se numete saturat. Un drum se va numi saturat dac va conine cel puin un arc saturat. Fluxul, toate drumurile cruia sunt saturate se va numi flux complet. Cel mai mare dintre fluxurile complete se numete flux maxim. Pentru orice mulime de vrfuri A U vom defini o tietur w_(A) = {(x, y) | x A, y A, (x,yU}, adic mulimea arcelor care intr n mulimea A de vrfuri. Prin w+(A) vom nota mulimea arcelor care ies din mulimea A de vrfuri. Este just afirmaia: suma f(u) pentru u w+(A) este egal cu suma f(u) pentru arcele uw_(A). Aceast valoare comun se va nota fb. 4.5.2. Algoritmul Ford-Fulkerson Are loc urmtoarea teorem (Ford-Fulkerson): Pentru orice reea de transport G = (X, U, c) cu intrarea a i ieirea b valoarea maxim a fluxului la ieire este egal cu capacitatea minim a unei tieturi, adic: max fb = min c(w_(A)). n baza acestei teoreme a fost elaborat urmtorul algoritm de determinare a fluxului maxim (Ford-Fulkerson) la ieirea b a unei reele de transport G = (X, U, c), unde capacitatea c ia numai valori ntregi: 1. Se definete fluxul iniial avnd componente nule pe fiecare arc al reelei, adic f(u) = 0 pentru orice arc u U; 2. Se determin lanurile nesaturate de la a la b pe care fluxul poate fi mrit, prin 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] - orice vrf y nemarcat cu proprietatea c arcul u = (x, y) are un 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. Se va considera atunci un lan format din vrfurile etichetate (ale cror etichete au respectiv semnele + sau -) care unete pe a cu b i care poate fi gsit uor urmrind etichetele vrfurilor sale n sensul de la b ctre a. Dac acest lan este v, s notm cu v+ mulimea arcelor (x, y), unde marcajul lui y are semnul +, deci care sunt orientate n sensul de la a ctre b i cu v_ mulimea arcelor (x, y), unde marcajul lui y are semnul -, deci care sunt orientate n sensul de la b ctre a.