stringtranslate.com

Задача о максимальном потоке

Сеть потоков для проблемы: Каждый человек (ri) готов взять кошку (wi1) и/или собаку (wi2). Однако каждое домашнее животное (pi) отдает предпочтение только подмножеству людей. Найдите любые соответствия домашних животных людям таким образом, чтобы максимальное количество домашних животных были взяты одним из предпочитаемых им людей.
Сеть потоков для задачи: Каждый человек (r i ) готов взять кошку (w i 1) и/или собаку (w i 2). Однако каждое домашнее животное (p i ) отдает предпочтение только подмножеству людей. Найдите любое соответствие домашних животных людям таким образом, чтобы максимальное количество домашних животных было взято одним из предпочитаемых им людей.

В теории оптимизации задачи максимального потока подразумевают поиск допустимого потока через сеть потоков , который обеспечивает максимально возможную скорость потока.

Проблему максимального потока можно рассматривать как частный случай более сложных проблем сетевых потоков, таких как задача циркуляции . Максимальное значение потока st (т. е. потока из источника s в сток t) равно минимальной пропускной способности разреза st (т. е. разреза, отделяющего s от t) в сети, как указано в теореме о максимальном потоке и минимальном разрезе .

История

Задача о максимальном потоке была впервые сформулирована в 1954 году Т. Э. Харрисом и Ф. С. Россом как упрощенная модель советского железнодорожного транспортного потока. [1] [2] [3]

В 1955 году Лестер Р. Форд-младший и Делберт Р. Фулкерсон создали первый известный алгоритм — алгоритм Форда–Фулкерсона . [4] [5] В своей статье 1955 года [4] Форд и Фулкерсон написали, что проблема Харриса и Росса формулируется следующим образом (см. [1] стр. 5):

Рассмотрим железнодорожную сеть, соединяющую два города через ряд промежуточных городов, где каждому звену сети присвоен номер, представляющий его пропускную способность. Предполагая устойчивое состояние, найдите максимальный поток из одного заданного города в другой.

В своей книге «Потоки в сети » [5] в 1962 году Форд и Фулкерсон писали:

Весной 1955 года этот вопрос был задан авторам Т. Э. Харрисом, который совместно с генералом Ф. С. Россом (в отставке) сформулировал упрощенную модель железнодорожного транспортного потока и обозначил эту конкретную проблему как центральную, предложенную моделью [11].

где [11] относится к секретному отчету 1955 года «Основы метода оценки пропускной способности железнодорожной сети» Харриса и Росса [3] (см. [1] стр. 5).

За эти годы были обнаружены различные улучшенные решения задачи максимального потока, в частности, алгоритм кратчайшего увеличивающегося пути Эдмондса и Карпа и независимо Диница; алгоритм блокирующего потока Диница; алгоритм push-relabel Голдберга и Тарьяна ; и алгоритм двоичного блокирующего потока Голдберга и Рао. Алгоритмы Шермана [6] и Кельнера, Ли, Ореккии и Сидфорда [7] [8] соответственно находят приблизительно оптимальный максимальный поток, но работают только в неориентированных графах.

В 2013 году Джеймс Б. Орлин опубликовал статью, описывающую алгоритм. [9]

В 2022 году Ли Чен, Расмус Кинг, Ян П. Лю, Ричард Пэн, Максимилиан Пробст Гутенберг и Сушант Сачдева опубликовали алгоритм с почти линейным временем работы для задачи потока минимальной стоимости , частным случаем которой является задача максимального потока. [10] [11] Для задачи кратчайшего пути из одного источника (SSSP) с отрицательными весами также был представлен другой частный случай задачи потока минимальной стоимости — алгоритм с почти линейным временем работы. [12] [13] Оба алгоритма были признаны лучшими докладами на Симпозиуме по основам компьютерных наук 2022 года . [14] [15]

Определение

Сеть потоков с источником s и стоком t . Числа рядом с ребрами — пропускные способности.

Сначала введем некоторые обозначения:

Определение. Пропускная способность ребра — это максимальный объем потока, который может пройти через ребро. Формально это карта

Определение. Поток — это карта , которая удовлетворяет следующим условиям:

Замечание . Потоки кососимметричны: для всех

Определение. Величина потока — это количество потока, проходящего от источника к стоку. Формально для потока это определяется как:

Определение. Задача максимального потока заключается в том, чтобы направить как можно больший поток от источника к приемнику, другими словами, найти поток с максимальным значением.

Обратите внимание, что может существовать несколько максимальных потоков, и если разрешены произвольные действительные (или даже произвольные рациональные) значения потока (вместо просто целых чисел), то существует либо ровно один максимальный поток, либо бесконечно много, поскольку существует бесконечно много линейных комбинаций базовых максимальных потоков. Другими словами, если мы отправляем единицы потока по ребру в одном максимальном потоке, а единицы потока по другому максимальному потоку, то для каждого мы можем отправить единицы и направить поток по оставшимся ребрам соответственно, чтобы получить другой максимальный поток. Если значения потока могут быть любыми действительными или рациональными числами, то существует бесконечно много таких значений для каждой пары .

Алгоритмы

В следующей таблице перечислены алгоритмы решения задачи максимального потока. Здесь и обозначают количество вершин и ребер сети. Значение относится к наибольшей емкости ребер после масштабирования всех емкостей до целочисленных значений (если сеть содержит иррациональные емкости, может быть бесконечной).

Дополнительные алгоритмы см. в книге Голдберга и Тарьяна (1988).

Теорема интегрального потока

Теорема о интегральном потоке утверждает, что

Если каждое ребро в потоковой сети имеет интегральную пропускную способность, то существует интегральный максимальный поток.

Утверждение заключается не только в том, что значение потока является целым числом, что следует непосредственно из теоремы о максимальном потоке и минимальном разрезе , но и в том, что поток на каждом ребре является целым числом. Это имеет решающее значение для многих комбинаторных приложений (см. ниже), где поток через ребро может кодировать, должен ли элемент, соответствующий этому ребру, быть включен в искомый набор или нет.

Приложение

Проблема максимального потока с несколькими источниками и несколькими стоками

Рис. 4.1.1. Трансформация задачи о максимальном потоке с несколькими источниками и несколькими стоками в задачу о максимальном потоке с одним источником и одним стоком

Учитывая сеть с набором источников и набором стоков вместо только одного источника и одного стока, мы должны найти максимальный поток через . Мы можем преобразовать задачу с несколькими источниками и несколькими стоками в задачу максимального потока, добавив объединенный источник, соединенный с каждой вершиной в , и объединенный сток, соединенный каждой вершиной в (также известный как суперисточник и суперсток ) с бесконечной пропускной способностью на каждом ребре (см. рис. 4.1.1.).

Двудольное паросочетание с максимальной мощностью

Рис. 4.3.1.Трансформация задачи максимального двудольного паросочетания в задачу максимального потока

Учитывая двудольный граф , мы должны найти паросочетание максимальной мощности в , то есть паросочетание, которое содержит наибольшее возможное число ребер. Эту задачу можно преобразовать в задачу максимального потока, построив сеть , где

  1. содержит ребра, направленные от к .
  2. для каждого и для каждого .
  3. для каждого (см. рис. 4.3.1).

Тогда значение максимального потока в равно размеру максимального паросочетания в , а паросочетание максимальной мощности можно найти, взяв те ребра, поток по которым является целочисленным максимальным потоком.

Минимальное покрытие пути в направленном ациклическом графе

Учитывая направленный ациклический граф , мы должны найти минимальное число вершинно-непересекающихся путей для покрытия каждой вершины в . Мы можем построить двудольный граф из , где

  1. .

Тогда можно показать, что имеет паросочетание размера тогда и только тогда, когда имеет вершинно-непересекающееся покрытие путей, содержащее ребра и пути, где — число вершин в . Таким образом, задачу можно решить, найдя вместо этого паросочетание максимальной мощности в .

Предположим, что мы нашли соответствие и построили из него покрытие . Интуитивно понятно, что если две вершины сопоставлены в , то ребро содержится в . Очевидно, что число ребер в равно . Чтобы увидеть, что является вершинно-непересекающимся, рассмотрим следующее:

  1. Каждая вершина в может быть либо не сопоставлена ​​в , в этом случае нет ребер, выходящих из ; либо она может быть сопоставлена ​​, в этом случае есть ровно одно ребро, выходящее из . В любом случае не более одного ребра покидает любую вершину в .
  2. Аналогично для каждой вершины в – если она сопоставлена, то в нее есть одно входящее ребро ; в противном случае в нее нет входящих ребер .

Таким образом, ни одна вершина не имеет двух входящих или двух исходящих ребер в , что означает, что все пути в не пересекаются по вершинам.

Чтобы показать, что покрытие имеет размер , мы начинаем с пустого покрытия и строим его постепенно. Чтобы добавить вершину к покрытию, мы можем либо добавить ее к существующему пути, либо создать новый путь нулевой длины, начинающийся с этой вершины. Первый случай применим, когда либо и какой-то путь в покрытии начинается в , либо и какой-то путь заканчивается в . Последний случай применим всегда. В первом случае общее количество ребер в покрытии увеличивается на 1, а количество путей остается прежним; во втором случае количество путей увеличивается, а количество ребер остается прежним. Теперь ясно, что после покрытия всех вершин сумма количества путей и ребер в покрытии равна . Следовательно, если количество ребер в покрытии равно , то количество путей равно .

Максимальный поток с вершинными мощностями

Рис. 4.4.1.Трансформация задачи максимального потока с ограничением пропускной способности вершин в исходную задачу максимального потока путем разбиения узлов

Пусть будет сетью. Предположим, что в каждом узле есть емкость в дополнение к емкости ребра, то есть отображение , при котором поток должен удовлетворять не только ограничению емкости и сохранению потоков, но и ограничению емкости вершины

Другими словами, величина потока, проходящего через вершину, не может превышать ее пропускную способность. Чтобы найти максимальный поток через , мы можем преобразовать задачу в задачу максимального потока в исходном смысле, расширив . Сначала каждая заменяется на и , где соединена ребрами, входящими в и соединена с ребрами, выходящими из , затем назначаем пропускную способность ребру, соединяющему и (см. рис. 4.4.1). В этой расширенной сети ограничение пропускной способности вершины снимается, и поэтому задачу можно рассматривать как исходную задачу максимального потока.

Максимальное количество путей из s в t

Дан ориентированный граф и две вершины и , нам нужно найти максимальное количество путей из в . Эта задача имеет несколько вариантов:

1. Пути должны быть непересекающимися по ребрам. Эту задачу можно преобразовать в задачу максимального потока, построив сеть из , где и являются источником и стоком соответственно, и назначив каждому ребру пропускную способность . В этой сети максимальный поток равен , если и только если существуют пути, непересекающиеся по ребрам.

2. Пути должны быть независимыми, т.е. вершинно-непересекающимися (за исключением и ). Мы можем построить сеть из с пропускными способностями вершин, где пропускные способности всех вершин и всех ребер равны . Тогда значение максимального потока равно максимальному числу независимых путей из в .

3. В дополнение к тому, что пути не пересекаются по ребрам и/или вершинам, пути также имеют ограничение по длине: мы учитываем только те пути, длина которых точно равна или не превышает . Большинство вариантов этой задачи являются NP-полными, за исключением небольших значений . [27]

Проблема закрытия

Замыкание ориентированного графа это множество вершин C , такое, что ни одно ребро не покидает C . Задача замыкания — это задача нахождения замыкания с максимальным или минимальным весом в ориентированном графе со взвешенными вершинами. Она может быть решена за полиномиальное время с использованием сведения к задаче максимального потока.

Реальные приложения

Бейсбол выбывание

Построение сетевого потока для задачи исключения бейсбола

В задаче на выбывание в бейсболе есть n команд, соревнующихся в лиге. На определенном этапе сезона лиги w i — это количество побед, r i — это количество игр, оставшихся для игры за команду i, а r ij — это количество игр, оставшихся против команды j . Команда выбывает, если у нее нет шансов закончить сезон на первом месте. Задача задачи на выбывание в бейсболе — определить, какие команды выбывают в каждой точке сезона. Шварц [28] предложил метод, который сводит эту задачу к максимальному сетевому потоку. В этом методе создается сеть для определения того, выбывает ли команда k .

Пусть G = ( V , E ) будет сетью, в которой s , tV являются источником и стоком соответственно. Добавляется игровой узел ij – который представляет собой количество игр между этими двумя командами. Мы также добавляем командный узел для каждой команды и соединяем каждый игровой узел { i , j } с i < j с V , и соединяем каждый из них из s ребром с пропускной способностью r ij – который представляет собой количество игр между этими двумя командами. Мы также добавляем командный узел для каждой команды и соединяем каждый игровой узел { i , j } с двумя командными узлами i и j , чтобы гарантировать победу одного из них. Не нужно ограничивать значение потока на этих ребрах. Наконец, ребра сделаны от командного узла i до приемного узла t , а пропускная способность w k + r kw i установлена ​​так, чтобы команда i не выиграла больше, чем w k + r k . Пусть S будет множеством всех команд, участвующих в лиге, и пусть

.

В этом методе утверждается, что команда k не исключается тогда и только тогда, когда в сети G существует значение потока размера r ( S − { k }) . В упомянутой статье доказано, что это значение потока является максимальным значением потока из s в t .

Расписание рейсов авиакомпании

В авиационной отрасли одной из основных проблем является планирование работы экипажей. Задача планирования работы авиакомпаний может рассматриваться как приложение расширенного максимального сетевого потока. Входными данными этой задачи является набор рейсов F , содержащий информацию о том, где и когда каждый рейс отправляется и прибывает. В одной из версий планирования работы авиакомпаний цель состоит в том, чтобы составить допустимое расписание с не более чем k экипажами.

Для решения этой проблемы используется вариация задачи циркуляции, называемая ограниченной циркуляцией, которая является обобщением задач сетевых потоков с дополнительным ограничением в виде нижней границы потоков на ребрах.

Пусть G = ( V , E ) будет сетью с s , tV в качестве исходного и приемного узлов. Для исходного и конечного узлов каждого рейса i добавляются два узла к V , узел s i как исходный и узел d i как конечный узел рейса i . Также добавляются следующие ребра к E :

  1. Ребро с пропускной способностью [0, 1] между s и каждым s i .
  2. Ребро с пропускной способностью [0, 1] между каждым d i и t .
  3. Ребро с пропускной способностью [1, 1] между каждой парой s i и d i .
  4. Ребро с пропускной способностью [0, 1] между каждым d i и s j , если источник s j достижим за разумное время и стоимость от пункта назначения рейса i .
  5. Ребро с пропускной способностью [0, ∞ ] между s и t .

В упомянутом методе утверждается и доказывается, что нахождение значения потока k в G между s и t равнозначно нахождению допустимого расписания для набора полетов F с не более чем k экипажами. [29]

Другой вариант планирования авиалиний заключается в поиске минимально необходимого экипажа для выполнения всех рейсов. Чтобы найти ответ на эту задачу, создается двудольный граф G' = ( AB , E ) , где каждый рейс имеет копию в множестве A и множестве B . Если тот же самолет может выполнить рейс j после рейса i , iA соединяется с jB . Сопоставление в G' индуцирует расписание для F и, очевидно, максимальное двудольное сопоставление в этом графе создает расписание авиалиний с минимальным количеством экипажей. [29] Как упоминалось в части «Приложение» этой статьи, максимальное кардинальность двудольного сопоставления является приложением задачи максимального потока.

Проблема спроса и обращения

Есть несколько фабрик, которые производят товары, и несколько деревень, куда эти товары должны быть доставлены. Они соединены сетью дорог, каждая из которых имеет пропускную способность c для максимального количества товаров, которые могут по ней пройти. Задача состоит в том, чтобы найти, есть ли циркуляция, которая удовлетворяет спрос. Эту задачу можно преобразовать в задачу максимального потока.

  1. Добавьте исходный узел s и добавьте ребра от него к каждому узлу фабрики f i с производительностью p i , где p i — производительность фабрики f i .
  2. Добавьте узел стока t и добавьте ребра из всех деревень v i в t с пропускной способностью d i , где d i — уровень спроса деревни v i .

Пусть G = ( V , E ) будет этой новой сетью. Существует циркуляция, которая удовлетворяет спрос, если и только если:

Максимальное значение расхода ( G ) .

Если циркуляция существует, то рассмотрение решения о максимальном потоке даст ответ на вопрос, сколько товаров необходимо отправить по конкретной дороге для удовлетворения спроса.

Проблему можно расширить, добавив нижнюю границу потока на некоторых ребрах. [30]

Сегментация изображения

Исходное изображение размером 8x8.
Сеть, построенная из битовой карты. Источник находится слева, сток справа. Чем темнее край, тем больше его емкость. a i имеет высокий уровень, когда пиксель зеленый, b i — когда пиксель не зеленый. Штрафы p ij все равны. [31]

В своей книге Клейнберг и Тардос представляют алгоритм сегментации изображения. [32] Они представляют алгоритм для поиска фона и переднего плана на изображении. Точнее, алгоритм принимает в качестве входных данных растровое изображение, смоделированное следующим образом: a i ≥ 0 — вероятность того, что пиксель i принадлежит переднему плану, b i ≥ 0 — вероятность того, что пиксель i принадлежит фону, а p ij — штраф, если два соседних пикселя i и j помещены один на передний план, а другой на задний план. Цель состоит в том, чтобы найти разбиение ( A , B ) набора пикселей, которое максимизирует следующее количество

,

Действительно, для пикселей в A (рассматриваемых как передний план) мы получаем a i ; для всех пикселей в B (рассматриваемых как фон) мы получаем b i . На границе, между двумя соседними пикселями i и j , мы теряем p ij . Это эквивалентно минимизации величины

потому что

Минимальный разрез отображается в сети (треугольники VS круги).

Теперь мы строим сеть, узлами которой являются пиксель, а также источник и сток, см. рисунок справа. Мы соединяем источник с пикселем i ребром веса a i . Мы соединяем пиксель i со стоком ребром веса b i . Мы соединяем пиксель i с пикселем j с весом p ij . Теперь осталось вычислить минимальный разрез в этой сети (или, что эквивалентно, максимальный поток). На последнем рисунке показан минимальный разрез.

Расширения

1. В задаче о потоке минимальной стоимости каждое ребро ( u ,v) также имеет коэффициент стоимости a uv в дополнение к своей пропускной способности. Если поток через ребро равен f uv , то общая стоимость равна a uv f uv . Требуется найти поток заданного размера d с наименьшей стоимостью. В большинстве вариантов коэффициенты стоимости могут быть как положительными, так и отрицательными. Для этой задачи существуют различные алгоритмы с полиномиальным временем.

2. Задача максимального потока может быть дополнена дизъюнктивными ограничениями : отрицательное дизъюнктивное ограничение говорит, что определенная пара ребер не может одновременно иметь ненулевой поток; положительное дизъюнктивное ограничение говорит, что в определенной паре ребер по крайней мере одно должно иметь ненулевой поток. С отрицательными ограничениями задача становится сильно NP-трудной даже для простых сетей. С положительными ограничениями задача является полиномиальной, если допускаются дробные потоки, но может быть сильно NP-трудной, когда потоки должны быть целыми. [33]

Ссылки

  1. ^ abc Schrijver, A. (2002). «Об истории проблем транспортировки и максимального потока». Математическое программирование . 91 (3): 437–445. CiteSeerX  10.1.1.23.5134 . doi :10.1007/s101070100259. S2CID  10210675.
  2. ^ Гасс, Саул И.; Ассад, Арджанг А. (2005). «Математические, алгоритмические и профессиональные разработки исследования операций с 1951 по 1956 год». Аннотированная хронология исследования операций . Международная серия по исследованию операций и науке управления. Том 75. С. 79–110. doi :10.1007/0-387-25837-X_5. ISBN 978-1-4020-8116-3.
  3. ^ ab Harris, TE ; Ross, FS (1955). "Основы метода оценки пропускной способности железнодорожной сети" (PDF) . Исследовательский меморандум . Архивировано из оригинала (PDF) 8 января 2014 г.
  4. ^ ab Ford, LR ; Fulkerson, DR (1956). «Максимальный поток через сеть». Canadian Journal of Mathematics . 8 : 399–404. doi : 10.4153/CJM-1956-045-5 .
  5. ^ Форд, Л.Р., младший; Фулкерсон, Д.Р., Потоки в сетях , Издательство Принстонского университета (1962).
  6. ^ Шерман, Джона (2013). «Почти максимальные потоки за почти линейное время». Труды 54-го ежегодного симпозиума IEEE по основам компьютерной науки . С. 263–269. arXiv : 1304.2077 . doi : 10.1109/FOCS.2013.36. ISBN 978-0-7695-5135-7. S2CID  14681906.
  7. ^ Кельнер, JA; Ли, YT; Ореккия, L.; Сидфорд, A. (2014). "Почти линейный по времени алгоритм для приближенного максимального потока в неориентированных графах и его многопродуктовые обобщения" (PDF) . Труды двадцать пятого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . стр. 217. arXiv : 1304.2338 . doi : 10.1137/1.9781611973402.16. ISBN 978-1-61197-338-9. S2CID  10733914. Архивировано из оригинала (PDF) 3 марта 2016 г.
  8. ^ Найт, Хелен (7 января 2014 г.). «Новый алгоритм может значительно упростить решения проблемы «максимального потока»». MIT News . Получено 8 января 2014 г.
  9. ^ ab Orlin, James B. (2013). "Max flows in O(nm) time, or better". Труды сорок пятого ежегодного симпозиума ACM по теории вычислений . стр. 765–774. CiteSeerX 10.1.1.259.5759 . doi :10.1145/2488608.2488705. ISBN  9781450320290. S2CID  207205207.
  10. ^ ab Chen, L.; Kyng, R.; Liu, YP; Gutenberg, MP; Sachdeva, S. (2022). «Максимальный поток и поток с минимальной стоимостью за почти линейное время». arXiv : 2203.00671 [cs.DS].
  11. ^ Кларрайх, Эрика (8 июня 2022 г.). «Исследователи достигли „абсурдно быстрого“ алгоритма для сетевого потока». Журнал Quanta . Получено 8 июня 2022 г.
  12. ^ Бернстайн, Аарон; Нанонгкай, Данупон; Вульф-Нильсен, Кристиан (30 октября 2022 г.). «Кратчайшие пути с одним источником и отрицательным весом за почти линейное время». arXiv : 2203.03456 [cs.DS].
  13. ^ Брубейкер, Бен (18 января 2023 г.). «Наконец-то, быстрый алгоритм для кратчайших путей на отрицательных графах». Журнал Quanta . Получено 25 января 2023 г.
  14. ^ "FOCS 2022". focs2022.eecs.berkeley.edu . Получено 25 января 2023 г. .
  15. ^ Сантош, Нагаракатте. «Премия FOCS 2022 за лучшую статью профессора Аарона Бернстайна». www.cs.rutgers.edu . Получено 25 января 2023 г.
  16. ^ Малхотра, В. М.; Кумар, М. Прамодх; Махешвари, С. Н. (1978). "Алгоритм O ( | V | 3 ) {\displaystyle O(|V|^{3})} для поиска максимальных потоков в сетях" (PDF) . Information Processing Letters . 7 (6): 277–278. doi :10.1016/0020-0190(78)90016-9.
  17. ^ abc Goldberg, AV ; Tarjan, RE (1988). "Новый подход к проблеме максимального потока". Journal of the ACM . 35 (4): 921. doi : 10.1145/48014.61051 . S2CID  52152408.
  18. ^ Cheriyan, J.; Maheshwari, SN (1988). "Анализ алгоритмов проталкивания предпотока для максимального сетевого потока". Основы технологии программного обеспечения и теоретической информатики . Конспект лекций по информатике. Том 338. С. 30–48. doi :10.1007/3-540-50517-2_69. ISBN 978-3-540-50517-4. ISSN  0302-9743.
  19. ^ Кинг, В.; Рао, С.; Тарьян, Р. (1994). «Более быстрый детерминированный алгоритм максимального потока». Журнал алгоритмов . 17 (3): 447–474. doi :10.1006/jagm.1994.1044. S2CID  15493.
  20. ^ Голдберг, А. В.; Рао, С. (1998). «За барьером разложения потока». Журнал ACM . 45 (5): 783. doi : 10.1145/290179.290181 . S2CID  96030.
  21. ^ Kathuria, T.; Liu, YP; Sidford, A. (16–19 ноября 2020 г.). Единичная пропускная способность Maxflow в почти сжатые сроки . Дарем, Северная Каролина, США: IEEE. стр. 119–130.
  22. ^ Мадри, Александр (9–11 октября 2016 г.). Вычисление максимального потока с помощью увеличивающихся электрических потоков . Нью-Брансуик, Нью-Джерси: IEEE. стр. 593–602.
  23. ^ Брэнд, Дж. В.Д.; Ли, Ю.Т.; Нанонгкай, Д.; Пэн, Р.; Саранурак, Т.; Сидфорд, А.; Песня, З.; Ван, Д. (16–19 ноября 2020 г.). Двудольное сопоставление за почти линейное время на умеренно плотных графах . Дарем, Северная Каролина, США: IEEE. стр. 919–930.
  24. ^ Brand, J. vd; Lee, YT; Liu, YP; Saranurak, T.; Sidford, A; Song, Z.; Wang, D. (2021). «Потоки минимальной стоимости, MDP и ℓ1-регрессия за почти линейное время для плотных экземпляров». arXiv : 2101.05719 [cs.DS].
  25. ^ Гао, Y.; Лю, YP; Пэн, R. (2021). «Полностью динамические электрические потоки: разреженный максимальный поток быстрее, чем Голдберг-Рао». arXiv : 2101.07233 [cs.DS].
  26. ^ Бернштейн, А.; Бликстад, Дж.; Саранурак, Т.; Ту, Т. (2024). «Максимальный поток за счет увеличения путей во времени». arXiv : 2406.03648 [cs.DS].
  27. ^ Итай, А.; Перл, И.; Шилоах, И. (1982). «Сложность поиска максимально непересекающихся путей с ограничениями длины». Networks . 12 (3): 277–286. doi :10.1002/net.3230120306. ISSN  1097-0037.
  28. ^ Шварц, BL (1966). «Возможные победители частично завершенных турниров». SIAM Review . 8 (3): 302–308. Bibcode : 1966SIAMR...8..302S. doi : 10.1137/1008062. JSTOR  2028206.
  29. ^ ab Thomas H. Cormen , Charles E. Leiserson , Ronald L. Rivest и Clifford Stein (2001). "26. Максимальный поток". Введение в алгоритмы, второе издание . MIT Press и McGraw-Hill. стр. 643–668. ISBN 978-0-262-03293-3.{{cite book}}: CS1 maint: multiple names: authors list (link)
  30. ^ Карл Кингсфорд. «Расширения максимального потока: циркуляции со спросом» (PDF) .
  31. ^ "Проект imagesegmentationwithmaxflow, содержащий исходный код для создания этих иллюстраций". GitLab . Архивировано из оригинала 22 декабря 2019 г. Получено 22 декабря 2019 г.
  32. ^ "Algorithm Design". pearson.com . Получено 21 декабря 2019 .
  33. ^ Шауэр, Иоахим; Пферши, Ульрих (1 июля 2013 г.). «Проблема максимального потока с дизъюнктивными ограничениями». Журнал комбинаторной оптимизации . 26 (1): 109–119. CiteSeerX 10.1.1.414.4496 . doi :10.1007/s10878-011-9438-7. ISSN  1382-6905. S2CID  6598669. 

Дальнейшее чтение