Folyam algoritmusok

A maximális folyam-minimális vágás tétel következménye, hogy a következő eljárás természetes módon vetődik fel, mint folyam algoritmus:

Egy kiinduló folyamot (legyen például az azonosan 0 folyam) addig javítunk javító utak mentén amíg lehetséges.

Hogy egy algoritmust kapjunk két dolgot kell megvizsgálnunk: I) Hogyan kereshetünk javító utat egy folyamra. II) Lehetséges-e ciklizálás a fenti eljárásban.

I) A javító út keresés egy implementációja (Ford-Fulkerson-algoritmus)

Javító út kezdemények keresése a már megtalált kezdemények lehetséges növeléseivel. A megtalált javító út kezdemények végpontjait megcímkézzük (és egy pointert vezetünk be annak jelölésére, hogy hova vezető javító út kezdeményt hosszabbítottunk meg egy éllel). A címkézésnél ügyelünk arra, hogy csak eddig címkézetlen csúcsoknak adjunk címkét (átcímkézés nincs).

Ha a nyelőt megcímkézzük, akkor a pointerek visszakeresésével egy javító utat találunk. Ha a nyelőt nem címkezzük meg, akkor a címkézett és címkézetlen pontok egy s-t vágást adnak, amley bizonyítja, hogy folyamunk optimális, azaz nincs javító út.

Megjegyzés: Ha a fenti eljárásban a címkéket fázisokban osztjuk ki és az egyes fázisokban az előző fázisban megtalált javító út kezdemény összes egy éllel történő meghosszabbítását megkeressük (és az ennek megfelelő címkézést elvégezzük), akkor a fázisok sorszáma az éppen magtalált javító út kezdemény hosszát jelenti. Javító út megtalálása esetén az output a legrövidebb javító út lesz.

II) Ciklizálás kérdése