Использование потенциалов Джонсона при поиске потока минимальной стоимости
Мотивация
При поиске потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости нам требуется находить минимальный по стоимости поток из истока в сток. Поскольку стоимость некоторых рёбер может быть отрицательной, нам приходится использовать алгоритм Форда-Беллмана для поиска кратчайшего пути. Однако гораздо эффективней было бы применить алгоритм Дейкстры. Для этого нам надо перевзвесить рёбра графа.
Определение: |
Пусть дана транспортная сеть | . Введем в каждой вершине потенциал . Тогда остаточная стоимость ребра определяется как
Заметим что сумма остаточных стоимостей ребер вдоль любого пути отличается от суммы стоимостей вдоль того же самого пути на разность между потенциалом первой и последней вершины.
Использование потенциалов Джонсона
Возьмём значения потенциалов в вершинах равными минимальному по цене расстоянию от стока до них, или алгоритма Форда-Беллмана. Таким образом, нам его придётся запустить всего один раз, а не на каждом шаге алгоритма.
если она недостижима. Так как это длина какого-то пути до вершины , а - длина минимального пути, то , что от нас и требовалось. Значения потенциалов найдём с помощьюАсимптотика
Обозначим время работы поиска кратчайшего пути Поиске потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости работает за . Если использовать алгоритм Дейкстры с Фиббоначевыми кучами, то . В результате получим время работы .
.