cerca
Metodi di Ford-Fulkerson e di Edmonds-Karp
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.A-MetodiFF-EK History

Show minor edits - Show changes to output

Added lines 1-72:
(:title Metodi di Ford-Fulkerson e di Edmonds-Karp:)
[[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]]
----

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

%titolo%''':: 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:
* s: la sorgente;
* t: il pozzo, vertice di destinazione.
Per ogni vertice c'è un cammino da s a t.

Il '''flusso''' è una funzione a valori reali che deve soddisfare delle proprietà:
* '''vincolo di capacità''': il flusso non può superare la capacità dell'arco, flusso <= capacità;
* '''antisimmetria''': il flusso da u a v posso vederlo come un flusso negativo da v a u;
* '''conservazione del flusso''': il flusso non può perdersi lungo il tragitto.

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.

%center%Attach:A-esReteFlusso.gif

!!!!!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:
* '''cammini aumentanti''': cammino non saturo che posso utilizzare ancora per trasmettere;
* '''rete residua''': grafo con archi di capacità residua diversa da zero. Gli archi sdoppiano se non sono saturi;
* '''taglio di una rete di flusso''': partiziono l'insieme dei nodi in due insiemi; sorgente e pozzo devono stare in due sottoinsiemi diversi. La capacità del taglio è la capacità degli archi che stanno in tutti e due i sottoinsiemi.

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 &#8712; V[G]” '''do'''
-->f(u,v) &#8592; 0
->'''while''' “esiste un cammino aumentante p” '''do'''
-->“aumenta il flusso lungo p”
->'''return''' f

%center%Attach:A-esReteResidua.gif

%center%Attach:A-esTaglio.gif

->FordFulkerson(G, s, t)
->'''for''' “ogni uv &#8712; E[G]” '''do'''
-->f(u,v) &#8592; f(v,u) &#8592; 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) &#8592; f(u,v) + c(P)
--->f(v,u) &#8592; - 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(E'^2^' 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->Uni.Algoritmi]]