Přejít na obsah messages.homepage.accessibility

Ford-Fulkersonův algoritmus

1. Popis standardní metody algoritmu

Ford-Fulkersonův algoritmus slouží k vyhledání maximálního toku v síti (Síť je orientovaný graf, kde ohodnocení každé hrany znamená maximální množství energie, které skrze hranu může procházet). Pracujeme tedy se sítí G = (V, E), kde V je množina vrcholů včetně zdroje S a stoku T, E je množina orientovaných hran. Návěští každé hrany zapisujeme ve formátu F/C, kde C značí její kapacitu a F tok, tj. množství energie, které v ní proudí.

  1. Na počátku algoritmu nastavíme u všech hran nulový tok.
  2. Opakovaně hledáme nenasycenou cestu od zdroje ke stoku. Jakmile ji nalezneme, zjistíme minimální rezervu kapacity všech jejích hran, o kterou následně navýšíme tok v síti.

Při běžném provedení algoritmu pracujeme s vizuální reprezentací sítě, u níž měníme návěští hran. Na Obrázku 1 je znázorněna síť N o sedmi vrcholech s aktuálním tokem 1 (viz cesta S → A → C → T). Je zvýrazněna nenasycená cesta S → B → D → T, u níž je minimální rezerva kapacity hran rovna 1. Můžeme tedy v dalším kroku zvýšit tok v síti a upravit návěští hran nenasycené cesty, tj. modifikovat 0/1 na 1/1 v případě hran S → B, B → D a 0/3 na 1/3 u hrany D → T.

Příklad 1: síť N
Obrázek 1: Síť N s tokem 1 a vyznačenou nenasycenou cestou S → B → D → T

Pro názornost uvádíme i konkrétní příklad sítě a Animaci 1 naznačující výpočet maximálního toku pomocí Ford-Fulkersonova algoritmu.

Příklad 2: síť N
  • https://www.teiresias.muni.cz/amalg/www/images/animation/FordFulkerson/Maximum_flow_problem_norm14_1.jpg
  • Počátek algoritmu – síť N o sedmi uzlech S, A, B, C, D, E, T
Animace 1: Výpočet maximálního toku pomocí Ford-Fulkersonova algoritmu

2. Návrh možných adaptací

3. Diskuze nad výhodami a nevýhodami