Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo /...

30
Lezione n° 23 Problema del Massimo Flusso: Formulazione Matematica Teorema flusso massimo / taglio minimo Algoritmo del Grafo Ausiliario Lezioni di Ricerca Operativa Corso di Laurea in Informatica Università di Salerno Prof. Cerulli – Dott.ssa Gentili Dott. Carrabs

Transcript of Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo /...

Page 1: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Lezione n° 23

Problema del Massimo Flusso:

- Formulazione Matematica

- Teorema flusso massimo / taglio minimo

- Algoritmo del Grafo Ausiliario

Lezioni di Ricerca OperativaCorso di Laurea in Informatica

Università di Salerno

Prof. Cerulli – Dott.ssa Gentili – Dott. Carrabs

Page 2: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Il Problema del Massimo Flusso

Nodo sorgente: s

Nodo pozzo: t

Capacità: uij

10

15

4

156

8

12

5

6

10

1

2 3

4 5

6

Sia G = (V,A) un grafo orientato su cui sia definito un vettore u = [uij] delle capacità associate agli archi del grafo; inoltre, siano s e t due nodi distinti, detti rispettivamente sorgente (o origine) e pozzo (o destinazione). Il problema del flusso massimo consiste nel determinare la massima quantità di flusso che è possibile inviare da s a t attraverso G.

Page 3: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Nodo sorgente fornisce flusso fNodo destinazione assorbe flusso -fTutti gli altri nodi sono nodi di transito

Voglio spedire dalla sorgente la massima quantità di flusso f fino al pozzo senza violare i vincoli di capacità

Il Problema del Massimo Flusso

Page 4: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

pozzo al sorgente dalla inviato totaleflusso

j)(i, arcosull' viaggiache flusso di quantità

f

xij

Parametri di input:- Grafo orientato G=(V,A)- Nodo sorgente s- Nodo destinazione t

Variabili decisionali:

j)(i, arcodell' capacità iju

Il Problema del Massimo Flusso: formulazione

Page 5: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Il Problema del Massimo Flusso: formulazione

Page 6: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

10

15

4

156

8

12

5

6

10

1

2 3

4 5

6

Il Problema del Massimo Flusso: esempio

Page 7: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

3,10

3,15

3,4

1,15

68

12

5

1,6

1,10

1

2 3

4 5

6

1 1 1 3 3 3 564514362312 xxxxxx

Il Problema del Massimo Flusso: esempio

Page 8: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Il flusso massimo su questo grafo è pari a 6 (corrispondente alla capacità minima degli archi del cammino).

2 t3s10 68

49

Il Problema del Massimo Flusso: concetti fondamentali

2 t3s10 68

49

Page 9: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

La retta in figura mostra un taglio del grafo, ossia un partizionamento dei vertici del grafo in due sottinsiemi V1={s,2,3}

e V2={4,t} tali che:

- Il nodo sorgente appartiene a V1

- Il nodo pozzo appartiene a V2

- V1 V2 = V - V1 ∩ V2 = Ø

Estendiamo questo concetto di taglio ad un grafo più complesso

Il Problema del Massimo Flusso: concetti fondamentali

2 t3s10 68

49

Page 10: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1

10

15

4

156

8

12

5

6

10

Taglio 3: V1 ={1,4,5} V2 = {2,3,6} archi del taglio ={(1,2) (4,3) (5,3) (5,6)}

2 3

4 5

6

Taglio 1: V1 ={1,2,3} V2 = {4,5,6} archi del taglio ={(1,4) (2,4) (2,5) (3,6)}

Taglio 2: V1 ={1,3,5} V2 = {2,4,6} archi del taglio ={(1,2) (1,4) (3,6) (5,6)}

Taglio di un grafo e archi del taglio

Page 11: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1

10

15

4

156

8

12

5

6

10

2 3

4 5

6

Dato il taglio (V1, V2) la capacità del taglio è pari alla somma delle capacità degli archi del taglio.

Capacità di un taglio

Page 12: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1

10

15

4

156

8

12

5

6

10

Taglio 3: V1 ={1,4,5} V2 = {2,3,6} archi del taglio ={(1,2) (4,3) (5,3) (5,6)}Capacità = 10 + 8 + 6 + 15 = 39

2 3

4 5

6

Taglio 2: V1 ={1,3,5} V2 = {2,4,6} archi del taglio ={(1,2) (1,4) (3,6) (5,6)}Capacità = 10 + 6 + 4 + 15 = 35

Taglio 1: V1 ={1,2,3} V2 = {4,5,6} archi del taglio ={(1,4) (2,4) (2,5) (3,6)}Capacità = 6 + 5 + 12 + 4 =27

Capacità di un taglio

Page 13: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Proprietà 1:Il valore di un qualunque flusso ammissibile è minore o uguale alla capacità di un qualunque taglio.

Dim.

1 )()(Vi iBSkki

iFSjij xxf

Sia X un flusso ammissibile e (V1,V2 ) un qualunque taglio del grafo. Sommando i vincoli di bilanciamento del flusso relativi ai nodi in V1 otteniamo:

Relazione tra il massimo flusso e la capacità di un taglio

Page 14: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1221 ,,,, VVijji

VVjiij xxf

1 )()(Vi iBSkki

iFSjij xxf

Relazione tra il massimo flusso e la capacità di un taglio

Page 15: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

La capacità di un taglio mi fornisce un limite superiore al valore del flusso f che posso spedire dalla sorgente al pozzo

Se ho un flusso ammissibile di valore f e riesco a trovare un taglio la cui capacità è uguale ad f allora posso concludere che il flusso che ho trovato è massimo

Teorema (Max Flow- Min Cut)Il flusso massimo che può essere spedito dalla sorgente al pozzo su un grafo orientato G è uguale alla capacità del taglio minimo di G.

Relazione tra il massimo flusso e la capacità di un taglio

Page 16: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Algoritmo dei Cammini AumentantiL’algoritmo dei cammini aumentanti risolve il problema del flusso massimo utilizzando il grafo delle capacità residue (o grafo ausiliario) per decidere come spedire il flusso sulla rete dove ad ogni arco è associata una capacità residua pari a .

Consideriamo un grafo G=(V,A) bi-orientato ed un flusso ammissibile x (inizialmente il metodo considera il flusso nullo ossia ).

I passi principali dell’algoritmo dei cammini aumentanti sono:

1)Trovare (sul grafo ausiliario) un qualsiasi path p dal nodo sorgente al nodo pozzo su cui è possibile far transitare una quantità di flusso ∆ > 0 (path aumentante). Se non esiste tale path l’algoritmo si arresta.

2)Determinare il valore del flusso, sul path aumentante p trovato, che sarà pari alla capacità minima tra gli archi di p ( i.e. ∆=min{: (i,j) appartiene a p} ).

3)Sottrarre il valore ∆ dalla capacità di ogni arco (i,j) p e sommarlo alla ∈capacità dell’arco (j,i) definendo in questo modo le nuove capacità residue del grafo ausiliario.

Page 17: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

17

Grafo ausiliario e capacità residueDato un grafo G=(V,A) ed un flusso ammissibile x su G, il grafo ausiliario

G(x)=(V,A’) è così costruito: V’=V A’ definisce un grafo bi-orientato. Il valore della capacità sugli archi in A’

sono così determinati:

se (i,j) A ∊ (i,j) A’ con capacità residua r∊ ij = uij – xij

se (i,j) A (j,i) A’ con capacità residua r∊ ij = xij

Se un arco ha capacità residua maggiore di zero, significa che posso spedire ancora del flusso utilizzando l’arco.

Poiché voglio spedire flusso dalla sorgente al pozzo, allora se riesco ad individuare un cammino da s a t sul grafo ausiliario posso spedire del flusso addizionale dalla sorgente al pozzo.

Un cammino da s a t sul grafo ausiliario viene definito cammino aumentante.

Fino a quando nel grafo ausiliario esistono cammini aumentanti allora posso incrementare il flusso da s a t, altrimenti il flusso è massimo.

Page 18: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

5

8

45

3 6

410

61

3

2

1 1

1 5 7

2 4

3 6

58

4

5

0

6

4

10

6

1

3 2

1

10

0

0

03

0

0

0

0

f = 0

1

1

 

   

Algoritmo del Grafo Ausiliario

Page 19: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

58

4

5

0

6

4

10

6

1

3 2

1

10

0

0

03

0

0

0

0

P = 1-5-4-7

∆=4 f = 4

1 5 7

2 4

3 6

54

4

5

0

6

0

6

6

1

3 2

1

14

0

0

43

4

0

0

0

P = 1-2-4-7

∆=3 f = f+∆ = 7

Un path aumentante è un path da s a t sul grafo ausiliario.Viene chiamato ‘’aumentante’’ perché permette di aumentare il flusso sul grafo da s a t utilizzando gli archi del path.Il flusso che posso spedire è uguale alla minima capacità residua degli archi del path.

1

1

Algoritmo del Grafo Ausiliario

Page 20: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

54

4

5

0

6

0

6

6

1

3 2

1

14

0

0

43

4

0

0

0

P = 1-2-4-7

∆=3 f = f+∆ = 7

1 5 7

2 4

3 6

24

4

5

0

6

0

3

6

1

0 5

1

17

0

3

43

4

0

0

0

P = 1-3-6-7

∆=4 f = f+∆ = 11

1

1

Algoritmo del Grafo Ausiliario

Page 21: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

24

4

5

0

6

0

3

6

1

0 5

1

17

0

3

43

4

0

0

0

P = 1-3-6-7

∆=4 f = f+∆ = 11

1 5 7

2 4

3 6

24

0

1

0

6

0

3

2

5

0 5

1

17

4

3

43

4

0

0

P = 1-5-6-7

∆=2 f = f+∆ = 13

4

1

1

Algoritmo del Grafo Ausiliario

Page 22: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

24

0

1

0

6

0

3

2

5

0 5

1

17

4

3

43

4

0

0

P = 1-5-6-7

∆=2 f = f+∆ = 13

4

1 5 7

2 4

3 6

22

0

1

0

4

0

3

0

7

0 5

1

17

4

3

63

4

0

2

P = 1-5-6-4-7

∆=1 f = f+∆ = 14

4

1

1

Algoritmo del Grafo Ausiliario

Page 23: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

1 5 7

2 4

3 6

22

0

1

0

4

0

3

0

7

0 5

1

17

4

3

63

4

0

2

P = 1-5-6-4-7

∆=1 f = f+∆ = 14

4

1 5 7

2 4

3 6

21

0

1

0

3

0

2

0

7

0 5

0

28

4

3

73

4

0

3

4

Non riesco ad individuare un cammino aumentante Il flusso che ho individuato è ottimo

1

1

Algoritmo del Grafo Ausiliario

Page 24: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Il valore delle variabili decisionali, per ogni arco del grafo di partenza, è pari alla differenza tra la capacità originale dell’arco meno quella residua nell’ultimo grafo ausiliario (il valore viene ignorato se negativo). Ad esempio per l’arco (1,2) abbiamo una capacità iniziale pari a 5 e una finale pari a 2 quindi x12=3 .

Analogamente abbiamox15=8-1=7 , x13=4-0=4,x25=1-1=0, x24=3-0=3 ecc.ecc.

1 5 7

2 4

3 6

21

0

1

0

3

0

2

0

7

0 5

0

28

4

3

73

4

0

3

4

1

Grafo iniziale Grafo finale

1 5 7

2 4

3 6

5

8

45

3 6

410

61

3

2

1 1

1

Algoritmo del Grafo Ausiliario

Page 25: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Si noti che nello schema generale del metodo di Ford e Fulkerson ci sono dei dettagli che devono essere meglio chiariti:

• Come si identifica un cammino aumentante o come si mostra che non esiste un cammino aumentante?

• Come certificare che il flusso ottenuto è quello massimo?

La risposta a queste domande puo’ essere ottenuta considerando una particolare implementazione dell’algoritmo del cammino aumentante che da luogo al Labeling Algorithm di Ford and Fulkerson

Dettagli per la correttezza e l’implementazione

Page 26: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Idea Principale:

Per cercare un cammino si effettua una visita del grafo ausiliario a partire dalla sorgente e si etichettano (label) tutti i nodi che possono essere raggiunti

Se il pozzo viene etichettato, allora esiste un cammino aumentante e si puo’ incrementare il flusso da s a t attraverso il cammino trovato

Se il pozzo non viene etichettato allora si costruisce un taglio nel seguente modo:

• in V1 si inseriscono i nodi etichettati• in V2 si inseriscono i nodi non etichettati

Poichè la capacità del taglio così costruito è pari al flusso f inviato fino a quel momento, dal teorema MinCut/MaxFlow tale flusso f è massimo.

Labeling Algorithm di Ford and Fulkerson

Page 27: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Per poter individuare il taglio minimo, la cui capacità sarà uguale al flusso massimo f=14, è sufficiente controllare quali sono i nodi raggiungibili dalla sorgente 1 attraverso archi con capacità residua >0 nell’ultimo grafo ausiliario.

1 5 7

2 4

3 6

21

0

1

0

3

0

2

0

7

0 5

0

28

4

3

73

4

0

3

4

1

Grafo iniziale Grafo finale

Capacità = 14

Taglio : V1 ={1,2,3,5,6}, V2 = {4,7}

Individuazione taglio minimo

1 5 7

2 4

3 6

5

8

45

3 6

410

61

3

2

1 1

1

Page 28: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

28

1. Dato un grafo G=(V,A,u): 1.1 definisci un flusso iniziale X ammissibile, in particolare il flusso nullo: xij=0 per ogni (i,j) in A1.2 f=0

2. Costruisci il grafo ausiliario G(X)3. Cerca in G(X) un cammino aumentante p dalla sorgente al pozzo

3.1 Se non esiste alcun cammino allora STOP: il flusso corrente è massimo3.2 Altrimenti sia p il cammino aumentante trovato su G(X):

- Sia =min{rij: (i,j) appartiene a p }- Aggiorna le capacità residue sugli archi del cammino trovato: and - torna al passo 3.

4. Calcola il valore del flusso ottimo trovato:- )

L’algoritmo del cammino aumentante

Page 29: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

21000

1

21000

21000

21000

Complessità dell’algoritmo del grafo ausiliario

Page 30: Lezione n° 23 Problema del Massimo Flusso: - Formulazione Matematica - Teorema flusso massimo / taglio minimo - Algoritmo del Grafo Ausiliario Lezioni.

Per migliorare la complessità dell’algoritmo ci sono diversi approcci:

cercare un cammino con il numero minimo di archi (shortest augmenting path algorithm )

posso cercare un cammino con una capacità almeno pari ad una quantità fissata di volta in volta (capacity scaling algorithm)

algoritmi di preflow push

Approcci alternativi