Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33
Ottimizzazione su grafi:massimo flusso (parte 1) p. 2/33 Reti di flusso Una rete di flusso è una struttura basata su un grafo orientato che permette la modellazione di flussi a regime stazionario. Esempi di applicazione: flusso di veicoli in un area urbana flusso dell acqua potabile nella rete idrica di una città flusso di informazione lungo una rete di telecomunicazione flusso di materiali in un impianto di produzione
Ottimizzazione su grafi:massimo flusso (parte 1) p. 3/33 Network flow Sia dato un grafo orientato G = (V,E) con V = {s,t, 1, 2,...,n 2} e E = m e sia data una capacità c ij associata a ciascun arco (i,j) E. Supponiamo che esistano un nodo s detto sorgente con solo archi uscenti, cioè δ (s) = ; un nodo t detto pozzo con solo archi entranti, cioè δ + (t) = ; I nodi distinti da s e da t sono detti nodi intermedi. Il grafo G con le caratteristiche suddette viene detto rete di flusso.
Ottimizzazione su grafi:massimo flusso (parte 1) p. /33 Flusso ammissibile DEFINIZIONE. Data una rete di flusso, si dice flusso ammissibile da s a t una funzione x : E R che soddisfa i seguenti vincoli: 0 x ij c i,j, (i,j) E (1) (h,j) δ + (h) x hj }{{} flusso uscente da h (i,h) δ (h) x ih }{{} flusso entrante in h = 0, h V \ {s,t} (2) Il valore del flusso è il flusso uscente dalla sorgente, dato da: f = (s,j) δ + (s) x sj
Ottimizzazione su grafi:massimo flusso (parte 1) p. 5/33 I vincoli (1) indicano che il flusso su ogni arco deve essere sempre non-negativo e non eccedere la capacità dell arco stesso. I vincoli (2) indicano che per ogni nodo intermedio il flusso totale entrante nel nodo deve essere uguale al flusso totale uscente dal nodo stesso. Per questo motivo, le n 2 equazioni (2) sono dette equazioni di conservazione (del flusso).
Ottimizzazione su grafi:massimo flusso (parte 1) p. 6/33 Esempio di flusso ammissibile 0 9 2 5 0 15 0 15 0 0 5 8 s 3 6 t 0 15 0 0 6 0 15 0 0 30 7 Valore del flusso:
Ottimizzazione su grafi:massimo flusso (parte 1) p. 7/33 Esempio di flusso ammissibile 6 9 2 5 0 15 6 15 0 3 5 8 8 s 3 6 t 8 11 15 0 1 6 15 0 11 30 7 Valore del flusso: 2
Ottimizzazione su grafi:massimo flusso (parte 1) p. 8/33 Esempio di flusso ammissibile 9 9 2 5 0 1 15 9 15 0 5 8 8 s 3 6 t 9 1 15 0 6 15 0 1 30 7 Valore del flusso: 28
Ottimizzazione su grafi:massimo flusso (parte 1) p. 9/33 Il problema del massimo flusso Problema del massimo flusso (Max Flow): determinare il flusso massimo che può fluire tra s e t senza contributi dei nodi intermedi.
Ottimizzazione su grafi:massimo flusso (parte 1) p. /33 Esempio di problema di flusso mass Immaginiamo che il grafo sia una rete idrica con il quale si tenta di portare dell acqua da un nodo sorgente s ad un utilizzatore rappresentato da un nodo t. Per far questo si usa una rete di tubature rappresentata dagli archi. Le tubature hanno una certa capacità c ij (cioè possono trasportare al più c ij litri di acqua al secondo). Le tubature si intersecano nei nodi, dove può essere deciso come l acqua che arriva nel nodo debba essere distribuita ai tubi in uscita. Si tratta di determinare come incanalare l acqua in modo da massimizzare il flusso da s a t.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 11/33 Max flow: problema di PL Il problema del massimo flusso corrisponde dunque al seguente problema di PL: max f = (i,j) δ + (s) x sj 0 x ij c i,j, (i,j) E x hj x ih = 0, h V \ {s,t} (h,j) δ + (h) (i,h) δ (h)
Ottimizzazione su grafi:massimo flusso (parte 1) p. 12/33 Tagli DEFINIZIONE. Si chiama taglio s-t o sezione s-t (s-t cut) una partizione (S, S) (con S = V \ S) dell insieme dei nodi tale che s S, t S. DEFINIZIONE. Si chiama capacità di un taglio s-t la quantità: C(S, S) = i S, j S cioè la somma delle capacità degli archi che hanno il primo estremo in S e il secondo estremo in S. c ij
Ottimizzazione su grafi:massimo flusso (parte 1) p. 13/33 Esempio di taglio 2 9 5 15 15 s 5 3 8 6 t 15 6 15 30 7 Capacità=30
Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33 Esempio di taglio 2 9 5 15 15 s 5 3 8 6 t 15 6 15 30 7 Capacità=62
Ottimizzazione su grafi:massimo flusso (parte 1) p. 15/33 Esempio di taglio 2 9 5 15 15 s 5 3 8 6 t 15 6 15 30 7 Capacità=28
Ottimizzazione su grafi:massimo flusso (parte 1) p. 16/33 Il problema del min cut Problema del minimo taglio (Min Cut): determinare un taglio s-t di capacità minima. Come vedremo, rappresenta il duale del problema di Max Flow.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 17/33 Flusso netto attraverso un taglio DEFINIZIONE. Dato un flusso ammissibile x, si chiama flusso netto attraverso il taglio s-t (S, S) la quantità: F(S, S) = x ij x ji i S, j S i S, j S cioè la differenza tra: somma dei flussi sugli archi uscenti da S ed entranti in S somma dei flussi sugli archi uscenti da S ed entranti in S
Ottimizzazione su grafi:massimo flusso (parte 1) p. 18/33 6 9 2 5 0 15 6 15 0 3 5 8 8 s 3 6 t 8 11 15 0 1 6 15 0 11 30 7 Valore del flusso=2
Ottimizzazione su grafi:massimo flusso (parte 1) p. 19/33 Relazione tra flusso netto di un taglio e valore del flusso TEOREMA. Dato un flusso ammissibile x, il flusso netto attraverso ogni taglio s-t è pari al valore del flusso, cioè F(S, S) = f, per ogni taglio (S, S). In particolare: f = F(V \ {t}, {t}, ) = (i,t) δ (t) x it cioè il flusso uscente dalla sorgente è uguale al flusso entrante nel pozzo.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 20/33 Dimostrazione del teorema. Consideriamo un generico taglio (S, S). Sommiamo le equazioni di conservazione del flusso (2) relative ai soli nodi h S \ {s}: x hj = 0 h S\{s} (h,j) δ + (h) (i,h) δ (h) x ih Sommiamo all equazione ottenuta il valore del flusso: f = (s,j) δ + (s) x sj
Ottimizzazione su grafi:massimo flusso (parte 1) p. 21/33 Si ottiene: x hj x ih + x sj = f h S\{s} (h,j) δ + (h) (i,h) δ (h) (i,j) δ + (s) (inserendo nella sommatoria il termine relativo a s) x hj h S (h,j) δ + (h) (i,h) δ (h) x ih = f x ih = f h S (h,j) δ + (h)x hj h S (i,h) δ (h)
Ottimizzazione su grafi:massimo flusso (parte 1) p. 22/33 h S,j S x hj } {{ } = + h S,j S h S,j S x hj x hj i S,h S x ih } {{ } = i S,h S x ih = f i S,h S x ih = f F(S, S) = f.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 23/33 Relazione tra capacità di un taglio e valore del flusso TEOREMA. Dato un flusso ammissibile x, il valore del flusso f è minore o uguale alla capacità di un qualunque taglio s-t, cioè f C(S, S), per ogni taglio (S, S). Dim. Considerato un generico taglio s-t (S, S), si ha: f = F(S, S) }{{} per teor. precedente = i S,j S i S,j S x ij }{{} c ij i S,j S c ij = C(S, S). x ij }{{} 0
Ottimizzazione su grafi:massimo flusso (parte 1) p. 2/33 I teoremi precedenti implicano la relazione di dualità debole: dove f max C min f max = valore del massimo flusso C min = capacità del minimo taglio In realtà è possibile dimostrare una relazione di dualità forte, cioè che in ogni rete di flusso, il valore del massimo flusso è uguale alla capacità del minimo taglio.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 25/33 Massimo Flusso - Minimo Taglio (Max Flow - Min Cut) TEOREMA. Un flusso ammissibile x è ottimo per il problema Max Flow se e solo se esiste un taglio s-t (S, S) tale che: In tal caso f = C(S, S). f = f max è il valore del massimo flusso S è ottimo per il problema Min Cut C(S, S) = C min è la capacità del minimo taglio. Per la dimostrazione del teorema dobbiamo introdurre il concetto di cammino aumentante.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 26/33 Archi saturi DEFINIZIONE. Dato un flusso ammissibile x, si dice che l arco (i,j) è saturo se x ij = c ij cioè il flusso sull arco è uguale alla capacità dell arco stesso
Ottimizzazione su grafi:massimo flusso (parte 1) p. 27/33 Archi diretti/archi inversi DEFINIZIONE. Dato un cammino semplice P = {(v 0,v 1 ), (v 1,v 2 ),...,(v p 1,v p )} chiamiamo: arco diretto un arco del tipo (v i 1,v i ) arco inverso un arco del tipo (v i,v i 1 ) Quindi gli archi diretti hanno verso concorde con quello di percorrenza del cammino P, mentre gli archi inversi hanno verso opposto.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 28/33 Rete incrementale DEFINIZIONE. Sia dato un flusso ammissibile x. La rete incrementale (o grafo residuo) Ḡ = (V,Ē) associata a x è ottenuta dalla rete originale G(V,E) sostituendo ogni arco (i,j) E con due archi: un arco diretto (i,j) di capacità residua c ij = c ij x ij un arco inverso (j,i)di capacità residua c ij = x ij ed eliminando alla fine gli archi con capacità residua nulla.
Ottimizzazione su grafi:massimo flusso (parte 1) p. 29/33 0 0 13 s 2 3 t 0 0 Valore del flusso: 5
Ottimizzazione su grafi:massimo flusso (parte 1) p. 30/33 Rete incrementale s 2 3 t 3 5
Ottimizzazione su grafi:massimo flusso (parte 1) p. 31/33 Cammino aumentante DEFINIZIONE. Un cammino aumentante (augmenting path) è un cammino da s a t nella rete incrementale s 2 3 t 3 5
Ottimizzazione su grafi:massimo flusso (parte 1) p. 32/33 Aumentiamo di il valore del flusso 6 13 s 2 3 t Valore del flusso: 1 5
Ottimizzazione su grafi:massimo flusso (parte 1) p. 33/33 Rete incrementale s 2 6 3 t 7 Non ci sono cammini aumentanti! 5