Definice: Síť je , kde je orientovaný graf, a je kapacitní funkce.
Definice: Tok je kde platí
- Velikostí toku rozumíme .
Věta: Existuje maximální tok.
Princip hledání maximálního toku v síti (celočíselné kapacity)
Mějme síť a chceme najít maximální možný tok ze do , tj. přiřadit každé hraně hodnotu tak, aby platilo:
- Omezení kapacity:
- Zachování toku (mimo a ):
Kde jsou hrany vstupující do a jsou hrany vystupující z .
Ford–Fulkersonův algoritmus:
- Inicializuj tok pro všechny .
- Opakuj:
- Najdi posilující cestu (augmenting path) z do v tzv. reziduální síti:
- Hrany, po kterých lze „posílit“ tok, mají reziduální kapacitu .
- Přidáme i „zpětné hrany“ s kapacitou pro případné „vrácení toku“.
- Pokud taková cesta existuje, zvětši tok podél této cesty o minimální reziduální kapacitu.
- Najdi posilující cestu (augmenting path) z do v tzv. reziduální síti:
- Pokud žádná posilující cesta neexistuje, skonči – tok je maximální.
Vlastnosti:
- Pokud jsou všechny kapacity celočíselné, pak:
- Algoritmus skončí v konečně mnoha krocích.
- Každý tok bude celočíselný.
- Maximální tok odpovídá kapacitě minimálního řezu mezi a (věta o max toku a min řezu).