Problemi di Nework Flow Massimo Paolucci (paolucci@dis.unige.i) DIST Universià di Genova Grafi di Flusso - Nework Flow I modelli di flusso (rei di flusso) sono uilizzai per prendere decisioni in vari conesi applicaivi, e.g.: sisemi di elecomunicazioni raspori sisemi idraulici e/o sisemi meccanici Araverso modelli di nework flow si possono affronare anche problemi in cui non esise un vero e proprio flusso, e.g.: problemi di percorso minimo problemi di assignazione problemi di scheduling problemi di pianificazione
Grafi di Flusso - Nework Flow Dao un grafo G=(V, E) orienao con definie le segueni grandezze: d ij (i, j) E capacià dell arco (i, j) w ij (i, j) E coso del flusso in (i, j) b i i V flusso nel nodo i, dove: b i >0 sorgene b i <0 pozzo inolre bi = 0 i V Grafi di Flusso - Nework Flow Un flusso ammissibile in G: x ij R (i, j) E aleche (1) xij x ji = bi (i,j) δ + (i) (j,i) δ (i) i V () 0 xij dij (i,j) E dove δ + (i) è la sella uscene da i e δ - (i) la sella enrane.
Grafi di Flusso - Nework Flow Un flusso a coso minimo in G: x ij R (i, j) E ale che min wijxij (i,j) E s.. (1) e () Caso paricolare: il problema del rasporo G=(V 1 V, E) bipario e ale che b i >0 i V 1 e b i <0 i V Grafi di Flusso - Max Flow e Min Cu Dao un nodo s sorgene ed un nodo pozzo in G, deerminare il flusso massimo che può fluire ra s e senza conribui nei nodi inermedi. s
Grafi di Flusso - Max Flow e Min Cu 7 Il Max Flow si puo formulare come problema lineare b i =0 i V\{s,} w ij =0 (i,j) E (i,j) (,s) w s =-1 Deo v il flusso da s a : v = x = si (s,i) δ + (s) (i,) δ () x = x i s Grafi di Flusso - Max Flow e Min Cu 8 Il Max Flow si puo formulare come problema lineare Il problema del Max Flow max v s.. v xij x ji = 0 (i,j) δ + (i) (j,i) δ (i) v 0 xij dij (i,j) E i = s i s,i i =
Grafi di Flusso - Max Flow e Min Cu 9 Il Max Flow è sreamene legao al Min Cu Taglio (Cu) Un aglio (U,U ) è una parizione di V s- cu L insieme degli archi δ + (U)={(i,j) E, i U, j U } dove s U e U. Grafi di Flusso - Max Flow e Min Cu 10 di s- cu s s- cu Capacià del aglio dij ( i,j) δ + (U)
Grafi di Flusso - Max Flow e Min Cu 11 Il problema del aglio minimo Trovare il s- cu a minima capacià. Teorema (Max Flow - Min Cu) IL valore del flusso massimo da s a è pari al flusso che può passare per il aglio minimo che separa s da. Max Flow - Algorimo di Ford-Fulkerson 1 Si basa sul conceo di cammino aumenane (augmening pah) rispeo ad un flusso x. i (x ij, d ij ) j Esempio (,) (1,) (1,) (1,1) s 1 (0,) (,8) (,) (,)
Max Flow - Algorimo di Ford-Fulkerson 1 Definiamo: Arco saurao Dao x, (i,j) E è saurao se x ij =d ij Se P è un s- pah senza archi saurai allora poso: min (dij (i,j) P x ij ) = il flusso x non è massimo ma può essere aumenao di. Max Flow - Algorimo di Ford-Fulkerson 1 Se non esisono s- pah senza archi saurai allora x è un blocking flow. Noa: un blocking flow può non essere massimo Esempio s 1 +1 +1-1 +1 +1 Un unià di flusso è rimandaa da a (per poi proseguire verso ).
Max Flow - Algorimo di Ford-Fulkerson 1 Cammino aumenane rispeo ad un flusso x Dao x si definisce un grafo orienao D(x)=(V, E(x)) ale che E(x) = {(i,j): (i,j) E, x ij <d ij } {(i,j): (j,i) E, x ji >0} = E f (x) E r (x) dove E f (x) è l insieme degli archi forward menre E r (x) è l insieme degli archi reverse. Max Flow - Algorimo di Ford-Fulkerson 1 Cammino aumenane rispeo ad un flusso x Un s- pah in D(x) è un cammino aumenane rispeo a x Un flusso ammissibile è massimo se non esise un cammino aumenane rispeo a ale flusso. Esempio: D(x) s 1 cammino aumenane
Max Flow - Algorimo di Ford-Fulkerson 17 Labelling algorihm L algorimo del cammino aumenane eichea ogni nodo j con (p(j), ), dove p(j) è il nodo predecessore da cui si riceve il flusso. Max Flow - Algorimo di Ford-Fulkerson 18 L algorimo del cammino aumenane 1) Inizializzazione Fissare un flusso ammissibile (e.g., x=0). Eicheare s con (s, ). Tui gli alri nodi i V resano non eicheai. Porre i=s.
Max Flow - Algorimo di Ford-Fulkerson 19 L algorimo del cammino aumenane ) Esame del nodo i j V ale che (i,j) E e x ij <d ij, j non eicheao, eicheare j con (i, min [, d ij -x ij ]) j V ale che (j,i) E, xji>0, j non eicheao, eicheare j con (i, min [, x ji ]) marcare il nodo i come nodo esaminao. Max Flow - Algorimo di Ford-Fulkerson 0 L algorimo del cammino aumenane ) Se il pozzo è eicheao andare al passo. Scegliere un nodo i eicheao non esaminao ed andare al passo. Se non esisono nodi non esaminai il flusso correne è massimo.
Max Flow - Algorimo di Ford-Fulkerson 1 L algorimo del cammino aumenane ) Sia (p(j), ) l eichea di. E sao rovao un cammino aumenane deerminao a riroso sino al nodo s dalla sequenza dei p(j). Il nuovo flusso è deerminao aumenando di + il flusso sugli archi forward del cammino e diminuendolo di - sugli archi reverse. Eliminare ue le eichee ed ierare al passo 1. Max Flow - Algorimo di Ford-Fulkerson L operazione di labelling sugli archi di G. Arco forward (d ij <x ij ) (p(i), ) (x ij, d ij ) i (i, min [, d j ij -x ij ]) Arco reverse (x ji >0) (p(i), ) i (x ij, d ij ) j (i, min [, x ji ])
Max Flow - Algorimo di Ford-Fulkerson s 1 (, ) (1, ) (1, ) (0, ) (1, 1) (, 8) (, ) (, ) Max Flow - Algorimo di Ford-Fulkerson esame nodo 1: (, ) (s, ) 1 (, 8) (1, ) (1, ) (0, ) (, ) (1,) (1, 1) (, )
Max Flow - Algorimo di Ford-Fulkerson esame nodo : (, ) (s, ) 1 (1, ) (1, ) (0, ) (,) (1, 1) (, 8) (1,) (, ) (, ) Max Flow - Algorimo di Ford-Fulkerson esame nodo : (, ) (s, ) 1 (, 8) (,1) (1, ) (1, ) (0, ) (, ) (1,) (,) (1, 1) (, )
Max Flow - Algorimo di Ford-Fulkerson 7 esame nodo : (, ) (s, ) 1 (,1) (1, ) (1, ) (0, ) (,) (1, 1) (, 8) (1,) (, ) (,1) (, ) Max Flow - Algorimo di Ford-Fulkerson 8 esame nodo : (, ) (s, ) 1 (, 8) (,1) (1, ) (1, ) (0, ) (, ) (1,) (,) (1, 1) (,1) (, ) (,1)
Max Flow - Algorimo di Ford-Fulkerson 9 L ierazione ermina avendo rovao un cammino aumenane Il nuovo flusso (, ) s 1 (0, ) (, ) (1, ) (1, 1) (, 8) (, ) (, ) Max Flow - Algorimo di Ford-Fulkerson 0 Inizia una nuova ierazione esame nodo 1: (, ) (s, ) 1 (, 8) (0, ) (, ) (1, ) (, ) (1,) (1, 1) (, )
Max Flow - Algorimo di Ford-Fulkerson 1 esame nodo : (s, ) 1 (, ) (, 8) Non è possibile eicheare alcun alro nodo. Il flusso rovao è massimo. (1,) (, ) (1, ) (0, ) (, ) (,) (1, 1) (, ) Max Flow - Algorimo di Ford-Fulkerson Si può verificare che ale flusso corrisponde al aglio minimo: L algorimo deermina un Min Cu: U={i V nodo esaminao} U =V\U s U e U Ad esempio: U={1,,} U ={,,}
Max Flow - Possibili variani Max Flow ra mole sorgeni e moli pozzi archi a capacià archi a capacià 1 s 1 s... s Ci si riconduce al caso precedene aggiungendo una sorgene ed un pozzo fiizi. Max Flow - Possibili variani Grafi con capacià negli archi e nei nodi Nodi con capacià c i. Il flusso enrane deve essere inferiore della capacià: xhi (h,i) δ (i) ci Si aggiungono degli archi fiizi. arco a capacià c i c i - i i+
Max Flow - Possibili variani Grafi con capacià negli archi e nei nodi Archi non orienai. Si inroduce una coppia di archi orienai i j i j Archi orienai con capacià minima negaiva. Si sosiuiscono con una coppia di archi orienai con capacià sempre posiiva 0 d ij q ij i j i j -c ij d ij q ij 0 d ij c ij