Алгоритм Форда — Фалкерсона
Материал из Википедии — свободной энциклопедии
Алгоритм Форда — Фалкерсона решает задачу нахождения максимального потока в транспортной сети.
Идея алгоритма заключается в следующем. Изначально величине потока присваивается значение 0: f(u,v) = 0 для всех
. Затем величина потока итеративно увеличивается посредством поиска увеличивающего пути (путь от источника s к стоку t, вдоль которого можно послать больший поток). Процесс повторяется, пока можно найти увеличивающий путь.
Содержание |
[править] Алгоритм
Дан граф G(V,E) с пропускной способностью c(u,v) и потоком f(u,v) = 0 для ребер из u в v. Необходимо найти максимальный поток из источника s в сток t. На каждом шаге алгоритма действуют те же условия, что и для всех потоков:
. Поток из u в v не превосходит пропускной способности.
.
для всех узлов u, кроме s и t. Поток не изменяется при прохождении через узел.
Остаточная сеть Gf(V,Ef) — сеть с пропускной способностью cf(u,v) = c(u,v) − f(u,v) и без потока.
Вход Граф
с пропускной способностью
, источник
и сток 
Выход Максимальный поток
из
в 
для всех ребер 
- Пока есть путь
из
в
в
, такой что
для всех ребер
:
- Найти

- Для каждого ребра
- Найти
Путь может быть найден, например, поиском в ширину (алгоритм Эдмондса-Карпа) или поиском в глубину в Gf(V,Ef).
[править] Сложность
Добавляя поток увеличивающего пути к уже имеющемуся потоку, максимальный поток будет получен, когда нельзя будет найти увеличивающий путь. Тем не менее, если величина пропускной способности — иррациональное число, то алгоритм может работать бесконечно. В целых числах таких проблем не возникает и время работы ограничено O(E*f), где E — число вершин в графе, f — максимальный поток в графе, так как каждый увеличивающий путь может быть найден за O(E) и увеличивает поток как минимум на 1.
[править] Пример
Следующий пример показывает первые шаги алгоритма Форда-Фалкерсона в транспортной сети с четырьмя узлами, источником A и стоком D. Этот пример показывает худший случай. При использовании поиска в ширину алгоритму потребуется всего лишь 2 шага.
[править] Cсылки
[править] Литература
- Томас Х. Кормен и др. Алгоритмы: построение и анализ = INTRODUCTION TO ALGORITHMS. — 2-е изд. — М.: «Вильямс», 2006. — С. 1296. — ISBN 0-07-013151-1



