Sunteți pe pagina 1din 15

Anul I februarie mai 2006

Seria 13
Cursul : ALGORITMCA GRAFURILOR


CURSUL 1 marti 21 februarie 2006 , ora 18-20, Amf. II
Concepte de baza. Definitii.Notatii.Exemple.
1. Multiset peste o multime R.
Definitie.
Notatii alternative.
Apartenenta unui element la un multiset.
Relatia de incluziune.
Cardinalul unui multiset.
2. Puteri ale unei multimi S.
S
p
= multimea p-cuvintelor peste S.
S
(p)
= multimea p-partilor lui S.
S
<p>
= multimea p-multipartilor lui S.
S
*
= multimea cuvintelor peste S.
S
(*)
= multimea partilor lui S.
S
<*>
= multimea multipartilor lui S.
Exemple pentru cazul p=2. Expresia grafica asociata.
3. Grafuri.
Grafuri orientate.
Grafuri neorientate.
Grafuri simple.
3.1. Adiacenta.Incidenta.
3.2. Grade.
Grad interior.
Grad exterior.
Grad.
Multisetul gradelor.
Vectorul scor.
Multisetul victoriilor.
Multisetul infrangerilor.
Exemple.


CURSUL 2 marti 7 martie 2006 ,ora 18-20, Amf. II
GRAFURI NEORIENTATE.
GRADELE UNUI GRAF NEORIENTAT.
1. Multimea !(V) a grafurilor simple definite peste o multime V de varfuri.
Transformarea t care conserva gradele in varfuri.
Transformarea t
*
obtinuta prin iterarea transformarii t.
Relatia de echivalenta ~ indusa de transformarea t
*
pe multimea !(V).
TEOREMA.Clasele de echivalenta !(V)/~ coincid cu clasele de grafuri care au aceleasi
grade in varfuri.
(Lema 1,Lema 2 + exemple)
2. Multisetul (sirul) derivat s
0

al unui multiset de numere s
0
.Exemple.
Multiset grafic de numere.
Conditii necesare ca un multiset de numere naturale sa fie grafic.Propozitia lui Euler.
TEOREMA lui Havel si Hakimi .
Algoritmul de testare a caracterului grafic al unui multiset de numere .
Algoritmul de constructie a unui graf cu multisetul gradelor cunoscut.
Exemple.
Complement.
Extinderea transformarilor t si t
*
la cazul grafurilor neorientate.
Exercitiu: Multisetul 11223344nn este multiset graphic pentru n in N
>1
.


CURSUL 3 marti 13 martie 2006,ora 18 20 ,Amf. II
CONEXITATE.
1)Lanturi (elementare,simple,oarecare)
Cicluri (elementare,simple,oarecare)
Conexitate
Relatia de echivalenta pe multimea varfurilor indusa de conectarea
lanturi
Multimea subgrafurilor unui graf simplu ordonata partial de relatia
<= adica aceea de a fi subgraf
Componenta conexa
(doua variante de definitii :
una privita drept clasa de echivalenta
alta privita drept subgraf conex maximal)
Descompunere in componente conexe
EXEMPLE.
ARBORI.
2)Arbori
Definitia 1 T arbore T conex si acyclic
Definitia 2 T arbore Exista o permutare a muchiilor lui
T ,e
1
,e
2
,e
3
,,e
m
cu proprietatea:
pentru orice i , 2<= i <= m muchia e
i
are in comun cu muchiile e
1,
e
2
,e
3
,,e
i-1

exact un varf
PROPOZITIE: Definitia 1 Definitia 2
Enuntarea proprietatilor arborilor.
(am demonstrat doua dintre ele iar restul le-am lasat exercitiu
la seminar)
APLICATII.
2.1)PROPOZITIE:In orice graf conex exista un arbore partial.
(doua variante de argumentare:
una pornind de la proprietatea
arborilor de a fi conexi muchie minimali si
alta constructiva bazata pe
OBESRVATIA : G conex intre orice doua parti nevide disjuncte
care formeaza o partitie a multimii varfurilor
exista o muchie )
2.2)GRAFURI BIPARTITE
Multime independenta de varfuri sau de muchii.
p-colorari proprii a muchiilor unui graf (partile monocrome sunt independente).
Definitia 1 pentru grafuri bipartite.
Definitia 2 G bipartit G admite o bicolorare proprie
PROPOZITIE:Orice arbore este un graf bipartit.
(doua variante de argumentare:
una bazata pe constructia unei bicolorari;
alta bazata pe notiunea de distanta in grafuri )
TEOREMA (KONIG)
(doua variante de argumentare :
una utilizand un arbore partial;
alta pornind de la o parcurgere in adancime a grafului si utilizand notiunea
de distanta).


CURSUL 4 marti 27 martie 2006,ora 18-20.amf II
APLICATII la capitolul ARBORI (continuare)
3 GRAFURI PLANARE
3.1 Definitie..
Reprezentare in plan.Harta.Fete.
Grad al unei fete.Proiectie stereografica
EXEMPLE.
K
5
nu este planar (demonstratie directa bazata pe unicitatea
modulo un izomorfism a hartilor asociate
,succesiv,lui K
1
,K
2
,K
3
si K
4
)
K
3,3
nu este planar (demonstratie directa) exercitiu.
3.2 TEOREMA POLIEDRALA A LUI EULER.
Demonstratia 1 (care utilizeaza un arbore partial).
Demonstratia 2 (care calculeaza in doua moduri suma unghiurilor
totale centrate in varfuri: * pe de o parte ea este
2 pi /V/; ** pe de alta parte ea este egala cu
cu suma unghiurilor interne fetelor marginite
- adica (d(f) 2) pi (suma dupa f in F si f diferit
de fata nemarginita ,f
0
) la care se adauga suma
unghiurilor din fata nemarginita ,f
0
, adica
(d(f
0
) + 2) pi.
APLICATIE:
K
5
este neplanar (se utilizeaza faptul ca cele mai mici fete
ar avea gradul cel putin 3,formula lui
Euler si formula care evalueaza suma
gradelor fetelor)
K
3,3
este neplanar (aici gradul minim al unei fete ar trebui sa
fie cel putin 4 deoarece in K
3,3
orice ciclu este
par) exercitiu.
3.3 Hamiltoneitate in grafuri planare.
Definitia unui graf Hamiltonian.
Harti hamiltoniene.Fete interioare.Fete exterioare.

3.3.1 TEOREMA Fie G graf simplu Hamiltonian.Avem:
G este planar daca si numai daca graful intersectiilor
corzilor ciclului Hamiltonian este bipartit.
ALGORITM de testare a planaritatii unui graf Hamiltonian.
APLICATIE:
K
5
este neplanar. (se utilizeaza faptul ca graful K
5

este Hamiltonian) exercitiu.
K
3,3
este neplanar (analog) - exercitiu.
3.3.2 Conditie necesara de hamiltoneitate a unui graf planar.
TEOREMA LUI GRINBERG.

CURSUL 5 marti 4 aprilie 2006,ora 18-20 , amf II
ARBORI PARTIALI in GRAFURI CU MUCHIILE PONDERATE.
1) ARBORI PARTIALI.
Arbore partial.
Multimea arborilor partiali.
Exemple.
2) GRAFURI CU MUCHIILE PONDERATE.
Subgraf.
Ponderea unui subgraf.
Exemple.
Ponderea unui lant.
Lant optim.
Distanta.
OBSERVATII.
* Orice sublant al unui lant optim este optim.
** Daca ponderea oricarei muchii este nenula atunci
orice lant optim este elementar.
3) DEFINITII. SCOP.
Arbori partiali optimi/economici.
Arbori partiali ai distantelor unui varf x
0
.
4) DESCRIEREA ALGORITMILOR (in paralel).
T=({x
0
},O)
ALGORITMUL lui PRIM.
Se repeta de n-1 ori operatiile urmatoare:
<Se selecteaza o muchie e={x,y} cu x in V
i-1
si y in V-V
i-1

cu proprietatea w({x,y}) minim.
T+eT>
ALGORITMUL lui DIJKSTRA.
Se repeta de n-1 ori operatiile urmatoare:
<Se selecteaza o muchie e={x,y} cu x in V
i-1
si y in V-V
i-1

cu proprietatea d
T
(x
0
,x) + w({x,y}) minim.
T+eT>
OBSERVATIE:
Cei doi algoritmi difera doar prin criteriul de selectie a muchiei e.
5) DEMONSTRATIA CORECTITUDINII ALGORITMILOR.
Notatii commune necesare celor doua demonstratii.
G=(V,E), E=V
(2)
, w, x
0
.
x
0
,x
1
,x
2
,x
3
,.
.,
x
n-1
, (indiciere in ordinea selectarii)
e
1
,e
2
,e
3
,..,e
n-1
, (indiciere in ordinea selectarii)
V
i
={x
0
,x
1
,x
2
,x
3
,,x
i
},
E
i
={e
1
,e
2
,e
3
,,e
n-1
}.
T
i
=(V
i
,E
i
).
LEMA In graful G exista arbori partiali optimi.
TEOREMA 1.
Un graf obtinut prin algoritmul lui PRIM este
un arbore optim.
(demonstratia din cursul tiparit)
LEMA In graful G exista arbori partiali ai distantelor varfului x
0
la
celelalte varfuri din G.
TEOREMA 2.
Un graf obtinut prin algoritmul lui DIJKSTRA este
un arbore partial al distantelor vafului x
0
la celelalte
varfuri ale grafului.
(o demonstratie noua,pornind de la ideea demonstratiei
teoremei 1)

CURSUL 6 marti 11 aprilie 2006, ora 18-20, amf. II
ARBORI PARTIALI (continuare)
1. Comentarii.Completari.
1.2.Observatie.
Un arbore partial economic poate sa nu fie un arbore al distantelor
relative la un varf si reciproc.
1.3. O a doua demonstratie a teoremei 2 din cursul 5 privind algoritmul lui DIJKSTRA.
1.4. O alta descriere a algoritmului lui PRIM.
T=(V,O)
Se repeta de n-1 ori urmatoarele operatii:
<Se selecteaza o muchie e de pondere minima cu un capat in componenta conexa
care contine x
0
iar celalalt capat intr-o alta componenta conexa.
T+e T >.


1.5. ALGORITMUL lui KRUSKAL.
T=(V,O)
Se repeta de n -1 ori urmatoarele operatii:
<Se selecteaza o muchie e de pondere minima cu capetele in componente conexe
diferite.
T+e T>.
TEOREMA 3.
Un graf obtinut prin algoritmul lui KRUSKAL este un arbore
economic.
Demonstratia 1.
Se selecteaza un arbore economic care are in comun cu arborele
KRUSKAL o secventa initiala de muchii de cardinal maxim.
(exercitiu)
Demonstratia 2.
Se selecteaza un arbore economic care are in comun cu arborele
KRUSKAL o multime de muchii de cardinal maxim.
(exercitiu)
1.6. ALGORITMUL lui BORUVKA.
T=(V,O)
Algoritmul se desfasoara in etape.
Intr-o etapa, pentru fiecare componenta conexa , se selecteaza o muchie de pondere
minima un
capat in ea iar celalalt capat intr-o alta componenta conexa.
Se adauga apoi muchiile selectate la graful T.
Algoritmul se sfarseste atunci cand T are o singura componenta conexa.
Demonstratie:
1)Un graf obtinut prin algoritmul lui BORUVKA este un arbore partial.
2)Un graf obtinut prin algoritmul lui BORUVKA este un arbore partial
economic.(exercitiu)
EXERCITIU.
Fie (G ,w) un graf simplu cu muchiile ponderate. Se pot mari
ponderile muchiilor lui G cu cate o cantitate astfel incat graful
ponderat (G ,w) obtinut sa aiba urmatoarele proprietati:
1)Ponderea w este injectiva;
2)Un arbore partial economic din (G ,w) este arbore partial
economic in (G ,w) .

marti 18 aprilie 2006 ora 18-20 amf II (inaintea PASTELUI)
Nu a venit decat un student si cursul nu s-a tinut.
marti 25 aprilie 2006 ora18-20 amf II = a 3-a zi de PASTE

CURSUL 7 marti 2 mai 2006 ora 18-20 amf II
CUPLAJE
1. Definitii. Notatii. Exemple. Comentarii.
G=(V,E) graf simplu
M inclus in E
M cuplaj :< == > M este multime independenta
:< == > orice e,f din M sunt neadiacente.
Varf M saturat
Varf M nesaturat
Partititionarea multimii V in varfuri saturate si varfuri nesaturate.
M
*
:= cuplaj de cardinal maxim in G
Exemple.
G = P
n
G = C
n

G = C
n1
+ C
n2
+ C
n3
+ + C
nk
.
Exercitii.
Care este cardinalul maxim al unui din G ?
Cate cuplaje de cardinal maxim are G ?
Cate cuplaje are G ?
2. SCOP : M
*
Care este cardinalul lui M
*
?
Algoritmi pentru constructia unui M
*
Lant M alternant ; tipuri.
Ciclu M alternant
Lant M alternant deschis.
Exemple.
3. Operatia delta diferenta simetrica. Diagrama Euler Venn. Exemple.
Operatia de constructie a negativului unui lant P , M alternant deschis
si obtinerea unui cuplaj de cardinal cu 1 mai mare,
numita operatia de transfer de-a lungul lantului P :
M = M delta E(P)
Descrierea celor patru tipuri de componente conexe ale grafului [M
1
delta M
2
]
indus de diferenta simetrica a doua cuplaje diferite M
1
si M
2
:
ciclu M
1
,M
2
alternant;
lant M
1
,M
2
alternant tip (M
1
,M
2
);
lant M
1
,M
2
alternant tip (M
1
,M
1
);
lant M
1
,M
2
alternant tip (M
2
,M
2
).
Compararea numarului de muchii din M
1
cu
numarul de muchii din M
2
din fiecare componenta conexa:

In primele doua tipuri numarul muchiilor din M
1
si M
2
este egal.
In al treilea tip numarul muchiilor din M
1
este mai mare cu 1 decat
numarul muchiilor din M
2
.
In al patrulea tip numarul muchiilor din M
2
este mai mare cu 1 decat
numarul muchiilor din M
1
.
4. TEOREMA (CLAUDE BERGE)
M este cuplaj de cardinal maxim < == >
<==> Orice lant M alternant din G nu este deschis.
5. CUPLAJE IN GRAFURI BIPARTITE.
5,1. Amintim:
definitia grafului bipartit
teorema lui KONIG
orice arbore este un graf bipartit
5.2. Definim cuplaj al lui A in B.
TEOREMA lui HALL.
Fie G = (A U B,E) un graf bipartit. Avem:
G contine un cuplaj al lui A in B < == >
< == > Orice lant M alternant nu este deschis.

CURSUL 8 marti 9 mai 2006 ora 16-18 amf. II
CUPLAJE (continuare)
ALGORITMUL UNGAR. ALGORITMUL KUHN_MUNKRES.
1. Amintim:
definitia cuplajului
M
*
cuplaj de cardinal maxim
varf M-saturat
lant M-alternant
lant M-alternant deschis (crescator)
transfer de-a lungul unui lant crescator
graf bipartit
cuplaj al lui A in B : G = (A U B,E)
TEOREMA lui BERGE
M este cuplaj de cardinal maxim < == >
<==> Orice lant M alternant din G nu este deschis.
TEOREMA lui HALL
Fie G = (A U B,E) un graf bipartit. Avem:
G contine un cuplaj al lui A in B < == >
< == > Orice lant M alternant nu este deschis.

2. PROBLEMA PRACTICA.
PROBLEMA PRACTICA 1.
A = o multime de n oameni;
B = o multime de n locuri de munca;
Fiecare om din multimea A este calificat pentru o parte a multimii locurilor de munca B;
Este posibil ca fiecare din cei n oameni din multimea A sa fie repartizat la cate un loc de
munca din multimea B corespunzator calificarii sale ?

PROBLEMA PRACTICA 2.
A = o multime de n oameni;
B = o multime de n locuri de munca;
Fiecare om din multimea A are pentru fiecare loc de munca din B o calificare cu o
anumita pondere;
Se cere sa se repartizeze oamenii din multimea A pe locurile de munca din B ,cate unul
pe un loc, astfel incat suma ponderilor calificarilor lor sa fie maxima.

3. REZOLVAREA CELOR DOUA PROBLEME.
3.1. PROBLEMA 1. ALGORITMUL UNGAR.
Amintim problema:
A = o multime de n oameni;
B = o multime de n locuri de munca;
Fiecare om din multimea A este calificat pentru o parte a multimii locurilor de
munca B;
Este posibil ca fiecare din cei n oameni din multimea A sa fie repartizat la cate un
loc de munca din multimea B corespunzator calificarii sale ?
MODELARE.
Se considera :
G = (A U B,E) graf bipartit;
/A/ = /B/ = n;
E = {{a,b}/ a in A, b in B, a este calificat pentru locul de munca b}.
SCOP:
Determinarea unui cuplaj perfect in graful G , daca exista..
ALGORITMUL:
Se selecteaza un cuplaj oarecare M (poate fi o muchie oarecare) in G.
1.
Daca M satureaza A atunci M este cuplaj perfect STOP.
Daca M nu satureaza A atunci :
se selecteaza un varf a in A M - nesaturat
X := {a}, Y := O , E(T) := O.
T := ({a},O).
2.
Daca N
G
(X) = Y atunci nu exista cuplaj perfect STOP.
Daca N
G
(X) diferit Y atunci :
se selecteaza b in N
G
(X) Y;
fie a in X cu {a,b} in E.
3.
Daca b este M saturat atunci :
fie a in B X cu {a,b} in M ;
X := X U {a}, Y := Y U {b}, E(T) := E(T) U {{a,b},{b,a}};
T := (X UY, E(T)) ;
REPETA 2.
Daca b este M nesaturat atunci:
fie P a,a lantul M alternant din T;
P := P + [a,b];
se efectueaza un transfer de-a lungul lantului P :
M := M delta E(P);
REPETA 1.
3.2. PROBLEMA 2. ALGORITMUL KUHN-MUNKRES.
Amintim problema:
A = o multime de n oameni;
B = o multime de n locuri de munca;
Fiecare om din multimea A are pentru fiecare loc de munca din B o calificare cu o
anumita pondere;
Se cere sa se repartizeze oamenii din multimea A pe locurile de munca din B ,cate
unul pe un loc, astfel incat suma ponderilor calificarilor lor sa fie maxima.
MODELARE.
Se considera :
G = (A U B,E) graf bipartit;
/A/ = /B/ = n;
E = {{a,b}/ a in A, b in B, a este calificat pentru locul de munca b};
w : E --> R
>=0

Se defineste ponderea unui cuplaj M:
w(M) = Suma w(e) pentru e in M.
SCOP:
Determinarea unui cuplaj perfect in graful G cu ponderea maxima.
PREGATIRI.
Se defineste o pondere majoranta in varfuri ,
l : A U B ---> R
cu proprietatea
l(a) + l(b) >= w({a,b}), orice a in A si orice b in B.
EXEMPLU.
l(a) = max {w({a,b})/ b in B} orice a in A;
l(b) = 0 orice b in B.
Se defineste graful egalitatii G
l
asociat ponderii majorante l a varfurilor in raport cu
ponderea w a muchiilor astfel:
V(G
l
) = A U B;
E(G
l
) = {{a,b}/ a in A; b in B; l(a) + l(b) >= w({a,b})}.
TEOREMA .
Un cuplaj perfect in G
l
este cuplaj perfect de cardinal maxim in G.
METODA.
Se defineste o pondere majoranta, l.
Se repeta pana se determina un cuplaj perfect M urmatoarele operatii:
<<Se cauta un cuplaj perfect M in graful egalitatii G
l
cu algoritmul ungar.
In cazul in care un astfel de cuplaj nu exista
N
Gl
(X) = Y
se imbunateste ponderea l astfel incat
N
Gl
(X) diferit Y
si muchiile arborelui M alternant T , construit in algoritm ,sa se conserve
in noul graf al egalitatii G
l
. >>
ALGORITMUL.
Se construieste o pondere majoranta in varfuri, l.
Se construieste graful egalitatii G
l
.
Se selecteaza un cuplaj oarecare M (poate fi o muchie oarecare) in G
l
.
1.
Daca M satureaza A atunci M este cuplaj perfect STOP.
Daca M nu satureaza A atunci :
se selecteaza un varf a in A M - nesaturat
X := {a}, Y := O , E(T) := O.
T := ({a},O).
2.
Daca N
Gl
(X) = Y atunci nu exista cuplaj perfect in G
l
.
Se redefineste ponderea l .
d
l
:= min { l(a) + l(b) - w({a,b}/a in X; b in B Y};
l: A U B ---> R astfel:
l(a) = l(a) d
l
pentru a in X;
l(b) = l(b) + d
l
pentru b in Y;
l(v) = l(v) in rest.
Se construieste graful egalitatii G
l
.
l := l;
G
l
:= G
l
.
se selecteaza b in N
Gl
(X) Y;
fie a in X cu {a,b} in E.
REPETA 3.
Daca N
Gl
(X) diferit Y atunci :
se selecteaza b in N
Gl
(X) Y;
fie a in X cu {a,b} in E.
REPETA 3.
3.
Daca b este M saturat atunci :
fie a in B X cu {a,b} in M ;
X := X U {a}, Y := Y U {b}, E(T) := E(T) U {{a,b},{b,a}};
T := (X UY, E(T)) ;
REPETA 2.
Daca b este M nesaturat atunci:
fie P a,a lantul M alternant din T;
P := P + [a,b];
se efectueaza un transfer de-a lungul lantului P :
M := M delta E(P);
REPETA 1.

CURSUL 9 marti 16 mai 2006 ora 18-20 amfiteatrul II
RETELE DE TRANSPORT.

CURSUL 10 marti 23 mai 2006 ora 18-20 amfiteatrul II
RETELE DE TRANSPORT (continuare).

REZUMATUL CURSURILOR 9 si 10.
1. DEFINITII. NOTATII. REZULTATE DE BAZA.
1.1. Chestiuni generale.
Fie
G = (V , E)
un graf orientat si
r : E N
>=0

o functie pondere definite pe multimea arcelor sale.
Notam :
* pentru e in E
e
-
= extremitatea initiala a arcului e (varful origine),
e
+
= extremitatea finala a arcului e (varful terminus);
* pentru S , T parti disjuncte ale lui V
(S , T) = multimea arcelor e cu e
-
in S si e
+
in T;
[S , T] = (S , T) U (T , S),
in particular vom considera multimi de arce de tipul urmator
(S , V-S) si (V-S , S);
* pentru S parte a lui V
r
+
(S) = suma ponderilor arcelor e cu e
-
in S si e
+
in V-S,
r
-
(S) = suma ponderilor arcelor e cu e
-
inV-S si e
+
in S;
* pentru K parte a lui E
r(K) = suma ponderilor arcelor din K.

Observatie.
r
+
(S) = r ((S , V-S)) si r
-
(S) = r((V-S , S)).

PROPOZITIA 1. Pentru S parte nevida a lui V avem :
Suma r(uv) pentru uv in E cu u,v in S = Suma r(vu) pentru vu in E cu v,u in S =
= r (E (G [S] ))

PROPOZITIA 2. Pentru S parte nevida a lui V avem :
r
+
(S) r
-
(S) = Suma (r
+
G
(u) r

G
(u)) pentru u in S.

1.2. Retea de transport.
N = (G,X,I,Y,c)
unde :
G = (V,E) este graf orientat
si
V = X U I U Y;

X = multimea intrarilor;
I = multimea varfurilor intermediare;
Y = multimea iesirilor;

X , Y si E sunt nevide;
X, I si Y sunt multimi disjuncte;

c : E N
>=0
functia capacitate.
1.3. Flux f in reteaua N.
f : E N
>=0

cu proprietatile :

(1) Conditiile de marginire:
0 <= f(e) <= c(e) orice e in E;
(2) Conditiile de conservare a fluxului:
f
+
(v) = f
-
(v) orice v in I.

Notam :
!(N) = {f / f flux in reteaua N}.

PROPOZITIA 3. Pentru o retea N = (G , X , I , Y , c), un flux f in N si o parte S cu
X inclus in S inclus in X U I
avem
f
+
(S) f
-
(S) = f
+
(X) f

(X) .

CONSECINTA 4. Pentru S = X U I avem :
f
-
(Y) f
+
(Y) = f
+
(X) f
-
(X) .

Notam :
val (f) := f
+
(X) f

(X);
Numarul val (f) se numeste valoarea fluxului f.


Notam cu f * un flux de valoare maxima :
val(f *) = max {val(f) / f in ! }
si
!
*
(N) = {f
*
/ f
*
in ! (N) , val(f
*
) maxim}.

2. SCOP.
Determinarea unui flux de valoare maxima.

3.
Vom considera cazul in care avem:
X = {x} , Y = {y} ;
d

(x) = 0 si d
+
(y) = 0 .
3.1. PREGATIRI
3.1.1. TAIETURI INTR-O RETEA.
O taietura K este o multime de tipul (S , V S) unde S este parte
a lui V cu x in S si y in V S.
Notam
#(N) = {K / K taietura in reteaua N}
Pentru K in # (N) , numarul c(K) se numeste capacitatea taieturii K.
Notam cu K
~
o taietura de capacitate minima:
c(K
~
) = min {c(K) / K in #}
si
#
~
(N) = {K
~
/ K
~
in # (N) , c(K
~
) minim}.
Fie o parte S a multimii varfurilor V cu x in S si y in V S .
Pentru un arc e din (S , V S) U (V S , S) definim

c(e) f(e) daca e este in (S , V S),
i
S
(e) =
0 daca e este in (V S , S).
De asemenea , notam
i (S) = min{i
S
(e) / e in (S , V S) U (V S , S) }.
Vom spune ca taietura K = (S , V S) este f saturata daca si numai daca, prin
definitie, avem:
i (S) = 0.

3.1.2. LANTURI INTR-O RETEA.
Fie u,v doua varfuri diferite din reteaua N si P un u,v lant.
Pentru un arc e din E(P) definim
c(e) f(e) daca e este un arc inainte in P,
i
P
(e) =
f(e) daca e este un arc inapoi in P.
De asemenea , notam
i (P) = min {i
P
(e) / e in E(P)}.
Vom spune ca a,b lantul P este f saturat daca si numai daca, prin definitie,
avem:
i (P) = 0.

3.1.3. REVIZUIREA UNUI FLUX DE-A LUNGUL UNUI x,y-LANT NESATURAT.
Fie P un x,y-lant nesaturat.
Se defineste un flux f : E ---> N
>=0
astfel :

f(e) + i(P) daca e este arc inainte in P;

f (e) = f(e) i(P) daca e este arc inapoi in P;

f(e) in rest.

f este flux.
Vom spune ca fluxul f este obtinut prin revizuirea fluxului f de-a lungul
x.y-lantului nesaturat P.
Observatie.
(1) val(f ) = val(f) + i(P) > val(f).
(2) x,y- lantul P este f saturat.
(3) Existenta unui x,y lant f nesaturat P intr-o retea N este semnificativa
deoarece de aici rezulta ca fluxul f nu este flux maxim.
De asemenea, prin revizuirea lui f de-a lungul lui P f poate fi transformat
intr-un flux f de valoare mai mare.

3.1.4. DEFINIREA UNEI TAIETURI f-SATURATE INTR-O RETEA IN CARE
ORICE x , y LANT ESTE f - SATURAT.
Consideram situatia in care orice x ,y lant este f saturat, adica i(P) = 0.
Se defineste o taietura K = (S , V - S) din #(N) selectand multimea S astfel :
S = {u / u in V(G) si exista un x , u lant f - saturat }
K este o taietura f saturata.

3.2.
PROPOZITIA 5. Fie N = (G , X , I , Y , c) o retea de transport.

(1) Pentru orice flux f din ! (N) si orice taietura K din #(N) avem:
val (f) <= c (K);
(2) Sunt adevarate implicatiile :
(2.1) val (f) = c (K) <==> Taietura K este f - saturata.
(2.2) val (f) = c (K) ==> f este in ! * (N) si
K este in #
~
(N).
(2.3) Taietura K este f - saturata ==> f este in ! * (N) si
K este in #
~
(N).

PROPOZITIA 6. Fie N = (G , X , I , Y , c) o retea de transport.
Este adevarata echivalenta :
f este in F
*
(N) < == > Orice x,y lant din N este f-saturat.

TEOREMA 7. (FORD FULKERSON)
Fie N = (G , X , I , Y , c) o retea de transport. Avem:
val (f *) = c (K
~
).



3.3. ALGORITMUL FORD FULKERSON
0. Se considera un flux initial f definit prin f(e) = 0 pentru e in E(G).
1.
t(x)=infinit
T = ({x},O)
2.
Se cauta o muchie e in [V(T),V(G)-V(T)] ,
e = uv cu
u in V(T) ,
v in V(G) V(T),
i
V(T)
(e) > 0.
2.1.
Daca muchia e nu exista atunci :
f este in !
*
(N), STOP.
2.2.
Daca muchia e exista atunci :
t(v) = min {t(u), i
V(T)
(e)},
T = T + [e].
2.2.1.
Daca y este in V(T) atunci:
Se revizuieste fluxul f de-a lungul unicului x,y-lant din T,
REPETA 1.
2.2.2.
Daca y nu este in V(T) atunci:
REPETA 2.

Obesrvatie.
Algoritmul are un numar finit de pasi deoarece vectorul (val(f) , /V(T)/) ia
valori in multimea
{0 , 1 , 2 , , c
+
(x)} x {1 ,2,3, ,/V(G)/}
si la repetarea pasilor 1 sau 2 , vectorul (val(f) , /V(T)/) creste strict in raport cu
ordinea lexicografica .
Algoritmul nu se sfarseste daca /V(T)/ = /V(G)/ deoarece in acest caz
avem V(T) = V(G) si atunci y fiind in V(T) fluxul f este revizuibil.
Deci algoritmul nu poate sfarsi decat in cazul in care se ajunge la val(f)
maxim.