Documente Academic
Documente Profesional
Documente Cultură
ºi vom nota c( (i , j )) = c ij .
Definiþie: Se numeºte flux în reþeaua R = ( G , s, t , c) o funcþie x :V × V → R , care
satisface
(i) 0 ≤ x ij ≤ c ij ∀ij ∈V × V
(ii) ∑ x − ∑ x = 0 ∀i ∈V − {s, t}
j∈V ji j∈V ij
Observaþie:
10 Dacã ij ∈ E atunci se numeºte fluxul (transportat) pe arcul ij. Evident,
condiþia (i) cere ca fluxul pe orice arc sã fie nenegativ ºi subcapacitar, iar condiþia (ii)
(legea de conservare a fluxului) cere ca suma fluxurilor pe arcele care intrã în vâ rful i
sã fie egalã cu suma fluxurilor pe arcele care ies din vâ rful i. Se putea cere ca fluxul sã
fie definit numai pe arcele reþelei, dar cu convenþia fã cutã la extensia funcþiei de
capacitate, se observã cã pentru perechile (i,j) care nu sunt arce în reþea condiþia (i)
impune ca fluxul sã fie 0, ºi evident cele douã definiþii sunt echivalente. O preferã m pe
cea datã , pentru simplitatea notaþiilor, deºi în implementã ri, structurile de date folosite
vor ignora perechile(i,j) care nu sunt arce în reþea.
53
0= ∑ ∑ x − ∑ x
i≠ s ,t j ∈V
ji
j ∈V
ij =∑
i≠ s ,t
∑x
j ≠ s,t
ji −∑
i≠ s ,t
∑x +∑x
j ≠ s ,t
ij
i≠ s , t
si + ∑ xti − ∑ x is − ∑ x it =
i≠ s ,t i≠ s ,t i≠ s ,t
− ∑ x is − ∑ xsi − ∑ xit − ∑ xti
i i i i
adicã
∑x −∑x
j ∈V
jt
j ∈V
tj = − ∑ x js − ∑ x sj .
j ∈V j ∈V
Se observã cã v(x) se poate interpreta ca fiind fluxul net care ajunge în ieºirea
reþelei sau (conform egalitã þii obþinute mai sus) fluxul net care iese din intrarea reþelei.
În orice reþea R = ( G , s, t , c) existã un flux, fluxul nul x ij = 0 ∀ij , de valoare
0.
max v
∑ x ji − ∑ xij = 0,∀i ≠ s, t
j j
∑ x js − ∑ x sj = − v
j j
∑ x − ∑ x = v
j jt j tj
0 ≤ xij ≤ cij ∀ij
Particularitã þile combinatorii ale problemei, numã rul mare de restricþii ºi mai ales
54
dificultã þile legate de restricþiile de integritate ce s-ar putea impune variabilelor, care
uneori în practicã sunt esenþiale, au condus la dezvoltarea de metode specifice de
rezolvare.
Definiþie: Dacã P este un drum în G , multigraful suport al digrafului G, ºi
e = v i v j este o muchie a lui P atunci: dacã e corespunde arcului v i v j al lui G, e se
numeºte arc direct al drumului P; dacã e corespunde arcului v j v i al lui G, atunci e se
numeºte arc invers.
Definiþie: Fie R = ( G , s, t , c) ºi x flux în R. Se numeºte C-drum
(în R relativ la fluxul x) un drum D în G cu proprietatea cã ∀ij ∈ D( E) :
x ij < c ij dacã ij este arc direct, x ji > 0 dacã ij este arc invers.
Dacã D este C-drum ºi ij ∈ E( D) , se numeºte capacitate rezidualã a lui ij (relativ
la C-drumul D) numã rul
2,1
2 4
3,1 3,2
x1 = x ⊗ r( D) definit prin
—
x
ij dacã ij ∉ E (D )
xij1 = xij + r (D ) dacã ij ∈ E (D ), ij arc direct în D
xij − r (D ) dacã ji ∈ E(D ), ji arc invers în D
( )
este flux în R ºi v x1 = v( x) + r( D).
Demonstraþie. Definiþia lui r(D) implica îndeplinirea de cã tre x1, a condiþiilor (i).
Condiþiile (ii) verificate de x, nu sunt afectate pentru nici un vâ rf i ∉ V( D) . Dacã i≠s,t
este un vâ rf al drumului D, i este incidentcu exact douã arce ale lui D, fie ele li ºi ik.
Avem urmã toarele cazuri posibile:
∑ x −∑ x j
1
ji j
1
ij = ∑ j ≠ l xji − ∑ j ≠ k xij + x1li − x1ik =
a) li ºi ik arce directe: ∑ x − ∑ j≠l ji j≠k
xij + xli + r( D) − xik − r( D) =
∑ x −∑ x j ji j ij =0
b) li ºi ik invers:
∑ x −∑ x = ∑ x −∑ x +x +x
j
1
ji j
1
ij j ≠ l ,k ji j ij
1
li
1
ki =
∑ x − ∑ x + x + r( D) + x − r( D) =
j ≠ l ,k ji j ij li ki
∑ x −∑ x −∑ x = 0
j ji j ji j ij
2 2 4
2
2
6
1
2 2
3 2 5
56
Observaþii:
10 Aceastã lemã justificã denumirea de drum de creºtere, precum ºi pe cea de
capacitate rezidualã .
20 Din definiþie, dacã D este un drum de creºtere, r(D)>0 ºi deci avem
v ( x ⊗ r (D )) > v (x ) . Rezultã cã x admite un drum de creºtere, x nu este flux de valoare
maximã .
Definiþie: Fie R = ( G , s, t , c) . Se numeºte secþiune în reþeaua R, o partiþie (S, T) a lui V
cu s ∈ S ºi t ∈ T . Capacitatea secþiunii (S, T) este:
c(S , T ) = ∑ ∑ cij
i∈S j∈T
(valoarea fluxului este egalã cu fluxul net ce trece prin orice secþiune.)
Demonstraþie:
v ( x ) = ∑ x jt − ∑ x tj − 0 = − ∑ x js − ∑ x sj − ∑ ∑ x ji − ∑ x ij =
j j j j i∈S , i ≠ s j j
∑ ∑ x − ∑ x = ∑ ∑ (x ij − x ji ) + ∑ ∑ (x ij − x ji ) = ∑ ∑ (x ij − x ji )
ij ji
i∈S j j i∈S j∈S i∈S j∈T i∈S j∈T
≤∑
i∈S
∑ (s
j∈T
ij − x ji ) (x ij ≤ cij )
≤∑ ∑c ij (x ji ≥ 0)
i∈S j∈T
Observaþii:
− − −
1) Dacã x este un flux în R = ( G , s, t , c) ºi ( S , T ) o secþiune astfel încâ t
v ( x ) = c (S , T ) , atunci ∀x flux în R v ( x ) ≤ c (S , T ) = v ( x ) , deci x este flux de
valoare maximã . 2) În exemplul dat, x1 este flux de valoare maximã întrucâ t
v (x 1 ) = 4 = c({1,2,3}{ , 4,5,6})
Teorema 1. Un flux este de valoare maximã într-o reþea R, dacã , nu existã drumuri de
creºtere a fluxului x în reþeaua R.
Teorema 2. Dacã toate capacitã þile sunt întregi, atunci existã un flux de valoare
maximã cu toate componentele întregi.
Fie reþeaua desenatã mai jos în care fiecare arc are capacitatea 1 ºi are precizat
pe el fluxul iniþial, unde α este unica rã dã cinã realã a ecuaþiei t 3 + t − 1 = 0 α ∈ (0,1) .
59
1
α2
0
0
2 0
0
0 α2
t
s
1-α 0
3
1-α
0
5
α
Evident cã v (x 0 ) = α 2 . Considerã m
P1 = s,1,2,3,4, t x 1 = x 0 ⊗ r (P1 )
P2 = s,1,4,3,2, t x 2 = x 1 ⊗ r (P2 )
P3 = s,3,4,1,2, t x 3 = x 2 ⊗ r (P3 )
P4 = s,3,2,1,4, t x 4 = x 3 ⊗ r (P4 )
1 1 1 1 1
1-∝4m 1-∝4m+3 1-∝4m+3 1 1-∝4m+4
2 2 2 2 2
⇒
∝4m+ 0 ∝4m+ 0
0 2 2 ∝4m+4 0 ∝4m+
3
0 ∝4m+
6
4m+1 4m+4
∝ ∝
3 3 3 3 3
1
1-∝
4m+1
1-∝4m+2 1-∝4m+5 1-∝4m+5
4 4 4 4 4
61
Descrierea algoritmului
Begin
1: Se alege x = (x ij ) un flux iniþial (posibil fluxul nul);
se eticheteazã s cu (0,..,∞)
2: while (∃ vâ rfuri etichetate necercetate) do begin
“alege” un vâ rf etichetat ºi necercetat i;
etichetare(i);
if (t a primit etichetã ) then begin
modificã fluxul pe drumul dat de etichete;
ºterge toate etichetele;
eticheteazã s cu (1,..,∞)
end
end;
3: S := {i i ∈ V , i are etichetã}
T := V − S
x este flux de valoare maximã
(S, T) este secþiune de capacitate minimã .
end.
2
M M
s 1 1 4 t
M M
3
x k := x k −1 ⊗ r (Pk −1 ), Pk este un drum minim de creºtere relativ la xk-1; k=1,2,...
Vom dovedi cã ºirul de fluxuri astfel definit este finit.
Notã m, pentru ∀i ∈ V ºi ∀k = 0,1,2,...
σ ik = lungimea minimã a unui C-drum de la s la i în R relativ la fluxul xk.
τ ik = lunngimea minimã a unui C-drum de la i la t în R relativ la fluxul xk.
σ ik +1 ≥ σ ik ºi τ ik +1 ≥ τ ik
63
Teorema 4. Dacã x=x0 este un flux oarecare în reþeaua R, atunci ºirul de fluxuri x1, x2,...
obþinut din x0 prin creºteri succesive pe drumuri minime de creºtere, are cel mult
mn mn
elemente (în cel mult creºteri succesive, se obþine un flux care nu admite
2 2
drumuri de creºtere).
σ ik + τ ik = σ kj + τ kj
64
Cum ij este critic în Pk, în xk+1 nu va putea fi folosit în aceeaºi direcþie ca în Pk. Prima
oarã câ nd fluxul pe arcul ij se va modifica, el va apare într-un drum de creºtere Pl cu l>k
relativ la xl ºi va fi folosit în direcþie opusã .
Avem deci douã cazuri:
i) ij direct în Pk. Atunci σ kj = σ ik + 1 . În Pl ij va fi arc invers, deci
σ il = σ lj + 1 . Rezultã , σ il + τ il = σ lj + 1 + τ il ≥ σ kj + 1 + τ ik = σ ik + τ ik + 2 (s-a folosit
lema 1). Am obþinut cã lg(P l ) ≥ lg(P k ) + 2 .
ii) ij arc invers în Pk. Atunci σ ik = σ kj + 1 . În Pl ij va fi arc direct, deci
σ lj = σ il + 1 . Rezultã , σ lj + τ lj = σ il + 1 + τ lj ≥ σ ik + 1 + τ kj = σ kj + τ kj + 2 . Deci,
lg(P l ) ≥ lg(P k ) + 2 .
Rezultã cã orice drum minim de creºtere în care arcul ij este critic este cu mã car
douã arce mai lung decâ t precedentul în care ij a fost critic. Cum, un drum în G
are cel mult n-1 arce, rezultã cã un arc fixat nu poate fi critic în procesul de
n
creºtere mai mult de ori. Cum orice drum de creºtere are cel puþin un arc critic,
2
mn
rezultã cã nu vom avea mai mult de drumuri minime de creºtere, în ºirul
2
mn
construit, Deci dupã cel mult creºteri, se obþine un flux care nu admite
2
drumuri de creºtere.
Observaþii:
10 Rezultã de aici, cã demonstraþia teoremei 3 este completã .
20 S-ar putea pune întrebarea dacã nu cumva, cosiderarea drumurilor minime de
creºtere, mã reºte complexitatea algoritmului de flux maxim ?
Rã spunsul este însã banal:
Conform regulii de etichetare ik+1 primeºte etichetã înaintea lui jk+1, dar jk+1 primeºte
etichetã înaintea lui ik+2; jk+2 primeºte etichetã înaintea lui ik+3 ºi aºa mai departe, obþinem
inductiv cã t primeºte etichetã înaintea lui ik+l’-1, deci t primeºte etichetã pe drumul P’,
înainte de a primi etichetã pe drumul P, absurd.
Observaþie: Regula “primul etichetat-primul cercetat” corespunde unei explorã ri
b f s a fâ rfurilor cercetate, ceea ce se poate realiza, utilizâ nd o coadã pentru memorarea
vâ rfurilor etichetate. Aceasta nu afecteazã complexitatea algoritmului, care va necesita
tot O(m) operaþii pentru fiecare creºtere a fluxului ºi folosind teorema 4 obþinem:
Fie R = ( G , s, t , c) o reþea.
Definiþie. Se numeºte preflux în reþeaua R, o funcþie x:E→R astfel încâ t
(D1) d (t ) = 0
Observaþii:
10. Dacã P este un C-drum relativ la prefluxul x în R de la i la t atunci
d (i ) ≤ lg(P ) (arcele unui C-drum au capacitate rezidualã pozitivã ºi se aplicã (D2)).
Rezultã cã d (i ) ≤ τ i (lungimea minimã a unui C-drum de la i la t).
20. Vom nota cu A(i), pentru orice vâ rf i, lista sa de adiacenþã , care poate conþine
arcele ij∈E.
rij > 0 ∧ d (i ) = d ( j ) + 1 .
Dacã R este o reþea, considerã m iniþializare urmã toarea procedurã care construieºte în
O(m) un preflux x ºi o funcþie de distanþã d corespunzã toare acestuia, astfel:
procedure iniþializare;
begin
for ∀ij∈E do
67
Observaþii:
10. Dupã execuþia acestei proceduri, ∀sj∈A(s) avem rsj=0, deci alegerea lui
d (s ) = n nu afecteazã condiþia D2. Pentru arcele cu capacitate rezidualã pozitivã de
forma js D2 este evident verificatã .
20. Alegerea lui d (s ) = n are urmã toarea interpretare: “ nu existã C-drum de la s
la t în R relativ la x” (întrucâ t, altminteri, ar trebui ca lungimea acestuia sã fie ≥ n).
Dacã , în algoritmii de tip preflux vom pã stra acest invariant, atunci câ nd x va deveni
flux, va rezulta cã nu admite drumuri de creºtere ºi deci x va fi de valoare maximã .
Dacã δ=rij vom spune cã avem o pompare saturatã , altminteri pomparea este
nesaturatã .
begin
iniþializare;
while ∃ noduri active în R do begin
selecteazã un nod activ i;
if ∃ arce admisibile în A(i)
then pompeazã (i)
else reeticheteazã (i)
end
end.
68
Lema 6. Algoritmul de tip preflux, descris mai sus, are ca invariant “d este funcþie de
distanþã relativ la prefluxul x”. La fiecare reetichetare(i), d(i) creºte strict.
Lema 7. Dacã pe parcursul algoritmului, i0 este un nod activ, atunci existã un C-drum de
la i0 la s, în R, relativ la prefluxul curent x.
algoritmului.
Consecinþa 2. Numã rul total de apeluri ale procedurii reetichetare este mai mic decâ t
2n2.
Demonstraþie: Fiecare din cele n-2 vâ rfuri ce pot fi supuse etichetã rii poate fi
etichetat de cel mult 2n-1 ori, avâ nd în vedere consecinþa 1, lema 6, ºi etichetarea
iniþialã .
Lema 8. (Goldberg ºi Tarjan 1986) Numã rul pompã rilor nesaturate sete cel mult 2n2m.