В информатике и теории оптимизации теорема о максимальном потоке и минимальном разрезе гласит, что в потоковой сети максимальный объем потока, проходящего от источника к приемнику, равен общему весу ребер в минимальном разрезе , т. е. наименьшему общему весу ребер, удаление которых приведет к отключению источника от приемника.
Это частный случай теоремы двойственности для линейных программ , который можно использовать для вывода теоремы Менгера и теоремы Кёнига–Эгервари . [1]
Теорема уравнивает две величины: максимальный поток через сеть и минимальную пропускную способность разреза сети. Чтобы сформулировать теорему, каждое из этих понятий должно быть сначала определено.
Сеть состоит из
Поток через сеть — это отображение, обозначаемое как или , при соблюдении следующих двух ограничений:
Поток можно визуализировать как физический поток жидкости через сеть, следуя направлению каждого ребра. Ограничение емкости тогда говорит, что объем, текущий через каждое ребро за единицу времени, меньше или равен максимальной емкости ребра, а ограничение сохранения говорит, что объем, который втекает в каждую вершину, равен объему, вытекающему из каждой вершины, за исключением вершин источника и стока.
Значение потока определяется как
где, как указано выше, является источником, а является стоком сети. В аналогии с жидкостью это представляет собой количество жидкости, поступающей в сеть в источнике. Из-за аксиомы сохранения для потоков это то же самое, что и количество потока, покидающего сеть в стоке.
Задача о максимальном потоке требует наибольшего потока в заданной сети.
Задача о максимальном потоке. Максимизировать, то есть направить как можно больший поток изв.
Другая половина теоремы о максимальном потоке и минимальном разрезе относится к другому аспекту сети: набору разрезов. Разрез st C = ( S , T ) — это разбиение V такое, что s ∈ S и t ∈ T . То есть разрез s - t — это разделение вершин сети на две части, с источником в одной части и стоком в другой. Набор разрезов разреза C — это набор ребер, которые соединяют исходную часть разреза с стоком:
Таким образом, если удалить все ребра в разрезе C , то положительный поток невозможен, поскольку в полученном графе нет пути от источника к стоку.
Пропускная способность разреза st равна сумме пропускных способностей ребер в его разрезе,
где если и , в противном случае.
Обычно в графе много разрезов, но разрезы с меньшим весом зачастую сложнее найти.
В приведенной выше ситуации можно доказать, что значение любого потока через сеть меньше или равно пропускной способности любого разреза st , и что, кроме того, существуют поток с максимальным значением и разрез с минимальной пропускной способностью. Основная теорема связывает максимальное значение потока с минимальной пропускной способностью разреза сети.
На рисунке справа показан поток в сети. Цифровая аннотация на каждой стрелке в форме f / c указывает поток ( f ) и пропускную способность ( c ) стрелки. Потоки, исходящие из источника, в сумме составляют пять (2+3=5), как и потоки в сток (2+3=5), что устанавливает, что значение потока равно 5.
Один разрез s - t со значением 5 задается как S = { s , p } и T = { o , q , r , t }. Пропускные способности ребер, пересекающих этот разрез, равны 3 и 2, что дает пропускную способность разреза 3+2=5. (Стрелка от o к p не рассматривается, так как она указывает от T обратно к S .)
Значение потока равно пропускной способности разреза, что показывает, что поток является максимальным потоком, а разрез — минимальным разрезом.
Обратите внимание, что поток через каждую из двух стрелок, соединяющих S и T, идет на полную мощность; так происходит всегда: минимальное сечение представляет собой «узкое место» системы.
Задачу максимального потока и задачу минимального разреза можно сформулировать как две прямо-двойственные линейные задачи программирования . [2]
LP с максимальным потоком прост. Двойственный LP получается с помощью алгоритма, описанного в двойственной линейной программе : переменные и ограничения знака двойственного соответствуют ограничениям основного, а ограничения двойственного соответствуют переменным и ограничениям знака основного. Полученный LP требует некоторых пояснений. Интерпретация переменных в LP с минимальным разрезом такова:
Цель минимизации суммирует пропускную способность по всем ребрам, содержащимся в разрезе.
Ограничения гарантируют, что переменные действительно представляют собой законное сокращение: [3]
Обратите внимание, что поскольку это задача минимизации, нам не нужно гарантировать, что ребро не находится в разрезе — нам нужно только гарантировать, что каждое ребро, которое должно находиться в разрезе, суммируется в целевой функции.
Равенство в теореме о максимальном потоке и минимальном разрезе следует из теоремы о сильной двойственности в линейном программировании , которая гласит, что если первичная программа имеет оптимальное решение x *, то двойственная программа также имеет оптимальное решение y *, такое, что оптимальные значения, образованные двумя решениями, равны.
Задача максимального потока может быть сформулирована как максимизация электрического тока через сеть, состоящую из нелинейных резистивных элементов. [4] В этой формулировке предел тока I in между входными клеммами электрической сети, когда входное напряжение V in приближается к , равен весу набора разрезов минимального веса.
В дополнение к пропускной способности ребра, предположим, что в каждой вершине имеется пропускная способность, то есть отображение, обозначенное как c ( v ) , такое, что поток f должен удовлетворять не только ограничению пропускной способности и сохранению потоков, но также ограничению пропускной способности вершины
Другими словами, объем потока, проходящего через вершину, не может превышать ее пропускную способность. Определим разрез st как множество вершин и ребер, таких, что для любого пути от s до t , путь содержит член разреза. В этом случае пропускная способность разреза равна сумме пропускной способности каждого ребра и вершины в нем.
В этом новом определении обобщенная теорема о максимальном потоке и минимальном разрезе утверждает, что максимальное значение потока st равно минимальной пропускной способности разреза st в новом смысле.
В задаче о неориентированных рёберно-непересекающихся путях нам дан неориентированный граф G = ( V , E ) и две вершины s и t , и нам нужно найти максимальное количество рёберно-непересекающихся путей st в G.
Теорема Менгера утверждает, что максимальное число непересекающихся по ребрам путей st в неориентированном графе равно минимальному числу ребер в множестве разрезов st.
В задаче выбора проекта есть n проектов и m машин. Каждый проект p i приносит доход r ( p i ) , а каждая машина q j стоит c ( q j ) на покупку. Мы хотим выбрать подмножество проекта и купить подмножество машин, чтобы максимизировать общую прибыль (доход выбранных проектов за вычетом стоимости купленных машин). Мы должны соблюдать следующее ограничение: каждый проект определяет набор машин, которые должны быть куплены, если проект выбран. (Каждая машина, после покупки, может использоваться любым выбранным проектом.)
Чтобы решить задачу, пусть P будет набором невыбранных проектов , а Q — набором закупленных машин, тогда задачу можно сформулировать следующим образом:
Поскольку первый член не зависит от выбора P и Q , эту задачу максимизации можно сформулировать как задачу минимизации, то есть:
Вышеуказанная задача минимизации может быть сформулирована как задача минимального разреза путем построения сети, где источник соединен с проектами с емкостью r ( p i ) , а сток соединен с машинами с емкостью c ( q j ) . Ребро ( p i , q j ) с бесконечной емкостью добавляется, если проект p i требует машину q j . Набор разрезов st представляет проекты и машины в P и Q соответственно. По теореме о максимальном потоке минимального разреза можно решить задачу как задачу максимального потока .
На рисунке справа представлена сетевая формулировка следующей задачи выбора проекта:
Минимальная мощность разреза st составляет 250, а сумма доходов каждого проекта составляет 450; следовательно, максимальная прибыль g составляет 450 − 250 = 200, при выборе проектов p 2 и p 3 .
Идея здесь заключается в том, чтобы «пропустить» прибыль каждого проекта через «трубы» его машин. Если мы не можем заполнить трубу из машины, то доход машины меньше ее стоимости, и алгоритм минимального разреза найдет более дешевым сократить границу прибыли проекта вместо границы стоимости машины.
В задаче сегментации изображения есть n пикселей. Каждому пикселю i можно присвоить значение переднего плана f i или значение фона b i . Существует штраф p ij , если пиксели i, j являются смежными и имеют разные назначения. Задача состоит в том, чтобы присвоить пикселям передний план или фон таким образом, чтобы сумма их значений за вычетом штрафов была максимальной.
Пусть P — набор пикселей, назначенных переднему плану, а Q — набор точек, назначенных фону, тогда задачу можно сформулировать следующим образом:
Эту задачу максимизации можно сформулировать как задачу минимизации, то есть:
Вышеуказанная задача минимизации может быть сформулирована как задача минимального разреза путем построения сети, где источник (оранжевый узел) соединен со всеми пикселями с емкостью f i , а сток (фиолетовый узел) соединен со всеми пикселями с емкостью b i . Два ребра ( i, j ) и ( j, i ) с емкостью p ij добавляются между двумя соседними пикселями. Затем st cut-set представляет пиксели, назначенные переднему плану в P , и пиксели, назначенные фону в Q .
Отчет об открытии теоремы был дан Фордом и Фулкерсоном в 1962 году: [5]
«Определение максимального стационарного потока из одной точки в другую в сети, подверженной ограничениям пропускной способности дуг... было предложено авторам весной 1955 года Т. Э. Харрисом, который совместно с генералом Ф. С. Россом (в отставке) сформулировал упрощенную модель железнодорожного транспортного потока и обозначил эту конкретную проблему как центральную, предложенную моделью. Вскоре после этого был выдвинут и установлен главный результат — теорема 5.1, которую мы называем теоремой о максимальном потоке и минимальном разрезе. [6] С тех пор появилось множество доказательств». [7] [8] [9]
Пусть G = ( V , E ) — сеть (направленный граф), где s и t являются источником и стоком G соответственно.
Рассмотрим поток f, вычисленный для G с помощью алгоритма Форда–Фалкерсона . В остаточном графе ( G f ), полученном для G (после окончательного назначения потока с помощью алгоритма Форда–Фалкерсона ), определим два подмножества вершин следующим образом:
Claim. value( f ) = c ( A , A c ) , где пропускная способность разреза st определяется как
Теперь мы знаем, что для любого подмножества вершин A. Следовательно, для value( f ) = c ( A , A c ) нам нужно:
Для доказательства вышеизложенного утверждения рассмотрим два случая:
Оба приведенных выше утверждения доказывают, что пропускная способность разреза, полученного описанным выше способом, равна потоку, полученному в сети. Кроме того, поток был получен с помощью алгоритма Форда-Фалкерсона , поэтому он также является максимальным потоком сети.
Кроме того, поскольку любой поток в сети всегда меньше или равен пропускной способности каждого возможного разреза в сети, описанный выше разрез также является минимальным разрезом , который обеспечивает максимальный поток .
Следствием этого доказательства является то, что максимальный поток через любой набор ребер в разрезе графа равен минимальной пропускной способности всех предыдущих разрезов.