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 ::
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.
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.
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.
Questo algoritmo utilizza la visita in ampiezza.
Complessità: O(E2 V)
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.