Jump to content

Алгоритм Динича

(Перенаправлено с Блокировка потока )

Алгоритм Диница или алгоритм Диница — это сильно полиномиальный алгоритм вычисления максимального потока в потоковой сети , задуманный в 1970 году израильским (ранее советским) учёным-компьютерщиком Ефимом Диницем . [1] Алгоритм работает в время и похож на алгоритм Эдмондса-Карпа , который работает в время, поскольку он использует кратчайшие дополняющие пути. Введение понятий графа уровней и потока блокировки позволяет алгоритму Динича достичь своей производительности.

Диниц изобрел алгоритм в январе 1969 года, будучи студентом магистратуры в Георгия Адельсона-Вельского группе . Несколько десятилетий спустя он вспоминал: [2]

На уроке «Алгоритмы» Адельсона-Вельского лектор имел привычку давать студентам задачу для обсуждения на следующем заседании в качестве упражнения. DA был изобретен в ответ на такое упражнение. В то время автору не были известны основные факты, касающиеся [ алгоритма Форда-Фалкерсона ]….

Незнание иногда имеет свои преимущества. Вполне вероятно, что DA не был бы изобретен тогда, если бы автору была известна идея возможного обесцвечивания насыщенных краев.

В 1970 году Диниц опубликовал описание алгоритма в «Докладах Академии наук СССР» . В 1974 году Шимон Эвен и (его тогдашний аспирант) Алон Итай из Техниона в Хайфе были очень любопытны и заинтригованы алгоритмом Диница, а также Александра В. Карзанова связанной с ним идеей о блокировании потока. Однако им было трудно расшифровать эти две статьи, каждая из которых была ограничена четырьмя страницами в соответствии с ограничениями журнала « Доклады Академии наук СССР» . Эвен не сдался и после трех дней усилий сумел понять обе статьи, за исключением вопроса обслуживания многоуровневой сети. В течение следующих нескольких лет Эвен читал лекции по «Алгоритму Динича», неправильно произнося имя автора при его популяризации. Эвен и Итай также внесли свой вклад в этот алгоритм, объединив BFS и DFS , как сейчас обычно представляют алгоритм. [2]

В течение примерно 10 лет после изобретения алгоритма Форда-Фалкерсона было неизвестно, можно ли заставить его завершаться за полиномиальное время в общем случае иррациональных граничных мощностей. Это привело к отсутствию какого-либо известного алгоритма с полиномиальным временем для решения проблемы максимального потока в общих случаях. Алгоритм Диница и алгоритм Эдмондса-Карпа (опубликованный в 1972 году) независимо друг от друга показали, что в алгоритме Форда-Фалкерсона, если каждый увеличивающий путь является кратчайшим, то длина увеличивающих путей не уменьшается, и алгоритм всегда завершается.

Определение

[ редактировать ]

Позволять быть сетью с и мощность и поток кромки , соответственно.

Остаточная емкость представляет собой отображение определяется как,
  1. если ,
  2. если ,
  3. в противном случае.
представляет Остаточный граф собой невзвешенный граф , где
.
Дополняющий путь это путь в остаточном графе .
Определять быть длиной кратчайшего пути из к в . Тогда уровня график это график , где
.
Блокирующий поток это поток такой, что график с не содержит путь. [Примечание 1] [3]

Алгоритм

[ редактировать ]

Алгоритм Динича

Вход : сеть. .
Выход : Ан поток максимального значения.
  1. Набор для каждого .
  2. Построить от из . Если , остановка и вывод .
  3. Найдите блокирующий поток в .
  4. Добавить поток дополнения к и вернитесь к шагу 2.

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

  • график уровней можно построить поиском в ширину время
  • блокирующий поток в графе уровней можно найти в время [Примечание 2]

с общим временем работы для каждого слоя. Как следствие, время работы алгоритма Динича равно . [2]

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

Особые случаи

[ редактировать ]

В сетях с единичной пропускной способностью сохраняется гораздо более строгая временная привязка. Каждый блокирующий поток можно найти в время, и можно показать, что число фаз не превышает и . [Примечание 3] Таким образом, алгоритм работает в время. [4]

В сетях, возникающих в результате задачи двустороннего сопоставления , количество фаз ограничено , что приводит к привязано ко времени. Полученный алгоритм также известен как алгоритм Хопкрофта-Карпа . В более общем смысле, эта оценка справедлива для любой единичной сети — сети, в которой каждая вершина, за исключением источника и приемника, имеет либо одно входное ребро с емкостью один, либо одно выходное ребро с емкостью один, а все остальные мощности являются произвольными целыми числами. . [3]

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

1.

Блокирующий поток состоит из

  1. с 4 единицами расхода,
  2. с 6 единицами расхода, и
  3. с 4 единицами расхода.

Следовательно, поток блокировки составляет 14 единиц, а значение потока равно 14. Обратите внимание, что каждый увеличивающий путь в блокирующем потоке имеет 3 ребра.

2.

Блокирующий поток состоит из

  1. с 5 единицами расхода.

Следовательно, поток блокировки составляет 5 единиц, а значение потока равно 14 + 5 = 19. Обратите внимание, что каждый увеличивающий путь имеет 4 ребра.

3.

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

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Это означает, что подграф, полученный в результате удаления всех насыщенных ребер (ребер с ) не содержит пути из к . Другими словами, блокирующий поток таков, что каждый возможный путь от к содержит насыщенный край.
  2. ^ Нахождение потока блокировки можно реализовать в за каждый путь посредством последовательности операций наступления и отступления. см . на странице http://courses.csail.mit.edu/6.854/06/scribe/scribe11.pdf . Дополнительную информацию
  3. ^ граница предполагает, что никакие два ребра не соединяют одну и ту же пару вершин в одном направлении, в то время как Bound не делает такого предположения.
  1. ^ Э. А. Динич (1970). «Алгоритм решения задачи максимального потока в сети с оценкой мощности» (PDF) . Доклады Академии наук СССР . 11 : 1277–1280.
  2. ^ Jump up to: а б с Диниц, Ефим (2006). «Алгоритм Диница: оригинальная версия и версия Эвена» . В Одеде Гольдрейхе ; Арнольд Л. Розенберг ; Алан Л. Селман (ред.). Теоретическая информатика: Очерки памяти Шимона Эвена . Спрингер. стр. 218–240. ISBN  978-3-540-32880-3 .
  3. ^ Jump up to: а б Тарьян 1983 , стр. 102.
  4. ^ Даже Шимон; Тарьян, Р. Эндре (1975). «Сетевой поток и тестирование связности графов». SIAM Journal по вычислительной технике . 4 (4): 507–518. дои : 10.1137/0204043 . ISSN   0097-5397 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: be8703053927317b018a7ce7f16ce3e4__1703378160
URL1:https://arc.ask3.ru/arc/aa/be/e4/be8703053927317b018a7ce7f16ce3e4.html
Заголовок, (Title) документа по адресу, URL1:
Dinic's algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)