МатВектор

Command Palette

Search for a command to run...

🔀 Дискретка

Поток в сети

англ. Network flow

Функция на рёбрах ориентированного графа с истоком и стоком: не превышает пропускные способности и сохраняется в каждой промежуточной вершине; максимум потока равен минимальному разрезу.

Поток в сети — транспортная модель на графе. Сеть — ориентированный граф, где каждое ребро снабжено пропускной способностью, выделен исток (откуда везём) и сток (куда). Поток — функция на рёбрах, которая не превышает пропускную способность и не скапливается в промежуточных вершинах: сколько вошло, столько и вышло. Задача о максимальном потоке спрашивает: сколько всего можно доставить из в за единицу времени? Модель закрывает транспортные схемы, трубопроводы, пропускную способность сетей связи и подбор пар «работник — вакансия».

Интуиция водопроводная: по трубам течёт вода, труба не терпит превышения, в узлах ничего не задерживается. Величина потока — сколько воды вылилось из истока и, по сохранению, долилось в сток. Узкое место сети — разрез: набор рёбер, ведущих из «ближней» к истоку части графа в «дальнюю». Через любой разрез не пройти больше, чем сумма его пропускных способностей, поэтому самый тесный разрез — потолок для потока. Вся теория держится на этом наблюдении.

теорема Форда–Фалкерсона: величина максимального потока равна пропускной способности минимального разреза; здесь — суммарный поток, выходящий из истока

Мини-пример. Рёбра: , , , , . Отправим из в восемь единиц: шесть идут по , две — по . Ещё четыре идут напрямую ; в собирается и всё уходит в . Итог: . Больше нельзя: из выходит не более , значит по не провести больше восьми, и весь поток . Разрез подтверждает потолок: его рёбра , , дают .

Алгоритм Форда–Фалкерсона находит этот потолок честно: качает поток по увеличивающим путям остаточной сети, пока такие пути существуют, — и по теореме останавливается ровно на минимальном разрезе. Пошаговый разбор с картинками — урок потоки в сетях, фундамент теории — основы графов. Смежные сюжеты — эйлеров путь и дерево; формулы и алгоритмы графов — в шпаргалке.

Частые вопросы

Почему поток не может превысить минимальный разрез?

Любой поток пересекает каждый разрез: товар, попавший из истоковой части сети в стоковую, проходит по рёбрам разреза. Значит, величина потока не больше пропускной способности любого разреза, в том числе минимального. Теорема Форда–Фалкерсона добавляет: потолок достижим, поэтому max flow = min cut.

Всегда ли алгоритм Форда–Фалкерсона завершается?

При целых пропускных способностях — да: каждая итерация увеличивает поток хотя бы на единицу, а сверху есть минимальный разрез. При иррациональных ёмкостях неудачный выбор путей может затянуть процесс бесконечно, поэтому на практике берут версию Эдмондса–Карпа: кратчайший увеличивающий путь гарантирует остановку за полиномиальное число шагов.