Algoritmi per il flusso nelle reti

Slides:



Advertisements
Presentazioni simili
Flusso Massimo Applicazione di algoritmi
Advertisements

Cammini minimi con una sorgente
Algoritmo di Ford-Fulkerson
Algoritmi e Strutture Dati
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Flusso Massimo Applicazione di algoritmi
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prof.ssa Rossella Petreschi Lezione del 1 /12/ 2011 del Corso di Algoritmi e Strutture Dati Riferimenti: capitolo 17 del testo M.H.Alsuwaiyel “Algorithms:
Prof.ssa Rossella Petreschi Lezione del 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Reti, flussi e tagli Lezione n°11
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Ordinamento.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°17 Prof.ssa Rossella Petreschi
B-alberi e alberi autoaggiustanti
Cammini minimi tra tutte le coppie
Complessità ammortizzata degli algoritmi Union Find
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Lezione n°16 Abbinamento Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Paths, tree and flowers Lezione n°14
K4 è planare? E K3,3 e K5 sono planari? Sì!
per rappresentare grafi
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Gestione dinamica di tabelle
Schema generale, visita in ampiezza e profondità.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Lezione n°14 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Unione per ranghi compressi
Algoritmi e Strutture Dati
Tabelle dinamiche Lezione n°3
Analisi ammortizzata Lezione n°2
Algoritmo di Ford-Fulkerson
Transcript della presentazione:

Algoritmi per il flusso nelle reti Lezione n°11 Prof.ssa Rossella Petreschi Lezione del 28 /11/ 2011 del Corso di Algoritmi e Strutture Dati Riferimenti: capitolo 16 del testo M.H.Alsuwaiyel “Algorithms: design tecniques and analysis” Edizioni: World Scientific capitolo 27 del testo Cormen,Leiserson, Rivest “Introduzione agli algoritmi” Edizioni: Jackson libri capitolo 14 del testo Demetrescu,Finocchi, Italiano “Algoritmi e strutture dati” Edizioni: McGraw Hill ASD 2011/2012

Metodo dei cammini aumentanti Collo di bottiglia di un cammino: cf() = min cf(u,v), con (u,v) arco di  sulla rete Gf Metodo:Inizialmente si considera associato alla rete G un flusso nullo, f = f0 Idea: si trovi, se esiste, un cammino aumentante  sulla rete Gf . Si scelga f’ su Gf così definito: f’(u,v) = cf() , se (u,v) è un arco di ; f’(u,v) = - cf(), se (v,u) è un arco di ; f’(u,v) = 0, altrimenti. Segue che f’= cf() e il valore del flusso f+f’ su G è pari a f’ + cf( . Si procede per iterazione finchè a G non è assegnato un flusso massimo f*. ASD 2011/2012 2

Algoritmo di Ford e Fulkerson (1956) 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 f* numero di iterazioni dell’algoritmo che incrementa il flusso di almeno una unità ad ogni passo edm tempo richiesto dalla visita ad ogni passo. Esistono: casi di capacità intera che raggiungono il limite temporale superiore: casi di capacità reale non convergenti in tempo finito. ASD 2011/2012 3

Algoritmo di Edmonds e Karp(1972) 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 (minimo rispetto alla distanza) 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 distanza unitaria e si calcola il cammino minimo con una visita in ampiezza, l’algoritmo EK richiede tempo O (VE2) ASD 2011/2012 4

Lemma delle distanze Lemma Prova Si esegua l’algoritmo EK su una rete di flusso di G (V,E,s,p,C). Per ogni v in V-s,p, la distanza f(s,v) in Gf cresce monotonomamente con ogni aumento di flusso.f(u,v)= lunghezza del cammino minimo da u a v in Gf ) Prova Per assurdo si supponga che esistano dei vertice r tali che f’(s,r) < f(s,r). Sia v quello più vicino alla sorgente in Gf , ovvero f’(s,v) < f’(s,r) < f(s,r). Per gli altri r vale f(s,r) ≤ f’(s,r). Sul cammino minimo da s a u a v, si ha f’(s,u) = f’(s,v)-1. Calcoliamo il flusso netto in G prima dell’aumento del flusso in Gf Se (f(u,v) < c(u,v)), si ha f(s,v) ≤ f(s,u)+1 < f’(s,u)+1 = f’(s,v). Se (f(u,v) = c(u,v)), si ha f(s,v) = f(s,u)-1 ≤ f’(s,u)-1 = (f’(s,v)-1)-1< f’(s,v). ASD 2011/2012 5

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. La prima volta si ha df(s,v) = df(s,u) +1 e la seconda si ha df’(s,u) = df’(s,v) +1 Per il Lemma delle distanze vale df(s,v) ≤ df’(s,v), da cui df’(s,u) = df’(s,v) +1 ≥ df(s,v) + 1 = df(s,u) + 2 Fra i due momenti di criticità di (u,v), la distanza di u dalla sorgente aumenta almeno di 2 unità. Quindi tale distanza può variare da 0 a V- 2. L’affermazione b) segue quindi dal fatto che (u,v) può diventare critico al piùVvolte e che ci sono al più Earchi. ASD 2011/2012 6

Grafo livello Algoritmo EK secondo i livelli Il livello di un vertice v, level(v), è pari al minimo numero di spigoli in un cammino da s a v. Dato un grafo orientato G(V,E) si definisce grafo livello di G il grafo L(V,E’) con E’= ((u,v)/level(v) = level(u) +1) Algoritmo EK secondo i livelli A G si assegni f0 , quindi Gf0 = G. Ripeti la fase (passo1+passo2): Passo1: Calcola il grafo livello L di Gf , se p non è in L fine, altrimenti vai a passo 2 Passo2: Finchè vi è un cammino aumentante in L, aumenta il flusso e rimuovi gli spigoli saturati Note I cammini aumentanti in uno stesso L hanno uguale lunghezza. La lunghezza di un cammino aumentante alla fase i è strettamente minore della lunghezza di un cammino aumentante alla fase i+1. Il numero di fasi è al più n. ASD 2011/2012 7

Algoritmo di Dinic(1970) Sia G(V,E) una rete e H un sottografo di G contenente s e p. Un flusso f in H si definisce flusso bloccante (rispetto ad H) se ogni cammino in H da s a p contiene almeno uno spigolo saturo. Algoritmo di Dinic dei flussi bloccanti A G si assegni f0 , quindi Gf0 = G. Ripeti la fase (passo1+passo2): Passo1: Calcola il grafo livello L di Gf , se p non è in L fine, altrimenti vai a passo 2 Passo2: Calcola un flusso bloccante su L e con esso aumenta il flusso nella rete L’ algoritmo di Dinic richiede tempo O(mn2) ASD 2011/2012 8

Reti con sorgenti e pozzi multipli Un problema di flusso massimo a più sorgenti e più pozzi è riconducibile ad un problema di flusso massimo con una sola sorgente e un solo pozzo. Si aggiunge una supersorgente s e un superpozzo t. Si aggiungono poi gli archi orientati (s,si) per ognuna delle molteplici sorgenti della rete e (pi,p) per ognuno dei molteplici pozzi. Si impone c(s,si) = c (pi,p)=∞. Ogni flusso nella rete con m sorgenti si e t pozzi pi corrisponde ad un flusso nella nuova rete con una sola sorgente s e un solo pozzo p. ASD 2011/2012 9