Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Algoritmi per il flusso nelle reti Lezione n°17 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione 17
Tagli in reti di flusso Un taglio (S,P) di una rete di flusso G è una partizione dei vertici di G tale che S contenga la sorgente s e P = V-S contenga il pozzo p. Capacità del taglio: c(S,P)= ∑c(x,y), x in S e y in P Lemma: Data una rete di flusso, un taglio (S,P) e un flusso f, la quantità di flusso f(S,P) che attraversa il taglio è uguale al valore del flusso nella rete f = ∑f (s,v). Prova f (S,P) = ∑f (x,y), x in S e y in P = (∑f (x,y), y in V) - (∑f (x,y), y in S) = = (∑f (s,y), y in V+ ∑f (x,y), x in (S-s) e y in V ) - (∑f (x,y), x in S e y in S) = = ∑f (s,y), y in V= f dato che ∑f (x,y), x in (S-s) e y in V = 0 per la conservazione del flusso ∑f (x,y), x in S e y in S = 0 per l’antisimmetria ASD a.a.2010/2011- Lezione 17 2
Algoritmo di Ford e Fulkerson Algoritmo FF (G(V,E,s,p)) for ogni arco (u,v) E do f(u,v)=0, f(v,u)=0; While un cammino da s a p in Gf do cf () = min cf(u,v), (u,v) in Gf; for ogni arco (u,v) do f(u,v) = f(u,v) + cf () , f(v,u)=- f(u,v) Se le capacità della rete sono intere, l’algoritmo FF richiede tempo O(m f*)nel caso peggiore ASD a.a.2010/2011- Lezione 17 3
Algoritmo di Edmonds e Karp Algoritmo EK (G(V,E,s,p)) for ogni arco (u,v) E do f(u,v)=0, f(v,u)=0; While un cammino minimo da s a p in Gf do cf () = min cf(u,v), (u,v) in Gf; for ogni arco (u,v) do f(u,v) = f(u,v) + cf () , f(v,u)=- f(u,v) Se si considera la rete residua con archi a peso unitario e si calcola il cammino minimo con una visita in ampiezza, l’algoritmo EK richiede tempo O (VE2) ASD a.a.2010/2011- Lezione 17 4
Complessità dell’algoritmo di EK O(VE2) deriva dalle seguenti due affermazioni: ogni iterazione dell’algoritmo EK può essere realizzata in tempo O(E) se effettuata con visita in ampiezza; l’algoritmo esegue al più O(VE) iterazioni. L’affermazione b) deriva dal fatto che su ogni cammino aumentante c’è un arco critico che sparisce dalla rete residua dopo che è stato aumentato il flusso nella rete. Un arco (u,v) può ritornare critico solo quando l’arco (v,u) appare su un cammino aumentante e quindi quando il flusso su (u,v) decresce. Ora df(s,v) = df(s,u) +1 e df’(s,u) = df’(s,v) +1 e df(s,v) ≤ df’(s,v), da cui df’(s,u) = df’(s,v) +1 ≥ df(s,v) + 1 = df(s,u) + 2 La distanza di u dalla sorgente è ≥ 0 e al più può diventare pari a V- 2. L’affermazione b) segue quindi dal fatto che (u,v) può diventare critico al piùVvolte e che ci sono al più E archi. ASD a.a.2010/2011- Lezione 17 5
Abbinamento massimo in un grafo bipartito A partire dal grafo bipartito B(LR,E), si costruisca la rete di flusso G (V, E’, s, p, C) così definita: V = LRs p, con s e p due vertici da aggiungere a quelli di B e che costituiscono la sorgente e il pozzo della costruenda rete; E’ = E (s,u), u L (v,p), v R; C funzione che associa ad ogni arco (u,v) E’ una capacità c(u,v) = 1. Lemma: Siano dati B e G come sopra definiti. Per ogni M, abbinamento in B, esiste un flusso f a valori interi in G con valore f = M . In modo analogo vale che per ogni flusso a valori interi in G esiste un abbinamento M in B con cardinalità M = f ASD a.a.2010/2011- Lezione 17 6
Prova del Lemma Un abbinamento M in B corrisponde ad un flusso a valori interi in G Dato M abbinamento in B, se (u,v) M, si ponga f(u,v)=0 se (u,v) M, allora f(s,u)=f(u,v)=f(v,p) =1 e f(u,s)=f(v,u)=f(p,v)= -1, ovvero ogni arco (u,v) in M corrisponde ad una unità di flusso in G che attraversa il cammino s-u-v-p. Inoltre, i cammini indotti dagli archi in M hanno vertici disgiunti, a meno di s e p e il valore del flusso attraverso il taglio(Ls, Rp)è uguale ad M . Infine per vedere che f gode delle tre proprietà (capacità, conservazione del flusso, antisimmetria) basta osservare che f può essere ottenuto come aumento del flusso lungo ognuno di questi cammini. ASD a.a.2010/2011- Lezione 17 7
Prova del Lemma Un flusso a valori interi in G corrisponde ad un abbinamento M in B Dato f flusso a valori interi in G, si consideri M = (u,v): u L e v R e f(u,v)>0, vale che: M è un abbinamento perché ogni vertice di L ha un solo arco entrante (s,u) di capacità 1 e un’unità di flusso netto positivo entra in u iff vi è un solo vertice v in R tale che f(u,v)=1. M = f infatti u L, f(s,u)=1e (u,v) E-M, f(u,v)=0, da cui: M = f(L,R)= f ASD a.a.2010/2011- Lezione 17 8