Поток минимальной стоимости — различия между версиями
(→Алгоритм) |
Vitalik (обсуждение | вклад) (→Алгоритм: Большие странности в изложении алгоритма!!) |
||
Строка 25: | Строка 25: | ||
* '''Шаг 2'''. Для каждого ребра зададим поток равный <tex>0</tex>. | * '''Шаг 2'''. Для каждого ребра зададим поток равный <tex>0</tex>. | ||
* '''Шаг 3'''. Построим остаточную сеть <tex>G_f</tex>. | * '''Шаг 3'''. Построим остаточную сеть <tex>G_f</tex>. | ||
− | * '''Шаг 4'''. При помощи [[Алгоритм Форда-Беллмана| алгоритма Форда-Беллмана]] найдем отрицательные циклы в остаточной сети. Если нет {{---}} перейдем к '''шагу 7'''. | + | * '''Шаг 4'''. При помощи [[Алгоритм Форда-Беллмана| алгоритма Форда-Беллмана]] найдем отрицательные циклы в остаточной сети <span style="color: red">(но разве можно найти все циклы сразу?)</span>. Если нет {{---}} перейдем к '''шагу 7'''. |
* '''Шаг 5'''. Выберем один из отрицательных циклов. | * '''Шаг 5'''. Выберем один из отрицательных циклов. | ||
− | * '''Шаг 6'''. Избавимся от отрицательного цикла, для этого пустим по нему максимально возможный поток. Перейдем к '''шагу 5'''. | + | * '''Шаг 6'''. Избавимся от отрицательного цикла, для этого пустим по нему максимально возможный поток. Перейдем к '''шагу 5''' <span style="color: red">(но ведь остаточная сеть изменилась и могли появиться новые циклы, которые надо ещё найти)</span>. |
* '''Шаг 7'''. Отрицательных циклов в остаточной сети нет, значит, максимальный поток минимальной стоимости найден. | * '''Шаг 7'''. Отрицательных циклов в остаточной сети нет, значит, максимальный поток минимальной стоимости найден. | ||
* '''Конец.''' | * '''Конец.''' |
Версия 04:02, 8 апреля 2017
Содержание
Задача о потоке минимальной стоимости
Определение: |
Пусть дана сеть | . — источник и сток. — стоимость пересылки единицы потока и пропускная способность. Тогда общая стоимость потока из в :
Свойства стоимости
- Поток не может превысить пропускную способность.
- Поток из в должен быть противоположным потоку из в .
- Сохранение потока. Для каждой вершины, сумма входящего и исходящего потоков равно .
Задача: |
Дана сеть | . — источник и сток. — стоимость пересылки единицы потока и пропускная способность. Требуется найти максимальный поток, суммарная стоимость которого минимальна.
Алгоритмы решения
Метод устранения отрицательных циклов в остаточной сети
Воспользуемся леммой об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети. Получим следующий алгоритм:
Алгоритм
- Начало.
- Шаг 1. Требуется найти максимальный поток минимальной стоимости.
- Шаг 2. Для каждого ребра зададим поток равный .
- Шаг 3. Построим остаточную сеть .
- Шаг 4. При помощи алгоритма Форда-Беллмана найдем отрицательные циклы в остаточной сети (но разве можно найти все циклы сразу?). Если нет — перейдем к шагу 7.
- Шаг 5. Выберем один из отрицательных циклов.
- Шаг 6. Избавимся от отрицательного цикла, для этого пустим по нему максимально возможный поток. Перейдем к шагу 5 (но ведь остаточная сеть изменилась и могли появиться новые циклы, которые надо ещё найти).
- Шаг 7. Отрицательных циклов в остаточной сети нет, значит, максимальный поток минимальной стоимости найден.
- Конец.
Асимптотика
Алгоритм Форда-Беллмана работает за
. Нахождение максимального потока и улучшение цикла работает за . В итоге имеем .Метод дополнения потока вдоль путей минимальной стоимости
Использование потенциалов Джонсона
См. также
- Сведение задачи о назначениях к задаче о потоке минимальной стоимости
- Венгерский алгоритм решения задачи о назначениях
Источники информации
- Википедия — Поток минимальной стоимости
- Визуализатор алгоритма нахождения максимального потока минимальной стоимости
- Хабрахабр — Максимальный поток минимальной стоимости
- Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд Алгоритмы: построение и анализ, 2-е издание. Пер. с англ. — М.:Издательский дом "Вильямс", 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)