← Все вопросы

Теорема о максимальном потоке и минимальном разрезе — как её понять и доказать?

Задан 19 месяцев назад689 просмотров2 ответа
11

Постоянно слышу «max-flow = min-cut», но не понимаю, почему это так, и что вообще такое разрез. Можно строгое, но усваиваемое объяснение и набросок доказательства? Зачем это знание на олимпиаде?

2 ответа

16
✓ Принятый ответ — помог автору

Разрез (S,T)(S,T) — это разбиение вершин на две части так, что sSs \in S, tTt \in T. Пропускная способность разреза — это сумма пропускных способностей рёбер, идущих из SS в TT (обратные не считаем). Минимальный разрез — разрез наименьшей пропускной способности.

Теорема (Форд-Фалкерсон): величина максимального потока равна пропускной способности минимального разреза.

Набросок доказательства через три эквивалентных утверждения:

  1. ff максимален \Rightarrow в остаточной сети нет пути sts\to t. Если бы путь был, можно увеличить поток — противоречие.
  2. Нет пути sts\to t в остаточной сети \Rightarrow существует разрез величины f|f|. Возьмём SS = множество вершин, достижимых из ss в остаточной сети. Тогда tTt\in T. Все рёбра из SS в TT насыщены (иначе была бы остаточная пропускная и достижимость), а все рёбра из TT в SS несут нулевой поток. Значит поток через разрез = сумма пропускных рёбер STS\to T = пропускная этого разреза.
  3. Любой поток \le любой разрез (слабая двойственность): поток через любой разрез равен f|f|, и он \le пропускной разреза.

Из (1)+(2): нашли разрез величины f|f|. Из (3): f|f| \le min-cut. Значит этот разрез минимальный, а поток максимальный.

Зачем на олимпиаде: многие задачи на «минимальную стоимость разделить/разбить» сводятся к минимальному разрезу, который считается как максимальный поток. Project selection, image segmentation, минимальное вершинное покрытие в двудольном — всё это min-cut в маскировке.

6

Дополню геометрической интуицией. Поток ограничен любым «бутылочным горлышком»: какой бы разрез вы ни взяли, весь поток обязан через него пройти, поэтому fc(S,T)|f| \le c(S,T) для всех разрезов. Теорема говорит, что это ограничение достижимо — самое узкое горлышко (min-cut) и определяет максимум. Поэтому на практике, если нужно доказать оценку «поток не больше K», достаточно предъявить разрез величины K. Это частый приём в разборах: вместо запуска алгоритма доказывают оптимальность через явный разрез.

Ваш ответ

Войдите, чтобы ответить на вопрос.