Поток в сети
англ. Network flow
Функция на рёбрах ориентированного графа с истоком и стоком: не превышает пропускные способности и сохраняется в каждой промежуточной вершине; максимум потока равен минимальному разрезу.
Поток в сети — транспортная модель на графе. Сеть — ориентированный граф, где каждое ребро снабжено пропускной способностью, выделен исток (откуда везём) и сток (куда). Поток — функция на рёбрах, которая не превышает пропускную способность и не скапливается в промежуточных вершинах: сколько вошло, столько и вышло. Задача о максимальном потоке спрашивает: сколько всего можно доставить из в за единицу времени? Модель закрывает транспортные схемы, трубопроводы, пропускную способность сетей связи и подбор пар «работник — вакансия».
Интуиция водопроводная: по трубам течёт вода, труба не терпит превышения, в узлах ничего не задерживается. Величина потока — сколько воды вылилось из истока и, по сохранению, долилось в сток. Узкое место сети — разрез: набор рёбер, ведущих из «ближней» к истоку части графа в «дальнюю». Через любой разрез не пройти больше, чем сумма его пропускных способностей, поэтому самый тесный разрез — потолок для потока. Вся теория держится на этом наблюдении.
Мини-пример. Рёбра: , , , , . Отправим из в восемь единиц: шесть идут по , две — по . Ещё четыре идут напрямую ; в собирается и всё уходит в . Итог: . Больше нельзя: из выходит не более , значит по не провести больше восьми, и весь поток . Разрез подтверждает потолок: его рёбра , , дают .
Алгоритм Форда–Фалкерсона находит этот потолок честно: качает поток по увеличивающим путям остаточной сети, пока такие пути существуют, — и по теореме останавливается ровно на минимальном разрезе. Пошаговый разбор с картинками — урок потоки в сетях, фундамент теории — основы графов. Смежные сюжеты — эйлеров путь и дерево; формулы и алгоритмы графов — в шпаргалке.
Частые вопросы
Почему поток не может превысить минимальный разрез?
Любой поток пересекает каждый разрез: товар, попавший из истоковой части сети в стоковую, проходит по рёбрам разреза. Значит, величина потока не больше пропускной способности любого разреза, в том числе минимального. Теорема Форда–Фалкерсона добавляет: потолок достижим, поэтому max flow = min cut.
Всегда ли алгоритм Форда–Фалкерсона завершается?
При целых пропускных способностях — да: каждая итерация увеличивает поток хотя бы на единицу, а сверху есть минимальный разрез. При иррациональных ёмкостях неудачный выбор путей может затянуть процесс бесконечно, поэтому на практике берут версию Эдмондса–Карпа: кратчайший увеличивающий путь гарантирует остановку за полиномиальное число шагов.