34
Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universit ` a degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 1/34

Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Sommario della lezione

Flusso in Grafi

Motivazioni

Algoritmi

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 1/34

Page 2: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Flusso in grafi

Spesso i grafi vengono usati per modellare reti di trasporto, ovvero retisui cui archi “viaggiano cose” ed i cui nodi fungono da “switches” cheinstradano traffico verso differenti archi. Esempi di tale situazioneincludono

Reti viarie, in cui gli archi rappresentano autostrade, nodirappresentano svincoli e su di esse viaggiano autoveicoli

Reti di calcolatori, in cui gli archi rappresentano connessioni di rete ,nodi rappresentano switches e su di esse viaggiano pacchetti di dati

Reti idriche, in cui gli archi rappresentano condutture, nodirappresentano giunzioni tra diverse condutture e in esse fluisceacqua, etc.

Reti siffatte hanno in comune alcune caratteristiche: capacità associateagli archi (indicanti quanto ciascun arco può trasportare), nodi sorgentinel grafo, ovvero nodi che generano traffico, nodi destinazione, ovveronodi che assorbono traffico, ed il traffico stesso che transita sugli archi.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 2/34

Page 3: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Flusso in grafi

Consideremo grafi di questo tipo, riferendoci al traffico circolante sulla retemediante il temine di flusso, da intendersi per il momento come un’entitàastratta e generale che viene generata ad un nodo sorgente, trasmessaattraverso gli archi, ed assorbita al nodo destinazione.

Formalmente, un grafo di flusso è un grafo diretto G = (V,E) con leseguenti caratteristiche:

associato ad ogni arco e ∈ E vi è un numero c(e) ≥ 0 che chiameremocapacità di evi è un nodo s chiamato sorgente, senza archi entrantivi è un nodo t chiamato destinazione, senza archi uscenti

Esempio:

s

u

v

t

20

10

30

10

20

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 3/34

Page 4: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Definizione di flusso in un grafo G = (V,E)

Per noi un s− t flusso è una funzione f : E → R+ che associa ad ogniarco e ∈ E un numero reale f(e) ≥ 0 (intuitivamente, il numero f(e)

rappresenta la quantità di flusso trasportata dall’arco e).

Un flusso f deve soddisfare le seguenti due condizioni

1. (Vincoli sulle capacità) ∀e ∈ E 0 ≤ f(e) ≤ c(e)

2. (Vincoli sulla conservazione del flusso) ∀v ∈ V, s 6= v 6= t, vale

e entranti in v

f(e) =∑

e uscenti da v

f(e)

Il valore v(f) del flusso f sarà la quantità di flusso uscente dalla sorgentes, ovvero

v(f) =∑

e uscenti da s

f(e)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 4/34

Page 5: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Esempio

Rete di flusso G = (V,E), con capacità sugli archi

s

2

3

4

5

6

7

t

104

50

155

4 4

4 2

90

150

82

307

60

15 0

15 0

100

102

107

ed un flusso f in G, con il valore f(e), per ogni e ∈ E, espresso in rosso.Si può verificare che il flusso f soddisfa sia i vincoli sulle capacità che ivincoli sulla conservazione del flusso ed ha valore 9.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 5/34

Page 6: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Possono essere assegnati diversi valori di flusso nello stes so grafo G

s

2

3

4

5

6

7

t

1010

54

1514

4 0

4 0

99

151

88

3014

64

15 0

15 0

109

109

1010

Il flusso in G sopra rappresentato ha valore 28. Si pone quindi il seguenteProblema : Data una rete di flusso G, determinare l’s− t flusso f di valore

v(f) =∑

e uscenti da s

f(e)

massimo.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 6/34

Page 7: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Limitazioni sul valore del flusso v(f)

La struttura del grafo G impone delle naturali limitazioni superiori al valoredi un s− t flusso in G.

Se dividiamo l’insieme dei vertici di G in due sottoinsiemei disgiunti A e B,con s ∈ A e t ∈ B, allora ogni flusso da s a t dovrà passare da A a B perraggiungere la destinazione t, “attraversando” il grafo sugli archi chevanno da vertici in A a vertici di B.

La somma delle capacità di tali archi è un ovvio limite superiore allaquantità di flusso che può passare da A a B, ovvero che può andare da s

a t.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 7/34

Page 8: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Vediamo un esempio

Nel grafo di sotto, se consideriamo A = {s}, e B = {2, 3, 4, 5, 6, 7, t}

otteniamo immediatamente che per ogni flusso f valev(f) ≤ (10 + 5 + 15) = 30

s

2

3

4

5

6

7

t

10

5

15

4

4

9

15

8

30

6

15

15

10

10

10

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 8/34

Page 9: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Vediamo un esempio

Nello stesso grafo, potremmo considerare invece A = {s, 2, 3, 4}, eB = {5, 6, 7, t} ed ottenere che per ogni flusso f valev(f) ≤ (9 + 15 + 8 + 30) = 62

s

2

3

4

5

6

7

t

10

5

15

4

4

9

15

8

30

6

15

15

10

10

10

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 9/34

Page 10: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Vediamo un esempio

Infine, potremmo considerare A = {s, 3, 4, 7}, e B = {2, 5, 6, t} ed ottenereche per ogni flusso f vale v(f) ≤ (10 + 8 + 10) = 28, (il che, tra l’altromostra anche l’interessante fatto che l’esempio di flusso che abbiamoprima trovato, di valore 28, è di fatto un flusso di valore massimo).

s

2

3

4

5

6

7

t

10

5

15

4

4

9

15

8

30

6

15

15

10

10

10

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 10/34

Page 11: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Conseguenza

Data una rete di flusso G = (V,E), con sorgente s e destinazione t, untaglio in G è una partizione (A,B) dei vertici V in sottoinsiemi disgiuntiA e B tali che s ∈ A e t ∈ B.

La capacità di un taglio (A,B) è data da

c(A,B) =∑

e uscente da A

c(e) =∑

e:e=(a,b),a∈A,b∈B

c(e)

In ogni rete di flusso G vale che

maxf :f è un flusso in G

v(f) ≤ min(A,B):(A,B)è un taglio in G

c(A,B)

Proviamolo...

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 11/34

Page 12: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Risultato intermedio

Siano f un flusso e (A,B) un taglio in G. Allora il flusso netto cheattraversa il taglio è uguale al flusso uscente da s, ovvero

(

e uscente da A

f(e)−∑

e entrante in A

f(e)

)

=∑

e uscente da s

f(e) = v(f)

s

2

3

4

5

6

7

t

1010

54

1514

4 0

4 0

99

151

88

3014

64

15 0

15 0

109

109

1010

Flusso netto =v(f) = 28

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 12/34

Page 13: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Risultato intermedio

Siano f un flusso e (A,B) un taglio in G. Allora il flusso netto cheattraversa il taglio è uguale al flusso uscente da s, ovvero

(

e uscente da A

f(e)−∑

e entrante in A

f(e)

)

=∑

e uscente da s

f(e) = v(f)

s

2

3

4

5

6

7

t

1010

54

1514

4 0

4 0

99

151

88

3014

64

15 0

15 0

109

109

1010

Flusso netto =9 + 1 + 8 + 14− 4 = 28

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 13/34

Page 14: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Risultato intermedio

Siano f un flusso e (A,B) un taglio in G. Allora il flusso netto cheattraversa il taglio è uguale al flusso uscente da s, ovvero

(

e uscente da A

f(e)−∑

e entrante in A

f(e)

)

=∑

e uscente da s

f(e) = v(f)

s

2

3

4

5

6

7

t

1010

54

1514

4 0

4 0

99

151

88

3014

64

15 0

15 0

109

109

1010

Flusso netto =10 + 8 + 10− 0− 0 = 28

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 14/34

Page 15: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Prova del risultato intermedio

Siano f un flusso e (A,B) un taglio in G. Allora il flusso netto cheattraversa il taglio è uguale al flusso uscente da s, ovvero

(

e uscente da A

f(e)−∑

e entrante in A

f(e)

)

=∑

e uscente da s

f(e) = v(f)

Prova :v(f) =

e uscente da s

f(e)

=∑

v∈A

(

e uscente da v

f(e)−∑

e entrante in v

f(e)

)

(per la conservazione

del flusso, tutti i termini all’ interno della

parentesi sono =0, tranne che per v = s)

=∑

e uscente da A

f(e)−∑

e entrante in A

f(e)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 15/34

Page 16: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Sui flussi e sui tagli

Sia f un qualsiasi flusso in G e sia (A,B) un qualsiasi taglio in G. Valeche il valore del flusso v(f) è al più pari alla capacità del taglio

s

2

3

4

5

6

7

t

10

5

15

4

4

9

15

8

30

6

15

15

10

10

10

capacità del taglio = 28 =⇒ valore del flusso ≤ 28

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 16/34

Page 17: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Proviamolo

Sia f un qualsiasi flusso in G e sia (A,B) un qualsiasi taglio in G. Valeche il valore del flusso v(f) è al più pari alla capacità c(A,B) del taglio

v(f) =∑

e uscente da A

f(e)−∑

e entrante in A

f(e)

≤∑

e uscente da A

f(e)

≤∑

e uscente da A

c(e) (in quanto f(e) ≤ c(e))

= C(A,B)

s

a

c

e

u

t

v

n

o

8

532

44

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 17/34

Page 18: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Riassumendo

Abbiamo provato che

∀ flusso f e taglio (A,B) vale v(f) ≤ c(A,B)

il che implica

In ogni rete di flusso G vale che

maxf :f è un flusso in G

v(f) ≤ min(A,B):(A,B)è un taglio in G

c(A,B)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 18/34

Page 19: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Ciò ci suggerisce anche un “certificato” di ottimalità per flus si e tagli

Sia f un qualsiasi flusso in G e sia (A,B) un qualsiasi taglio in G. Se

v(f) = c(A,B)

allora f è un flusso di valore massimo e (A,B) è un taglio di capacitàminima.

s

2

3

4

5

6

7

t

1010

54

1514

4 4

4 0

99

151

88

3014

64

15 0

15 0

109

109

1010

v(f) = 28 = c(A,B)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 19/34

Page 20: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Abbiamo quindi i seguenti problemi algoritmici;

Data una rete di flusso G = (V,E), con sorgente s, destinazione t ecapacità sugli archi c(e), per ogni e ∈ E, determinare

1. un flusso in G di valore v(f) massimo

2. un taglio in G di capacità minima

Vedremo che tali problemi sono di fatto equivalenti, indi daremo unalgoritmo per il primo problema che come bonus risolverà anche ilsecondo problema.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 20/34

Page 21: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Una nota storica:

È interessante notare che storicamente il primo problema (flussomassimo) fu introdotto durante la Guerra Fredda per risolvere il secondo(minimo taglio). Più precIsamente, si intendeva determinare il minimonumero di “tagli da effettuare” (mediante bombardamenti...) alla reteferrioviaria sovietica per sconnettere Mosca dal resto dell’URSS.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 21/34

Page 22: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Possibile algoritmo Greedy per ottenere il flusso di valore mas simo

Algoritmo Greedy

Inizia con f(e) = 0 per ogni arco e ∈ E

Trova un cammino P da s a t in cui ogni arco ha f(e) < c(e)

Incrementa al massimo il flusso lungo il cammino P

Itera fin quando e possibile

s

u

v

t

2020

100

30 20

100

2020

valore flusso= 20

s

u

v

t

2020

1010

30 10

1010

2020

valore flusso= 30

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 22/34

Page 23: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Abbiamo bisogno di un metodo per “correggere” una soluzione gr eedy

Partiamo dalla soluzione greedy e tentiamo di migliorarla mandando 10unità di flusso sull’arco (s, v). Il guaio è che adesso ci troviamo un“eccesso” di 10 unità di flusso entranti nel nodo v. Per cavarcela,immaginiamo di “spingere” tali 10 unità di flusso eccedenti in v sull’arco(u, v) in direzione contraria al flusso blu precedentemente assegnato, chepoi invieremo a t attraverso l’arco (u, t), ottenendo l’ottimo.

s

u

v

t

2020

1010

30 20

100

2020

10 s

u

v

t

2020

1010

30 20

1010

2020

10

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 23/34

Page 24: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Riassumendo

Osserviamo ora che le assegnazioni di flusso nella figura di sinistra sonoequivalenti a quella di destra, in quanto il flusso rosso “controcorrente” divalore 10 sull’arco (v, u) equivale a diminuire di 10 il flusso blu di 20precedentemente assegnato all’arco (u, v).Ci occorre un modo per formalizzare la possibilità di usare flusso“controcorrente” al fine di migliorare soluzioni greedy.

s

u

v

t

2020

1010

30 10

1010

2020

s

u

v

t

2020

1010

30 20

1010

2020

10

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 24/34

Page 25: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Introduciamo il concetto di Rete Residua di una rete di flusso G = (V,E)

Consideriamo un arco e = (u, v) ∈ E, con capacità c(e) e flussoassegnato f(e).Ad es. u v15

5

Su quest’arco, possiamo ci rimane spazio per aumentare il flusso da u a v

di 10 unità, ma anche di diminuire il flusso da u a v di 5 unità, ovvero di“aumentare” il flusso da v verso u di 5 unità. Quindi, una volta averassegnato 5 unità di flusso da u verso v, dal punto di vista concettuale ècome se si fosse creato nel grafo un arco da v verso u di capacità 5 (sucui appunto possiamo mandare fino a 5 unità di flusso),

u v155

5e la capacità (residua) dell’arco da u a v fosse adesso solo di 10 (su cuipossiamo mandare fino ad altre 10 unità di flusso). In conclusione:

u v10

5

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 25/34

Page 26: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Formalmente:

Dato un grafo di flusso G = (V,E), con capacità sugli archi c(e) e flussoassegnato f(e), definiamo la rete residua Gf = (V,Ef ), con capacità sugliarchi cf (e), nel modo seguente:

1. (u, v) ∈ E, f(u, v) < c(u, v)⇒ (u, v) ∈ Ef , cf (u, v) = c(u, v)− f(u, v)

2. (u, v) ∈ E, f(u, v) > 0⇒ (v, u) ∈ Ef , cf (v, u) = f(u, v)

Gli archi di tipo 1. li chiameremo archi in avanti, Gli archi di tipo 2. lichiameremo archi all’indietro.La capacità di un arco in Gf la chiameremo capacità residua.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 26/34

Page 27: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Cammini aumentanti in reti residue:

Sia P un cammino semplice da s a t in Gf (cioè P non passa mai per unostesso vertice più di una volta). Definiamo

bottleneck (P, f) = min{cf (e) : e un arco di P}

che rappresenta la massima quantità di flusso che possiamo ancoraspedire su P . Il seguente algoritmo fà proprio questo, aggiornando ilvalore di un flusso f datogli in input (insieme alle capacità c)

aumenta (f, c, P )

Sia b = bottleneck (P, f)

For ogni arco e = (u, v) ∈ P

If e = (u, v) e un arco in avanti Then

incrementa f(e) in G di una quantit a pari a b

Else ( (u, v) e un arco all’indietro, e sia e = (v, u) ∈ E)

decrementa f(e) in G di b

return (f)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 27/34

Page 28: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

aumenta(f, c, P ) restituisce un flusso aggiornato f ′ corretto

aumenta (f, c, P )

Sia b = bottleneck (P, f)

For ogni arco e = (u, v) ∈ P

If e = (u, v) e un arco in avanti Then

incrementa f(e) in G di una quantit a pari a b

Else ( (u, v) e un arco all’indietro, e sia e = (v, u) ∈ E)

decrementa f(e) in G di b

return (f)

Se e = (u, v) ∈ P è un arco in avanti, allora cf (e) = c(e)− f(e), quindi:f ′(e) = f(e)+bottleneck (P, f) ≤ f(e)+cf (e) = f(e)+(c(e)−f(e)) = c(e)

Se e = (u, v) ∈ P è un arco all’indietro, allora cf (e) = f(v, u), quindi:c(e) ≥ f(e) ≥ f ′(e) = f(e)− bottleneck (P, f) ≥ f(e)− f(e) ≥ 0

Per gli archi /∈ P vale f ′ = f , quindi i vincoli sulle capacità sono rispettatidal nuovo flusso f ′ per tutti gli archi.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 28/34

Page 29: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Proviamo ora che sono rispettati i vincoli di conservazione d el flusso

Occorre provare che per il nuovo flusso f ′ vale ∀v ∈ V, s 6= v 6= t,

e entranti in v

f ′(e) =∑

e uscenti da v

f ′(e).

Ovviamente ciò occorre provarlo solo per i nodi che sono nel cammino P ,visto che per gli altri nodi il flusso passante su di essi non è cambiato.

Sia u un nodo nel cammino P , (w, u) l’arco attraverso il quale P entra in u,(u, z) l’arco attraverso il quale P esce u e b = bottleneck (P, f).

Distinguiamo 4 casi:

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 29/34

Page 30: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Caso 1: (w, u) e (u, z) sono entrambi archi in avanti

Allora vale

f ′(w, u) = f(w, u) + b e f ′(u, z) = f(u, z) + b.

Ne segue

e entranti in u

f ′(e) =∑

e6=(w,u)

f ′(e) + f ′(w, u)

=∑

e6=(w,u)

f(e) + f(w, u) + b

=∑

e6=(u,z)

f(e) + f(u, z) + b

=∑

e6=(u,z)

f ′(e) + f ′(u, z)

=∑

e uscenti da u

f ′(e)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 30/34

Page 31: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Caso 2: (w, u) è in avanti, (u, z) è all’indietro

Allora vale

f ′(w, u) = f(w, u) + b e f ′(z, u) = f(z, u)− b.

Ne segue

e entranti in u

f ′(e) =∑

e6=(w,u),(z,u))

f ′(e) + f ′(w, u) + f ′(z, u)

=∑

e6=(w,u),(z,u)

f(e) + f(w, u) + b+ f(z, u)− b

=∑

e6=(w,u),(z,u)

f(e) + f(w, u) + f(z, u)

=∑

e uscenti da u

f(e)

=∑

e uscenti da u

f ′(e)

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 31/34

Page 32: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Rimangono da considerare i casi:

Caso 3: (w, u) è arco all’indietro e (u, z) è arco in avanti

Caso 4: (w, u) e (u, z) sono entrambi archi all’indietro

da esaminare per esercizio.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 32/34

Page 33: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Algoritmo per il calcolo del flusso massimo

Ford-Fulkerson (G, s, t, c)

For ogni e ∈ E poni f(e)← 0

Gf ← grafo residuo

While (esiste un cammino P da s a t in Gf )

f ← aumenta (f, c, P )

calcola il nuovo Gf

return(f)

Confrontiamolo con l’algoritmo Greedy:Inizia con f(e) = 0 per ogni arco e ∈ E

While ∃ cammino P da s a t in cui ogni arco ha f(e) < c(e)

Incrementa al massimo il flusso lungo il cammino P

L’algoritmo di Ford-Fulkerson è più flessibile, in quanto su dati archi puòanche diminuire flusso precedentemente assegnato (mandando flusso“controcorrente”) al fine di utilizzare cammini da s a t non altrimentiutilizzabili.

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 33/34

Page 34: Flusso in Grafi Motivazioni Algoritmi · Sommario della lezione Flusso in Grafi Motivazioni Algoritmi Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro

Vediamo un esempio

Universita degli Studi di Salerno – Corso di Algoritmi – Prof. Ugo Vaccaro – Anno Acc. 2013/14 – p. 34/34