Поток минимальной стоимости — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Источники информации)
(Источники информации)
Строка 45: Строка 45:
  
 
== Источники информации ==
 
== Источники информации ==
*[http://ru.wikipedia.org/wiki/Поток_минимальной_стоимости Википедия {{{---}}} Поток минимальной стоимости]
+
*[http://ru.wikipedia.org/wiki/Поток_минимальной_стоимости Википедия {{---}} Поток минимальной стоимости]
 
*[http://rain.ifmo.ru/cat/view.php/vis/graph-flow-match/min-cost-max-flow-2009 Визуализатор алгоритма нахождения максимального потока минимальной стоимости]
 
*[http://rain.ifmo.ru/cat/view.php/vis/graph-flow-match/min-cost-max-flow-2009 Визуализатор алгоритма нахождения максимального потока минимальной стоимости]
*[http://habrahabr.ru/blogs/algorithm/61884/ Хабрахабр {{{---}}} Максимальный поток минимальной стоимости]
+
*[http://habrahabr.ru/blogs/algorithm/61884/ Хабрахабр {{---}} Максимальный поток минимальной стоимости]
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. {{{---}}} М.:Издательский дом "Вильямс", 2010. {{{---}}} 1296 с.: ил. {{{---}}} Парал. тит. англ. {{{---}}} ISBN 978-5-8459-0857-5 (рус.)
+
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. {{---}} М.:Издательский дом "Вильямс", 2010. {{---}} 1296 с.: ил. {{---}} Парал. тит. англ. {{---}} ISBN 978-5-8459-0857-5 (рус.)
  
  
 
[[Категория:Алгоритмы и структуры данных]]
 
[[Категория:Алгоритмы и структуры данных]]
 
[[Категория: Задача о потоке минимальной стоимости]]
 
[[Категория: Задача о потоке минимальной стоимости]]

Версия 14:58, 24 января 2016

Задача о потоке минимальной стоимости

Определение:
Пусть дана сеть [math]G(V,E)[/math]. [math]S, T \in V[/math] — источник и сток. [math]\forall (u,v) \in E[/math] [math]\exists c(u, v), f(u,v)[/math] — стоимость пересылки единицы потока и пропускная способность. Тогда общая стоимость потока из [math]S[/math] в [math]T[/math]:
[math]p(u,v) = \sum\limits_{u,v \in V, f(u,v)\gt 0} c(u,v) \cdot f(u,v)[/math]

Свойства стоимости

  • Поток не может превысить пропускную способность.
[math]f(u,v) \leqslant c(u,v)[/math]
  • Поток из [math]u[/math] в [math]v[/math] должен быть противоположным потоку из [math]v[/math] в [math]u[/math].
[math]f(u, v)=-f(v, u)[/math]
  • Сохранение потока. Для каждой вершины, сумма входящего и исходящего потоков равно [math]0[/math].
[math] \sum\limits_{w \in V} f(u,w) = 0[/math]


Задача:
Дана сеть [math]G(V,E)[/math]. [math]S, T \in V[/math] — источник и сток. [math]\forall (u,v) \in E[/math] [math]\exists c(u, v), f(u,v)[/math] — стоимость пересылки единицы потока и пропускная способность. Требуется найти максимальный поток, суммарная стоимость которого минимальна.


Алгоритмы решения

Метод устранения отрицательных циклов в остаточной сети

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

Алгоритм

  • Начало.
  • Шаг 1. Требуется найти максимальный поток минимальной стоимости.
  • Шаг 2. Для каждого ребра зададим поток равный [math]0[/math].
  • Шаг 3. Построим остаточную сеть [math]G_f[/math].
  • Шаг 4. При помощи алгоритма Форда-Беллмана найдем отрицательные циклы в остаточной сети. Если нет - перейдем к шагу 7.
  • Шаг 5. Выберем один из отрицательных циклов.
  • Шаг 6. Избавимся от отрицательного цикла, для этого пустим по нему максимально возможный поток. Перейдем к шагу 5.
  • Шаг 7. Отрицательных циклов восточной сети нет, значит, максимальный поток минимальной стоимости найден.
  • Конец.

Ассимптотика

Алгоритм Форда-Беллмана работает за [math]O(VE)[/math]. Нахождение максимального потока и улучшение цикла работает за [math]O(E)[/math]. В итоге имеем [math]O(V E^2)[/math].

Метод дополнения потока вдоль путей минимальной стоимости

Использование потенциалов Джонсона

См. также

Источники информации