Swappa : Uni / Metodi di Ford-Fulkerson e di Edmonds-Karp
Creative Commons License

Torna alla pagina di Algoritmi e strutture dati


Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)

 :: Metodi di Ford-Fulkerson e di Edmonds-Karp ::

Problema del flusso massimo

Una rete di flusso è un grafo orientato in cui ogni arco ha una capacità positiva quindi maggiore o uguale di zero.
La rete di flusso ha due vertici significativi:

Per ogni vertice c'è un cammino da s a t.

Il flusso è una funzione a valori reali che deve soddisfare delle proprietà:

Il flusso può non essere sempre una quantità positiva (posso avere più sorgenti e più pozzi).
Dato rete di flusso, una sorgente s e un pozzo t, si vuole trovare un flusso di valore massimo da s a t.
Il flusso totale netto è la differenza fra il flusso totale uscente e il flusso totale entrante ed è uguale a zero.

METODO DI FORD–FULKERSON

Si definisce un metodo e non un algoritmo perchè può avere diverse implementazioni eseguite in tempi diversi però tutte basate su tre concetti:

Si parte con f(u,v) = 0 per ogni u e v e quindi si aumenta iterativamente il valore del flusso cercando un cammino dalla sorgente s al pozzo t lungo il quale sia possibile inviare ulteriore flusso. Il procedimento termina quando non vi sono più cammini aumentanti.

Ford-Fulkerson-Method(G, s, t)
for “ogni u,v ∈ V[G]” do
f(u,v) ← 0
while “esiste un cammino aumentante p” do
“aumenta il flusso lungo p”
return f
FordFulkerson(G, s, t)
for “ogni uv ∈ E[G]” do
f(u,v) ← f(v,u) ← 0
while “esiste un cammino P da s a t in Gf” do
“calcola c(P) = min{cf(u,v) : uv arco di P}”
for “ogni arco uv di P” do
f(u,v) ← f(u,v) + c(P)
f(v,u) ← - f(u,v)
return f

Complessità: O(E f) dove E è il numero di archi e f è il flusso massimo.
Se le capacità legate agli archi non sono numeri interi, l'algoritmo appena visto potrebbe non terminare.

ALGORITMO DI EDMONDS–KARP

Questo algoritmo utilizza la visita in ampiezza.
Complessità: O(E2 V)

Abbinamento massimo nei grafi bipartiti

L'insieme dei vertici si può dividere in S e D. Gli archi stanno sia in S che in D.
Devo trovare in insieme massimo di coppie distinte.
Il grafo non è orientato, i vertici rappresentano stazioni di commutazione, gli archi linee di trasmissione ed ogni arco è associato ad un numero che indica la probabilità che la linea di trasmissione trasmetta correttamente un messaggio.
Devo determinare il cammino più affidabile tra una coppia di vertici dati.


Torna alla pagina di Algoritmi e strutture dati

(Printable View of http://www.swappa.it/wiki/Uni/A-MetodiFF-EK)