- Алгоритм Диница
-
Алгоритм Диница — полиномиальный алгоритм для нахождения максимального потока в транспортной сети, предложенный в 1970 году израильским (бывшим русским) учёным Ефимом Диницем. Временная сложность алгоритма составляет
. Получить такую оценку позволяет введение понятий вспомогательной сети и блокирующего (псевдомаксимального) потока. В сетях с единичными пропускными способностями существует более сильная оценка временной сложности:
.
Содержание
Описание
Пусть
— транспортная сеть, в которой
и
— соответственно пропускная способность и поток через ребро
.
- Остаточная пропускная способность — отображение
определённое как:
- Если
,
иначе.
- Если
- Остаточная сеть — граф
, где
.
- Дополняющий путь —
путь в остаточном графе
.
- Пусть
— длина кратчайшего пути из
в
в графе
. Тогда вспомогательная сеть графа
— граф
, где
.
- Блокирующий поток —
поток
такой, что граф
с
не содержит
пути.
Алгоритм
Алгоритм Диница
- Вход: Сеть
.
- Выход:
поток
максимальной величины.
- Установить
для каждого
.
- Создать
из
графа
. Если
, остановиться и вывести
.
- Найти блокирующий поток
в
.
- Дополнить поток
потоком
и перейти к шагу 2.
Анализ
Можно показать, что каждый раз количество рёбер в блокирующем потоке увеличивается хотя бы на одно, поэтому в алгоритме не более
блокирующих потоков, где
— количество вершин в сети. Вспомогательная сеть
может быть построена обходом в ширину за время
, а блокирующий поток на каждом уровне графа может быть найден за время
. Поэтому время работы алгоритма Диница есть
.
Используя структуры данных, называемые динамические деревья, можно находить блокирующий поток на каждой фазе за время
, тогда время работы алгоритма Диница может быть улучшено до
.
Пример
Ниже приведена симуляция алгоритма Диница. Во вспомогательной сети
вершины с красными метками — значения
. Блокирующий поток помечен синим.
История
Алгоритм Диница был опубликован в 1970 г. бывшим русским учёным Ефимом Диницем, который сейчас является членом факультета вычислительной техники университета Бен-Гурион (Израиль), ранее, чем алгоритм Эдмондса — Карпа, который был опубликован в 1972, но создан ранее. Они независимо показали, что в алгоритме Форда — Фалкерсона в случае, если дополняющий путь является кратчайшим, длина дополняющего пути не уменьшается.
Литература
- Yefim Dinitz Dinitz' Algorithm: The Original Version and Even's Version // Theoretical Computer Science: Essays in Memory of Shimon Even / Oded Goldreich, Arnold L. Rosenberg, and Alan L. Selman. — Springer, 2006. — P. 218–240. — ISBN 978-3540328803
- B. H. Korte, Jens Vygen 8.4 Blocking Flows and Fujishige's Algorithm // Combinatorial Optimization: Theory and Algorithms (Algorithms and Combinatorics, 21). — Springer Berlin Heidelberg, 2008. — P. 174–176. — ISBN 978-3-540-71844-4
Ссылки
Категория:- Алгоритмы на графах
- Остаточная пропускная способность — отображение
Wikimedia Foundation. 2010.