Il problema del flusso massimo può essere visto come un caso particolare di problemi più complessi sulle reti di flusso, come il problema della circolazione. Il valore massimo di un flusso s-t (ovvero un flusso generato da una sorgente s che si esaurisce in un pozzo t) è equivalente alla capacità minima di un taglio s-t nella medesima rete, come enunciato dal teorema del flusso massimo e taglio minimo.
Negli anni a venire, vennero ideate varie soluzioni al problema, fra cui le più note sono quelle degli statunitensi Edmonds e Karp (1972) e del sovietico Dinitz (1970).
Definizione
Sia una rete con rispettivamente sorgente e pozzo di .
La capacità di un arco è una funzione , indicata con o , che rappresenta il massimo flusso che può passare per un arco.
Un flusso è una funzione , indicata con o , soggetta ai due vincoli seguenti:
(vincolo di capacità: il flusso passante in un arco non può essere maggiore della capacità dello stesso);
(vincolo di conservazione del flusso: la somma dei flussi entranti in un nodo dev'essere uguale alla somma dei flussi uscenti dallo stesso, tranne che per la sorgente ed il pozzo).
Il valore di flusso è definito da , dove è la sorgente di . Esso rappresenta l'ammontare di flusso che parte dalla sorgente per arrivare al pozzo.
Il problema del flusso massimo è quello di massimizzare , ovvero, di instradare quanto più flusso possibile da a .
Soluzioni
Per comprendere le varie soluzioni del problema è necessario introdurre il concetto di rete residua. Data una rete di flusso ed un flusso su , definiamo la rete residua su rispetto a come segue:
L'insieme dei nodi di è lo stesso di .
Ogni arco di ha una capacità .
Ogni arco di ha una capacità .
La seguente tabella elenca gli algoritmi più noti per risolvere il problema del flusso massimo.
La terminazione dell'algoritmo è garantita se tutti i pesi sono razionali, altrimenti è possibile che l'algoritmo non converga al valore massimo. In ogni caso, se l'algoritmo termina, è garantita la correttezza del risultato.
In ogni fase dell'algoritmo viene costruito un grafo stratificato tramite ricerca in ampiezza sul grafo residuo. Il flusso massimo su un grafo stratificato può essere calcolato in tempo e il massimo numero di fasi è . In reti con capacità unitarie l'algoritmo termina in tempo .
Algoritmo MPM (Malhotra, Pramodh-Kumar e Maheshwari)[6]
^(EN) Saul I. Gass e Arjang A. Assad, Mathematical, algorithmic and professional developments of operations research from 1951 to 1956, in An Annotated Timeline of Operations Research, International Series in Operations Research & Management Science, vol. 75, 2005, pp. 79-110, DOI:10.1007/0-387-25837-X_5, ISBN1-4020-8116-2.