Sunteți pe pagina 1din 41

Curs 8

Flux n ret ele de transport Algoritmi de ux maxim Aplicat ii si extensii

Curs 8

Ret ele de transport


Ce este o ret ea de transport?

Un graf orientat n care muchiile modeleaz a uxuri de materiale ntre noduri (litri de lichid, amperi de electricitate, etc.) Fiecare muchie are o capacitate maxim a. Se dore ste stabilirea unui ux de resurse de la un nod surs a (produc atorul) la un nod destinat ie (consumatorul).
ux debitul de deplasare a uxului de resurse.

Problema debitului maxim: care este debitul maxim al unui ux de resurse de la surs a la destinat ie, f ar a s a se violeze nici o constr angere de capacitate maxim a ale muchiilor?

Curs 8

Ret ele de transport


Model matematic

Denit ie (Ret ea de rtansport) Un graf orientat G = (V , E ) n care ecare muchie (u , v ) E are o capacitate c (u , v ) 0 si dou a noduri speciale: o surs as si o destinat ie t . Dac a (u , v ) E , se consider a c a c (u , v ) = 0 . Scriem u v pentru a indic a existent a unei c ai de la u la v , si presupunem c a ecare nod v G este pe o cale de la s la t , adic a exist a o cale s v t. Corolar O ret ea de transport este un graf conex, deci |E | |V | 1.

Curs 8

Fluxuri
Denit ie Un ux n o ret ea de transport G este o funct ie f : V V R care satisface 3 condit ii: Restrict ie de capacitate: Pentru tot i u , v V , f (u , v ) c (u , v ). Antisimetrie: pentru tot i u , v V , f (u , v ) = f (v , u ). Conservarea uxului: Pentru tot i u V {s , t },
v V

f (u , v ) = 0 .

f (u , v ) se nume ste ux de ret ea de la nodul u la v . Valoarea uxului f este |f | = v V f (s , v ), adic a, uxul total de ret ea care pleac a din surs a. Problema uxului maxim Se d a o ret ea de transport G cu sursa s si destinat ia t , S a se g aseasc a un ux cu valoare maxim a de la s la t .
Curs 8

Ret ele de transport si uxuri


Not iuni auxiliare

Fluxul pozitiv de ret ea care intr a ntr-un nod v este f (u , v )


u V f (u ,v )>0

Fluxul pozitiv de ret ea care pleac a dintr-un nod v este f (v , u )


u V f (v ,u )>0

Din conservarea uxului rezult a c a pentru orice nod v : uxul pozitiv ce intr a n v = uxul pozitiv ce pleac a din v .

Curs 8

Exemplu de ret ea de transport


v1
4 12

16

v3
7

20

16 11/

v1
1/4

12/12

v3 v4

15/

20

s
13

10

t
4

s
8/1

10

7/7
4/4

v2

14

v4

v2

(a)

(a) Ret ea de transport G = (V , E ) cu muchiile etichetate cu capacit a tile lor. Sursa este s , destinat ia este t . (b) Un ux f n ret eaua de transport G cu valoarea |f | = 19. Sunt indicate roar uxurile pozitive. Dac a f (u , v ) > 0, muchia (u , v ) este etichetat a cu f (u , v )/c (u , v ). (Notat ia cu / separ a uxul de capacitate; nu reprezint a mp art ire.) Dac a f (u , v ) 0, muchia (u , v ) este etichetat a doar cu capacitatea ei.

Curs 8

4/

11/14

(b)

Ret ele de transport


S tergerea tuturor uxurilor negative de ret ea regula de anulare

Dac a v1 v2 atunci
v1 /c1 (v1 v2 )/c1

x
v2 /c2

anulare

x
v2

Doar uxurile pozitive de ret ea reprezint a transporturi ce au loc. Aplicat ii ale regulii de anulare
elimin a uxurile negative de ret ea. nu violaz a 3 restrict ii ale ret elelor de transport:
1 2 3

constr angerea de capacitate antisimetria conservarea uxului

Curs 8

Surse si destinat ii multiple


O problem a de debit maxim poate avea surse multiple s1 , . . . , sm si destinat ii multiple t1 , . . . , tm . O astfel de problem a poate redus a la o problem a echivalent a cu o singur a surs a si o singur a destinat ie:
adaug a o supersurs as si o superdestinat ie t adaug a muchii orientate (s , si ) cu c (s , si ) = pentru i = 1..m adaug a muchii orientate (tj , t ) cu c (tj , t ) = pentru j = 1..n

Exemplu s1 s2 s3 s4 s5
Curs 8
10
12

s1 s2 s3 s4

3
15 6 20 13

5
8

t1 t2 t3

14
7

11

18

Surse si destinat ii multiple


O problem a de debit maxim poate avea surse multiple s1 , . . . , sm si destinat ii multiple t1 , . . . , tm . O astfel de problem a poate redus a la o problem a echivalent a cu o singur a surs a si o singur a destinat ie:
adaug a o supersurs as si o superdestinat ie t adaug a muchii orientate (s , si ) cu c (s , si ) = pentru i = 1..m adaug a muchii orientate (tj , t ) cu c (tj , t ) = pentru j = 1..n

Exemplu s1 s2 s3 s4 s5
10
12

s1
s1 s2 s3 s4

10
12

3
15 6 20 13

s1 s2 s3 s4

3
15 6 20 13

5
8

t1 t2 t3 s

14
7

s2 s3 s4 s5
Curs 8

5
8

t1 t2 t3

14
7

11

18

11

18

Operat ii cu uxuri
Convent ii de notat ie

Se presupun date:
o ret ea de transport G = (V , E ) o funct ie f de la V V la R mult imile de noduri X , Y (adic a, X V , Y V ) nodul u V .

Atunci
f (X , Y ) reprezint a suma
x X y Y

f (x , y ). f (u , x ).
x X

f (u , X ) reprezint a suma f (Y , u ) reprezint a suma


y Y

f (y , u ).

X u reprezint a mult imea X {u }.

Remarc a. Dac a f este un ux pentru G = (V , E ) atunci f (u , V ) = 0 pentru tot i u V {s , t }. Acest fapt rezult a din conservarea uxului f (V {s , t }, V ) = 0.
Curs 8

Propriet a ti ale ret elelor de transport


Lem a Fie G = (V , E ) o ret ea de transport si f un ux n G . Atunci f (X , X ) = 0 pentru tot i X V . f (X , Y ) = f (Y , X ) pentru tot i X , Y V . f (X Y , Z ) = f (X , Z ) + f (Y , Z ) si f (Z , X Y ) = f (Z , X ) + f (Z , Y ) pentru tot i X , Y , Z V cu X Y = . Se observ a c a: |f | = f (s , V ) = f (V , V ) f (V s , V ) = f (V , V s ) = f (V , t ) + f (V , V { s , t }) = f (V , t )
Curs 8

cf. denit iei cf. lemei precedente cf. lemei precedente cf. lemei precedente cf. conserv arii uxului

Operat ii cu uxuri

Denit ie Dac a f1 , f2 sunt uxuri n o ret ea de transport G iar R, atunci suma uxurilor f1 si f2 este funct ia f1 + f2 de la V V la R denit a de (f1 + f2 )(u , v ) := f1 (u , v ) + f2 (u , v ) pentru tot i u , v V .

produsul scalar f1 este uxul denit de funct ia de la V V la R astfel nc at ( f1 )(u , v ) := f1 (u , v ) pentru tot i u , v V .

Curs 8

Operat ii cu uxuri
Exemple

11/

16

v1
1/4

12/12

v3
7/7

15/

20

1/1

v1
1/4

2/12

v3
7/7

5/2 0

s
8/1 3

10

t
4/4

s
6/1 3

4/ 9

10

t
2/4

v2

4/

11/14

v4

v2

9/14

v4

(a) G si f1

(b) G si f2

Curs 8

Operat ii cu uxuri
Exemple

11/

16

v1
1/4

12/12

v3
7/7

15/

20

1/1

v1
1/4

2/12

v3
7/7

5/2 0

s
8/1 3

10

t
4/4

s
6/1 3

4/ 9

10

t
2/4

v2

4/

11/14

v4

v2

9/14

v4

(a) G si f1 v1
1/4 14/12

(b) G si f2
20/

12/

16

v3
7/7

20

s
14/

10
13

t
6/4

v2

4/

20/14

v4

(c) G si f1 + f2

Curs 8

Operat ii cu uxuri
Exemple

11/

16

v1
1/4

12/12

v3
7/7

15/

20

1/1

v1
1/4

2/12

v3
7/7

5/2 0

s
8/1 3

10

t
4/4

s
6/1 3

4/ 9

10

t
2/4

v2

4/

11/14

v4

v2

9/14

v4

(a) G si f1 v1
1/4 14/12

(b) G si f2
20/

12/

16

v3
7/7

20

.5/

16

v1
5 .5/4

1/12

v3

2.5 /20

s
14/

10
13

t
6/4

s
3/1 3

3.5/7

t
1/4

4/

v2

20/14

v4

v2

2/

4.5/14

v4

(c) G si f1 + f2

(d) G si f2 c and =

1 2

Curs 8

Operat ii cu uxuri
Intreb ari

Un ux trebiue s a satisfac a 3 constr angeri: restrict ia de capacitate, antisimetria si conservarea uxului.


1 2 3

Care propriet a ti nu sunt p astrate de sumele de ux? Care propriet a ti nu sunt p astrate de produsul scalar al uxului? S a se arate c a dac a f1 , f2 sunt uxuri si 0 1, atunci f1 + (1 ) f2 este ux.

Curs 8

Ret ele reziduale


Ipoteze: G = (V , E ): ret ea de transport; f : ux n G . capacitatea rezidual a a unei muchii (u , v ) este cf (u , v ) := c (u , v ) f (u , v ). ret ea rezidual a a lui G indus a de f este ret eaua de transport Gf = (V , Ef ) unde Ef = {(u , v ) V V | cf (u , v ) > 0}, iar capacitatea ec arei muchii (u , v ) este cf (u , v ). Exemplu
16 11/

v1
1/4

12/12

v3
7/7

15/

20

v1
11
5

12

v3
15
7

s
8/1 3

10

t
4/4

s
8

11

t
4

4/

v2

11/14

v4

v2

5
3 11

v4

(a) G si f

(b) Gf

Remarc a. In general, |Ef | 2 |E |.


Curs 8

Fluxuri n ret ele reziduale


Propriet a ti

Fie G o ret ea de transport, f un ux nG , si ret eaua rezidual a Gf . Dac a f este un ux n Gf atunci f + f este ux n G cu valoarea |f + f | = |f | + |f |. Demonstrat ie. Antisimetria are loc deoarece (f + f )(u , v ) = f (u , v ) + f (u , v ) = f (v , u ) f (v , u ) = (f (v , u ) + f (v , u )) = (f + f )(v , u ). Pentru constr angerile de capacitate se observ a c a f (u , v ) cf (u , v ) pentru tot i u , v V , deci (f + f )(u , v ) = f (u , v ) + f (u , v ) f (u , v ) + (c (u , v ) f (u , v )) = c (u , v ). Pentru conservarea uxului observ am c a
(f + f )(u , v ) =
v V v V

(f (u , v ) + f (u , v )) f (u , v ) +
v V v V

f (u , v ) = 0 + 0 = 0.

In nal avem c a
|f + f | =
v V

(f + f )(s , v ) =
v V

(f (s , v ) + f (s , v )) =
v V

f (s , v ) +
v V

f (s , v ) = |f | + |f |.

Curs 8

Drumuri de cre stere


Un drum de cre stere al unei ret ele de transport G si a unui ux f este o cale simpl a de la s la t n ret eaua rezidual a Gf . Exemplu (Drum de cre stere)
5

v1
11
5

12

v3
15
7

s
8

11

t
4

v2

5
3 11

v4

Observat ii. Fiecare muchie (u , v ) a unui drum de cre stere admite un ux net pozitiv suplimentar f ar a ca s a violeze capacitatea muchiei. In acest exemplu am putut trimite cel put in 4 unit a ti n plus de la s la t de-a lungul drumului de cre stere marcat, f ar aa viola vreo restrict ie de capacitate (Remarc a: capacitatea rezidual a minim a pe drumul de cre stere marcat este 4).
Curs 8

Drumuri de cre stere (continuare)


Capacitatea rezidual a a unui drum de cre stere p este dat a de cf (p ) := min{cf (u , v ) | (u , v ) este pe p }. Lem a Fie G = (V , E ) o ret ea de transport cu un ux f , p un drum de cre stere n Gf , si fp : V V R denit de a (u , v ) este pe p , cf (p ) dac cf (p ) dac a (v , u ) este pe p , fp (u , v ) := 0 n celelalte cazuri. Atunci fp este un ux n Gf cu valoarea |fp | = cf (p ) > 0. Corolar Fie G = (V , E ) o ret ea de transport cu uxul f , si p un drum de cre stere n Gf . Fie fp uxul denit ca n lema precedent a. Atunci f + fp este un ux n G cu valoarea |f | = |f | + |fp | > |f |.
Curs 8

Metoda Ford-Fulkerson
Produce un ux maxim pentru o ret ea de transport G : Ford-Fulkerson-Method(G , s , t ) 1 init ializeaz a uxul f cu 0 2 while exist a un drum de cre stere p 3 cre ste uxul f de-a lungul lui p 4 return f Metoda Ford-Fulkerson este corect a deoarece are loc urm atorul rezultat:
Un ux este maxim dac a si numai dac a ret eaua lui rezidual a nu cont ine drumuri de cre stere.

Curs 8

Metoda Ford-Fulkerson
Produce un ux maxim pentru o ret ea de transport G : Ford-Fulkerson-Method(G , s , t ) 1 init ializeaz a uxul f cu 0 2 while exist a un drum de cre stere p 3 cre ste uxul f de-a lungul lui p 4 return f Metoda Ford-Fulkerson este corect a deoarece are loc urm atorul rezultat:
Un ux este maxim dac a si numai dac a ret eaua lui rezidual a nu cont ine drumuri de cre stere.

Vom demonstra acest lucru. Not iuni auxiliare: t aietur a, capacitate a unei t aieturi.

Curs 8

T aieturi
Denit ie O t aietur a (S , T ) a unei ret ele de transport G = (V , E ) este o partit ie a lui V n S si T = V S astfel nc at s S si t T . Fluxul net de-a lungul t aieturii (S , T ) este f (S , T ). Capacitatea t aieturii (S , T ) este c (S , T ). Exemplu
11/ 16

v1
1/4

12/12

v3
7/7

15/

20

s
8/1 3

10

t
4/4

v2

4/

S = {s , v1 , v2 } T = {v3 , v4 , t }

11/14

v4

S T

f (S , T ) = f (v1 , v3 )+f (v2 , v3 )+f (v2 , v4 ) = 12+(4)+11 = 19 c (S , T ) = c (v1 , v3 ) + c (v2 , v4 ) = 12 + 14 = 26


Curs 8

Propriet a ti ale t aieturilor


Lem a Fluxul net de-a lungul oric arei t aieturi (S , T ) este f (S , T ) = |f |. Corolar Pentru orice ux f si orice t aietur a (S , T ) avem |f | c (S , T ). Teorem a (Flux maxim t aietur a minim a) Dac a f este un ux n o ret ea de transport G = (V , E ) cu sursa s si destinat ia t , atunci condit iile urm atoare sunt echivalente:
1 2 3

f este un ux maxim n G . Gf nu cont ine drumuri de cre stere. |f | = c (S , T ) pentru o t aietur a (S , T ) a lui G .

Curs 8

Teorema ux maxim t aietur a minim a


(1) (2) Prin contradict ie: Presupunem c a f este ux maxim n G si c a Gf are n drum de cre stere p . Atunci f + fp ar un ux G cu valoare strict mai mare dec at |f |, contradict ie. (2) (3) Presupunem c a Gf nu are drum de cre stere de la s la t . Fie S = {v V | exist a un drum de la s la v n Gf } si T = V S . Atunci (S , T ) este t aietur a deoarece s S si t S . Pentru orice pereche de noduri (u , v ) S T avem v (u , v ) = c (u , v ) deoarece n caz contrar (u , v ) Ef si v S . Rezult a c a |f | = f (S , T ) = c (S , T ). (3) (1) S tim c a |f | c (S , T ) pentru toate t aieturile (S , T ) ale lui G . Din condit ia |f | = c (S , T ) rezult a c af este ux maxim.
Curs 8

Algoritmul Ford-Fulkerson de baz a

Ford-Fulkerson(G , s , t ) 1 for ecare muchie (u , v ) a lui G 2 f (u , v ) := 0 3 f (v , u ) := 0 4 while drum p de la s la t n Gf 5 cf := min{cf (u , v ) | (u , v ) este n p } 6 for ecare muchie (u , v ) n p 7 f (u , v ) := f (u , v ) + cf (p ) 8 f (v , u ) := f (u , v )

Curs 8

Algoritmul Ford-Fulkerson de baz a


Exemplu ilustrat

Ret ea rezidual a Gf cu drum de cre stere (linia 4)


16

Flux net ce rezult a din ad augarea lui fp la f


6 4/1

v1
10 4

12

v3
7

v1 v2

4/12
4/ 9

v3
7

20

20

(a)

s
13

t
4

s
13

10 4

t
4/4

v2 v1
4 10 4
4

14 8

v4 v3
5 7

4/14 4/12
4/ 9

v4 v3
7/7

12

20

(b)

s
13

1 11/

v1 v2

7/2

t
4

7/10 4

t
4/4

v2 v1

10 4 8 4

v4 v3
5 7
7

13

11/14

v4

13

(c)

11
13

11

t
4

...

...

...

v2

3 11

v4

Exercit iu: s a se deseneze grafurile pentru pa sii r ama si ai algoritmului lui Ford-Fulkerson.
Curs 8

Algoritmul Ford-Fulkerson de baz a


Analiza complexit a tii

Timpul de execut ie depinde de felul cum se calculeaz a drumul de cre stere p n linia 4 a algoritmului.

Curs 8

Algoritmul Ford-Fulkerson de baz a


Analiza complexit a tii

Timpul de execut ie depinde de felul cum se calculeaz a drumul de cre stere p n linia 4 a algoritmului. Ipoteza: toate muchiile au numere ntregi ca si capacit a ti (adic a 0,1,2,. . . ).

Curs 8

Algoritmul Ford-Fulkerson de baz a


Analiza complexit a tii

Timpul de execut ie depinde de felul cum se calculeaz a drumul de cre stere p n linia 4 a algoritmului. Ipoteza: toate muchiile au numere ntregi ca si capacit a ti (adic a 0,1,2,. . . ).
Dac a capacit a tile sunt numere rat ionale, le putem nlocui cu numere ntregi f ac and o operat ie de scalare corespunz atoare.

Curs 8

Algoritmul Ford-Fulkerson de baz a


Analiza complexit a tii

Timpul de execut ie depinde de felul cum se calculeaz a drumul de cre stere p n linia 4 a algoritmului. Ipoteza: toate muchiile au numere ntregi ca si capacit a ti (adic a 0,1,2,. . . ).
Dac a capacit a tile sunt numere rat ionale, le putem nlocui cu numere ntregi f ac and o operat ie de scalare corespunz atoare.

O implementare direct a a algoritmului Ford-Fulkerson dureaz a O (E |f |) unde f este uxul maxim g asit de algoritm.
Motiv: bucla while din liniile 4-8 se execut a de cel mult |f | ori deoarece valoarea uxului cre ste cu cel put in 1 de ecare dat a.

Curs 8

Analiza complexit a tii


0 000
1

Un exemplu care dureaz a (E |f |)

100
100

100 000 0

999

999
1
1

100

000

t v
100 000 0

s
100

000 0

000

v (b)

999

999

999 999 1
1 99 9 999
1

999

999

1
999 999 1

v (c)

(a)

Un ux maxim f n ret eaua de transport (a) are |f | = 2000000. A alegere proast a de drum de cre stere cu capacitatea 1 este marcat a cu ro su. (b) si (c) ilustreaz a ret elele reziduale produse dup a cre sterea cu drumul de cre stere marcat cu ro su.

Curs 8

Analiza complexit a tii


0 000
1

Un exemplu care dureaz a (E |f |)

100
100

100 000 0

999

999
1
1

100

000

t v
100 000 0

s
100

000 0

000

v (b)

999

999

999 999 1
1 99 9 999
1

999

999

1
999 999 1

v (c)

(a)

Un ux maxim f n ret eaua de transport (a) are |f | = 2000000. A alegere proast a de drum de cre stere cu capacitatea 1 este marcat a cu ro su. (b) si (c) ilustreaz a ret elele reziduale produse dup a cre sterea cu drumul de cre stere marcat cu ro su. Complexitatea algoritmului se mbun at a te ste dac a p n linia 4 se calculeaz a folosind o c autare n l a time care garanteaz a c ap este o cale cea mai scurt a de la s la t n ret eaua rezidual a, n care ecare muchie are o distant a unitar a (greutate) algoritmul Edmonds-Karp cu complexitatea O (|V | |E |2 ).
Curs 8

Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite

Fie B = (V , E ) un graf bipartit ntre submult imile V1 si V2 ale lui V. Denit ie (cuplaj, cuplaj maxim) Un cuplaj n B este o mult ime de muchii C E cu proprietatea c a oricare 2 muchii din C nu au un cap at comun. Cuplajul C este maxim dac a are un num ar maxim de muchii. Calculul unui cuplaj maxim n B = (V1 V2 , E ) se poate face astfel:
1

Extindem B cu 2 noduri noi: s (surs a) si t (destinat ie), apoi cu arcuri cu capacitatea 1 de la s la toate nodurile din V1 , si de la toate nodurile din V2 la t . Toate muchiile lui G se orienteaz a de la V1 la V2 , cu capacitatea 1. Se calculeaz a un ux maxim de la s la t .
Curs 8

Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite

Construirea unei ret ele de ux pentru un graf bipartit: Exemplu


x5 y4 x4 y3 x3 y2 x2 y1 x1

Curs 8

Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite

Construirea unei ret ele de ux pentru un graf bipartit: Exemplu


x5 y4 x4 y3 s x3 y2 x2 y1 x1 t

Curs 8

Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite

Construirea unei ret ele de ux pentru un graf bipartit: Exemplu


x5 y4 x4 y3 s x3 y2 x2 y1 x1 t

Cuplaj maxim C = {(x2 , y1 ), (x3 , y2 ), (x4 , y4 ), (x5 , y3 )}

Curs 8

Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite

Construirea unei ret ele de ux pentru un graf bipartit: Exemplu


x5 y4 x4 y3 s x3 y2 x2 y1 x1 t

Cuplaj maxim C = {(x2 , y1 ), (x3 , y2 ), (x4 , y4 ), (x5 , y3 )} Teorem a


Fie G ret eaua de ux construit a pentru un graf bipartit B = (V1 V2 , E ) si f un ux maxim n G . Atunci mult imea muchiilor (u , v ) ale lui f cu u V1 , v V2 si f (u , v ) = 1 este un cuplaj maxim n B .
Curs 8

Aplicat ii si extensii
Aplicat ia 2: Flux maxim de cost minim

Problem a G = (V , E ): ret ea de transport n care muchiile (u , v ) au asociate, pe l ang a o capacitate, si un cost unitar cost (u , v ) 0. Un ux maxim de cost minim n G este un ux maxim f n G pentru care suma f (u , v ) cost (u , v )
(u ,v )E

este minim a.

Curs 8

Aplicat ii si extensii
Aplicat ia 2: Flux maxim de cost minim

Solut ie: Adaptare a algoritmului Edmonds-Karp Se asociaz a costuri la toate muchiile din ret elele reziduale ale unui ux f :
muchia (u , v ) are costul cost (u , v ) dac a c (u , v ) > f (u , v ) n ret eaua original a muchia (u , v ) are costul cost (u , v ) dac a f (u , v ) < 0 n ret eaua original a

In loc de drum cel mai scurt de la sursa s la destinat ia t , se caut a un drum p de la s la t cu cost minim n ret eaua rezidual a.
p poate g asit cu algoritmul lui Bellman-Ford.

Apoi, uxul va incrementat pe drumul p cu valoarea maxim a posibil a (=minimul diferent elor dintre capacitate si ux pentru ecare arc de pe drum).
Curs 8

Bibliograe

Capitolul 27 din T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduction to Algorithms. MIT Press, 2000.

Curs 8

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