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

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

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

История [ править ]

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

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

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

В их книге потоков в сети , [5] в 1962 году, Ford и Фулкерсон писал:

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

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

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

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

Определение [ править ]

Поточная сеть с источником s и стоком t . Цифры рядом с краем - это вместимость.

Сначала введем обозначения:

  • Позвольте быть сетью, являющейся источником и приемником соответственно.
  • Если есть функция на краях, то ее значение на обозначается символом или

Определение. Емкость ребра максимального количество потоков , которые могут проходить через край. Формально это карта

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

  • Ограничение емкости . Другими словами, поток ребра не может превышать его пропускную способность: для всех
  • Сохранение потоков. Сумма потоков, входящих в узел, должна равняться сумме потоков, выходящих из этого узла, за исключением источника и приемника. Или же:

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

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

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

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

Алгоритмы [ править ]

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

Более подробный список см. В Goldberg & Tarjan (1988) .

Теорема об интегральном потоке [ править ]

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

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

Заявление [ править ]

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

Рис. 4.1.1. Преобразование задачи максимального потока с несколькими источниками и несколькими стоками в задачу о максимальном потоке с одним источником и одним стоком

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

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

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

  1. .

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

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

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

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

Максимальное количество элементов при двудольном сопоставлении [ править ]

Рис. 4.3.1. Преобразование задачи о максимальном двудольном согласовании в задачу о максимальном потоке

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

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

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

Максимальный поток с вместимостью вершин [ править ]

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

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

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

Максимальное количество путей от s до t [ править ]

Для ориентированного графа и двух вершин и необходимо найти максимальное количество путей от до . У этой проблемы есть несколько вариантов:

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

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

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

Проблема закрытия [ править ]

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

Приложения реального мира [ править ]

Ликвидация бейсбола [ править ]

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

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

Пусть G = ( V , E ) - сеть, где s , tV - источник и сток соответственно. Один добавляет игровой узел { i , j } с i < j к V и соединяет каждый из них из s ребром с емкостью r ij, которое представляет количество игр между этими двумя командами. Мы также добавляем командный узел для каждой команды и соединяем каждый игровой узел { i , j } с двумя командными узлами i и j.чтобы обеспечить победу одного из них. На этих краях нет необходимости ограничивать величину потока. Наконец, от узла команды i к узлу приемника t делаются ребра, а емкость w k + r k - w i устанавливается так, чтобы не дать команде i выиграть больше, чем w k + r k . Пусть S будет набором всех команд, участвующих в лиге, и пусть . В этом методе утверждается, что команда k не удаляется тогда и только тогда, когда в сети существует значение потока размера r ( S - { k }).G . В указанной статье доказано, что это значение расхода является максимальным значением расхода от 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 экипажами. [16]

Другой вариант расписания авиакомпаний - поиск минимально необходимого экипажа для выполнения всех полетов. Для того , чтобы найти ответ на этот вопрос, двудольный граф = ( ∪ B , E ) создаются , где каждый полет имеет копию в множестве A и множество B . Если же плоскость может выполнять полет J после полета я , яA соединен с JB . Паросочетание в G ' индуцирует расписание для Fи, очевидно, максимальное двустороннее соответствие на этом графике дает расписание авиалиний с минимальным количеством экипажей. [16] Как упоминается в разделе «Приложение» этой статьи, двустороннее сопоставление с максимальной мощностью является приложением задачи о максимальном потоке.

Проблема обращения – спроса [ править ]

Есть несколько фабрик, которые производят товары, и несколько деревень, куда товары нужно доставить. Они связаны сетью дорог, каждая из которых имеет пропускную способность 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 ) .

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

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


Сегментация изображения [ править ]

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

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

,

Действительно, для пикселей в 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 уф , то общая стоимость ув е ув . Требуется найти поток заданного размера d с наименьшими затратами. В большинстве вариантов коэффициенты затрат могут быть как положительными, так и отрицательными. Для этой задачи существуют различные полиномиальные алгоритмы.

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


Ссылки [ править ]

  1. ^ a b c Schrijver, A. (2002). «Об истории перевозки и проблемах максимального расхода». Математическое программирование . 91 (3): 437–445. CiteSeerX  10.1.1.23.5134 . DOI : 10.1007 / s101070100259 . S2CID  10210675 .
  2. Gass, Saul I .; Асад, Арджанг А. (2005). «Математические, алгоритмические и профессиональные разработки исследования операций с 1951 по 1956 год». Аннотированный график исследования операций . Международная серия исследований операций и управления. 75 . С. 79–110. DOI : 10.1007 / 0-387-25837-X_5 . ISBN 978-1-4020-8116-3.
  3. ^ а б Харрис, TE ; Росс, Ф.С. (1955). «Основы метода оценки чистой пропускной способности железных дорог» (PDF) . Меморандум об исследовании .
  4. ^ a b Ford, LR ; Фулкерсон, Д.Р. (1956). «Максимальный поток через сеть». Канадский математический журнал . 8 : 399–404. DOI : 10,4153 / CJM-1956-045-5 .
  5. ^ a b Ford, LR, Jr .; Фулкерсон, Д. Р., Потоки в сетях , Издательство Принстонского университета (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. ^ Kelner, JA; Ли, Ю.Т .; Orecchia, L .; Сидфорд, А. (2014). «Алгоритм почти линейного времени для приближенного максимального потока в неориентированных графах и его многокомпонентные обобщения» (PDF) . Материалы двадцать пятого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . п. 217. arXiv : 1304.2338 . DOI : 10.1137 / 1.9781611973402.16 . ISBN  978-1-61197-338-9. S2CID  10733914 . Архивировано из оригинального (PDF) 03 марта 2016 года.
  8. Knight, Helen (7 января 2014 г.). «Новый алгоритм может значительно упростить решение проблемы« максимального потока »» . MIT News . Проверено 8 января 2014 года .
  9. ^ a b Орлин, Джеймс Б. (2013). «Макс течет за время O (нм) или лучше». Материалы 45-го ежегодного симпозиума ACM по теории вычислений - STOC '13 . STOC '13 Материалы сорок пятого ежегодного симпозиума ACM по теории вычислений . С. 765–774. CiteSeerX 10.1.1.259.5759 . DOI : 10.1145 / 2488608.2488705 . ISBN  9781450320290. S2CID  207205207 .
  10. ^ Мальхотра, ВМ; Кумар, М. Прамодх; Махешвари, С. Н. (1978). « Алгоритм поиска максимальных потоков в сетях» (PDF) . Письма об обработке информации . 7 (6): 277–278. DOI : 10.1016 / 0020-0190 (78) 90016-9 . O ( | V | 3 ) {\displaystyle O(|V|^{3})}
  11. ^ а б в Гольдберг, А. В .; Tarjan, RE (1988). «Новый подход к проблеме максимального расхода» . Журнал ACM . 35 (4): 921. DOI : 10.1145 / 48014.61051 . S2CID 52152408 . 
  12. ^ King, V .; Rao, S .; Тарьян, Р. (1994). «Более быстрый детерминированный алгоритм максимального потока». Журнал алгоритмов . 17 (3): 447–474. DOI : 10.1006 / jagm.1994.1044 . S2CID 15493 . 
  13. ^ Голдберг, А.В .; Рао, С. (1998). «За барьером разложения потока». Журнал ACM . 45 (5): 783. DOI : 10.1145 / 290179.290181 . S2CID 96030 . 
  14. ^ Итаи, А .; Perl, Y .; Шилоач Ю. (1982). «Сложность поиска максимальных непересекающихся путей с ограничениями длины». Сети . 12 (3): 277–286. DOI : 10.1002 / нетто.3230120306 . ISSN 1097-0037 . 
  15. ^ Шварц, BL (1966). «Возможные победители частично завершенных турниров». SIAM Обзор . 8 (3): 302–308. DOI : 10.1137 / 1008062 . JSTOR 2028206 . 
  16. ^ a b Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стейн (2001). «26. Максимальный расход». Введение в алгоритмы, второе издание . MIT Press и McGraw-Hill. С. 643–668. ISBN 978-0-262-03293-3.CS1 maint: multiple names: authors list (link)
  17. ^ Карл Кингсфорд. «Удлинители максимального расхода: циркуляции с потребностями» (PDF) .
  18. ^ «Проект imagesegmentationwithmaxflow, содержащий исходный код для создания этих иллюстраций» . GitLab . Архивировано из оригинала на 2019-12-22 . Проверено 22 декабря 2019 .
  19. ^ «Дизайн алгоритмов» . www.pearson.com . Проверено 21 декабря 2019 .
  20. ^ Шауэр, Иоахим; Пферши, Ульрих (2013-07-01). «Задача о максимальном потоке с дизъюнктивными ограничениями». Журнал комбинаторной оптимизации . 26 (1): 109–119. CiteSeerX 10.1.1.414.4496 . DOI : 10.1007 / s10878-011-9438-7 . ISSN 1382-6905 . S2CID 6598669 .   

Дальнейшее чтение [ править ]

  • Джозеф Чериян и Курт Мельхорн (1999). «Анализ правила выбора наивысшего уровня в алгоритме preflow-push max-flow». Письма об обработке информации . 69 (5): 239–242. CiteSeerX  10.1.1.42.8563 . DOI : 10.1016 / S0020-0190 (99) 00019-8 .
  • Дэниел Д. Слейтор и Роберт Э. Тарджан (1983). «Структура данных для динамических деревьев» (PDF) . Журнал компьютерных и системных наук . 26 (3): 362–391. DOI : 10.1016 / 0022-0000 (83) 90006-5 . ISSN  0022-0000 .
  • Юджин Лоулер (2001). «4. Сетевые потоки». Комбинаторная оптимизация: сети и матроиды . Дувр. С. 109–177. ISBN 978-0-486-41453-9.