Я изучаю алгоритм Форда-Фулкерсона из Cormen "Введение в алгоритмы 2-го издания". Он описывается в псевдокоде для ориентированного графа G = (V, E) следующим образом, где f - поток, определенный на VxV
FORD-FULKERSON(G, s, t)
for each edge (u,v) in E(G)
do f[u, v] = 0
f[v, u] = 0
while there is a path p from s to t in the residual network Gf
do m = min{c(u, v)-f[u, v]: (u, v) is on p}
for each edge (u, v) on p
do f[u, v] = f[u, v] + m
f[v, u] = - f[u, v]
Остаточный граф Gf имеет те же вершины, что и G, и имеет в качестве ребер эти упорядоченные пары вершины (u, v), для которых c (u, v) - f (u, v) > 0. (Edit: c - функция пропускной способности, заданная при запуске и расширенная на нуль на ребрах, не являющихся частью графика)
Я не уверен, что делать в случае, когда в "обоих направлениях" существуют ребра, например, что происходит в алгоритме, когда ребро и его реверс находятся на графике. Я предполагаю, что c (u, v) в минимуме для исходных емкостей в графе. Должен ли я каким-то образом обрабатывать четыре ребра в остаточном графе для случая, когда оба (a, b) и (b, a) являются ребрами? На данный момент в моей настройке я не могу напрямую обрабатывать параллельные ребра.
Я нашел следующий вопрос о SO: Максимальный поток - Ford-Fulkerson: Неограниченный график Но я не понимаю, каков результат.