L'intuizione che sta dietro il grafico residuo nel problema del flusso massimo è molto ben presentata in questa lezione. La spiegazione è la seguente.
Supponiamo che stiamo cercando di risolvere il problema di flusso massimo consultato rete (dove ogni etichetta f e / c e denota sia il flusso f e spinto attraverso un bordo e e la capacità C e di questo bordo):Gfe/cefeece
Un possibile approccio avido è il seguente:
- Scegli un percorso di aumento arbitrario che va dai vertici di origine s al vertice di sink t tale che ∀ ePst ); cioè, tutti i bordi in P hanno capacità disponibile.∀e(e∈P→fe<ceP
- Spingere il flusso massimo possibile attraverso questo percorso. Il valore di Δ è determinato dal collo di bottiglia di P ; cioè, il bordo con una capacità minima disponibile. Formalmente, Δ = min e ∈ P ( c e - f e ) .ΔΔPΔ=mine∈P(ce−fe)
- Andare al passaggio 1 fino a quando non esistono percorsi di potenziamento.
Ossia, trova un percorso con capacità disponibile, invia il flusso lungo quel percorso e ripeti.
In , una possibile esecuzione dell'euristica di cui sopra trova tre percorsi di aumento P 1 , P 2 e P 3 , in questo ordine. Questi percorsi spingono 2, 2 e 1 unità di flusso, rispettivamente, per un flusso totale di 5:GP1P2P3
La scelta di percorsi in questo ordine porta a una soluzione ottimale; tuttavia, cosa succede se selezioniamo prima (ovvero prima di P 1 e P 2 )?P3P1P2
Otteniamo quello che viene chiamato un flusso bloccante : non esistono più percorsi di potenziamento. In questo caso, il flusso totale è 3, che non è ottimale. Questo problema può essere risolto consentendo operazioni di annullamento (ovvero, consentendo l'invio del flusso in senso inverso, annullando il lavoro di iterazioni precedenti): basta spingere indietro 2 unità di flusso dal vertice al vertice v in questo modo:wv
La codifica di queste operazioni di annullamento consentite è l'obiettivo principale del grafico residuo .
Un grafico residuo di una rete G ha lo stesso insieme di vertici di G e include, per ciascun bordo e = ( u , v ) ∈ G :RGGe=(u,v)∈G
Un bordo anteriore con capacità c e - f e , se c e - f e > 0 .e′=(u,v)ce−fece−fe>0
Un bordo posteriore con capacità f e , se f e > 0 .e′′=(v,u)fefe>0
Ad esempio, considera il grafico residuo che si ottiene dopo la prima iterazione dell'euristico avido quando l'euristica seleziona prima P 3 (cioè quando ottiene il flusso di blocco):RP3
Si noti che l' operazione di annullamento che spinge 2 unità di flusso da a v è codificata come percorso in avanti (in aumento) da s a t in R :wvstR
In generale:
Quando viene selezionato un percorso di incremento nel grafico residuo R :P′R
- Ogni fronte in che corrisponde a un fronte in G aumenta il flusso usando un bordo con capacità disponibile.P′G
- Ogni fronte in che corrisponde a un bordo che va indietro in G annulla il flusso che era stato spinto in avanti nella direzione in passato.P′G
Questa è l'idea principale dietro il metodo di Ford-Fulkerson .
Il metodo Ford – Fulkerson procede esattamente allo stesso modo dell'approccio avido descritto sopra, ma si ferma solo quando non ci sono più percorsi di aumento nel grafico residuo (non nella rete originale). Il metodo è corretto (ovvero calcola sempre un flusso massimo) poiché il grafico residuo stabilisce la seguente condizione di ottimalità :
GfGs−t