Grafico residuo nel flusso massimo


14

Sto leggendo il problema del flusso massimo qui . Non riuscivo a capire l'intuizione dietro il grafico residuo. Perché stiamo considerando i bordi posteriori durante il calcolo del flusso?

Qualcuno può aiutarmi a capire il concetto di grafico residuo?

Come cambia l'algoritmo nei grafici non indirizzati?

Risposte:


28

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

Esempio di esecuzione

Un possibile approccio avido è il seguente:

  1. 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(ePfe<ceP
  2. 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Δ=mineP(cefe)
  3. 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

Possibile esecuzione dell'approccio avido per il massimo flusso

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

Percorso di blocco

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

Flusso all'indietro

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)cefecefe>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

Grafico residuo

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

Percorso di aumento nel grafico residuo

In generale:

Quando viene selezionato un percorso di incremento nel grafico residuo R :PR

  • Ogni fronte in che corrisponde a un fronte in G aumenta il flusso usando un bordo con capacità disponibile.PG
  • 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.PG

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à :

GfGst


C'è un esempio in cui i percorsi vengono aggiunti nell'ordine della lunghezza più breve come descritto nell'algoritmo Edmonds-Karp? Nel tuo esempio contatore il primo percorso è lunghezza 3 mentre un percorso più breve (ovvero 2) può essere trovato e sarebbe aggiunto per primo se stiamo facendo Edmonds-Karp.
Roy,

st3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)

Il tuo esempio ha un senso. Possiamo sempre estendere il grafico su altri bordi del taglio per fare in modo che il bordo in questione si trovi su uno dei percorsi più corti.
Roy

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.