Problem maksymalnego przepływu – zagadnienie często spotykane w informatyce. Polega ono na znalezieniu dla danej sieci przepływowej takiego przepływu
którego wartość jest maksymalna, gdzie wartość przepływu jest zdefiniowana jako łączny przepływ opuszczający źródło. Bardziej formalnie, dla danego przepływu
w sieci
o źródle
i ujściu
jego wartość jest zdefiniowana następująco:
![{\displaystyle |f|=\sum _{u\in V}f(s,u).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/22ba9930e81b0c4cf51ee1e4d1eb8754c0238c68)
Istnieje też uogólnienie tego problemu, w którym sieć
zawiera wiele źródeł i ujść. Można jednak w prosty sposób sprowadzić je do przedstawionej wersji: Dla sieci
zawierającej n źródeł
oraz m ujść
konstruujemy sieć
gdzie:
![{\displaystyle V'=V\cup \left\{s,t\right\},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d66f5c49f1283a59507791883d161badef572c60)
![{\displaystyle E'=E\cup \left\{(s,s_{1}),(s,s_{2}),\dots ,(s,s_{n}),(t_{1},t),(t_{2},t),\dots ,(t_{m},t)\right\}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ebfbaab93f34cd5bb8f2097a6f93b72d58f87110)
Ponadto:
dla każdego ![{\displaystyle i=1,2,\dots ,n,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1f574febbb77c0c22830518f6a5812e8b59ce719)
dla każdego ![{\displaystyle j=1,2,\dots ,m.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffa9c4c0a79dbce1b08ab4a4471626d434fe516b)
Innymi słowy, dodajemy do sieci
wierzchołek
połączony krawędziami o nieskończonej przepustowości ze wszystkimi źródłami oraz wierzchołek
połączony krawędziami o nieskończonej przepustowości ze wszystkimi ujściami. Wierzchołek
zwany jest superźródłem, zaś wierzchołek
– superujściem.
Maksymalny przepływ można znaleźć m.in. za pomocą algorytmu Edmondsa-Karpa opartego na metodzie Forda-Fulkersona.