Documente Academic
Documente Profesional
Documente Cultură
Curs 8
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
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
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
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)
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
Curs 8
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
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 (y , 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
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
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
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
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
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
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 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
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
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
Timpul de execut ie depinde de felul cum se calculeaz a drumul de cre stere p n linia 4 a algoritmului.
Curs 8
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
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
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
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
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
Curs 8
Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite
Curs 8
Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite
Curs 8
Aplicat ii si extensii
Aplicat ia 1: Cuplaje n grafuri bipartite
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