Теорема о максимальном потоке и минимальном разрезе — как её понять и доказать?
Постоянно слышу «max-flow = min-cut», но не понимаю, почему это так, и что вообще такое разрез. Можно строгое, но усваиваемое объяснение и набросок доказательства? Зачем это знание на олимпиаде?
2 ответа
Разрез — это разбиение вершин на две части так, что , . Пропускная способность разреза — это сумма пропускных способностей рёбер, идущих из в (обратные не считаем). Минимальный разрез — разрез наименьшей пропускной способности.
Теорема (Форд-Фалкерсон): величина максимального потока равна пропускной способности минимального разреза.
Набросок доказательства через три эквивалентных утверждения:
- максимален в остаточной сети нет пути . Если бы путь был, можно увеличить поток — противоречие.
- Нет пути в остаточной сети существует разрез величины . Возьмём = множество вершин, достижимых из в остаточной сети. Тогда . Все рёбра из в насыщены (иначе была бы остаточная пропускная и достижимость), а все рёбра из в несут нулевой поток. Значит поток через разрез = сумма пропускных рёбер = пропускная этого разреза.
- Любой поток любой разрез (слабая двойственность): поток через любой разрез равен , и он пропускной разреза.
Из (1)+(2): нашли разрез величины . Из (3): min-cut. Значит этот разрез минимальный, а поток максимальный.
Зачем на олимпиаде: многие задачи на «минимальную стоимость разделить/разбить» сводятся к минимальному разрезу, который считается как максимальный поток. Project selection, image segmentation, минимальное вершинное покрытие в двудольном — всё это min-cut в маскировке.
Дополню геометрической интуицией. Поток ограничен любым «бутылочным горлышком»: какой бы разрез вы ни взяли, весь поток обязан через него пройти, поэтому для всех разрезов. Теорема говорит, что это ограничение достижимо — самое узкое горлышко (min-cut) и определяет максимум. Поэтому на практике, если нужно доказать оценку «поток не больше K», достаточно предъявить разрез величины K. Это частый приём в разборах: вместо запуска алгоритма доказывают оптимальность через явный разрез.