Задача о потоке с минимальной стоимостью
Задача потока с минимальной стоимостью ( MCFP ) — это задача оптимизации и решения, позволяющая найти самый дешевый способ отправки определенного количества потока через потоковую сеть . Типичное применение этой проблемы включает в себя поиск наилучшего маршрута доставки от завода до склада, где дорожная сеть имеет определенную пропускную способность и затраты. Задача о потоке с минимальной стоимостью является одной из наиболее фундаментальных среди всех задач о потоках и циркуляции, поскольку большинство других подобных задач можно представить как задачу о потоке с минимальной стоимостью, а также то, что ее можно эффективно решить с использованием сетевого симплексного алгоритма .
Определение
[ редактировать ]Сеть потоков представляет собой ориентированный граф. с исходной вершиной и вершина стока , где каждое ребро имеет емкость , поток и стоимость , при этом большинство алгоритмов потока с минимальной стоимостью поддерживают ребра с отрицательными затратами. Стоимость отправки этого потока по ребру является . Проблема требует большого потока для отправки из источника тонуть .
Определение задачи состоит в том, чтобы минимизировать общую стоимость потока по всем ребрам:
с ограничениями
Ограничения мощности : Косая симметрия : Сохранение потока : Требуемый поток :
Связь с другими проблемами
[ редактировать ]Вариант этой задачи состоит в том, чтобы найти поток, который является максимальным, но имеет наименьшую стоимость среди решений с максимальным потоком. Эту задачу можно назвать задачей максимального потока с минимальной стоимостью, и она полезна для поиска совпадений с минимальной стоимостью и максимальным потоком .
При использовании некоторых решений найти минимальную стоимость максимального расхода проще простого. Если нет, то максимальный поток можно найти, выполнив двоичный поиск по .
Связанной с этим проблемой является задача циркуляции минимальных затрат , которую можно использовать для решения потока минимальных затрат. Задача циркуляции минимальных издержек не имеет источника и стока; вместо этого он имеет стоимость, а также нижнюю и верхнюю границы на каждом ребре и ищет объемы потока в пределах заданных границ, которые уравновешивают поток в каждой вершине и минимизируют сумму по ребрам стоимости, умноженной на поток. Любой экземпляр потока с минимальной стоимостью можно преобразовать в экземпляр циркуляции с минимальной стоимостью, установив нижнюю границу всех ребер на ноль, а затем создав дополнительное ребро из стока. к источнику , с емкостью и нижняя граница , заставляя общий поток из к также быть .
Следующие проблемы являются частными случаями задачи о минимальном потоке затрат (мы по очереди приводим краткие описания каждого применимого сокращения): [1]
- Задача о кратчайшем пути (один источник). Требовать, чтобы реальное решение проблемы потока с минимальной стоимостью отправляло одну единицу потока из назначенного источника. в назначенную раковину . Дайте всем ребрам бесконечную емкость.
- Проблема максимального потока . Выберите большой спрос (достаточно большой, чтобы превысить максимальный поток; например, сумма мощностей из исходной вершины) Установите стоимость всех ребер в экземпляре максимального потока равным нулю и введите новое ребро от источника до приемника со стоимостью единицы и емкостью. .
- Проблема с назначением . Предположим, что каждая часть множества в двуразделе имеет вершины и обозначаем биделение через . Дайте каждому поставлять и дать каждому требовать . Каждое ребро должно иметь единичную емкость.
Решения
[ редактировать ]Задача о минимальном потоке затрат может быть решена с помощью линейного программирования , поскольку мы оптимизируем линейную функцию, а все ограничения линейны.
Кроме того, существует множество комбинаторных алгоритмов. [1] Некоторые из них являются обобщениями алгоритмов максимального потока , другие используют совершенно другие подходы.
Известные фундаментальные алгоритмы (имеют множество вариаций):
- Отмена цикла : общий основной метод. [2]
- Отмена резки : общий двойной метод. [3] [4]
- Отмена минимального среднего цикла : простой сильно полиномиальный алгоритм. [5]
- Последовательный кратчайший путь и масштабирование мощности : двойственные методы, которые можно рассматривать как обобщение алгоритма Форда – Фулкерсона . [6]
- Масштабирование стоимости : примитивно-двойственный подход, который можно рассматривать как обобщение алгоритма push-relabel . [7]
- Сетевой симплексный алгоритм : специализированная версия линейного программирования симплексного метода . [8]
- Нестандартный алгоритм Фулкерсона доктора
Приложение
[ редактировать ]Двустороннее сопоставление минимального веса
[ редактировать ]Учитывая двудольный граф G = ( A ∪ B , E ) , цель состоит в том, чтобы найти паросочетание максимальной мощности в G , которое имеет минимальную стоимость. Пусть w : E → R — весовая функция на ребрах E . Задача двудольного сопоставления минимального веса или задача назначения состоит в том, чтобы найти идеальное паросочетание M ⊆ E , общий вес которого минимизирован. Идея состоит в том, чтобы свести эту проблему к проблеме сетевого потока.
Пусть G′ = ( V′ знак равно А ∪ B , E′ знак равно E ) . Присвойте пропускную способность всем ребрам в E ' равную 1. Добавьте исходную вершину s , соедините ее со всеми вершинами в A ' и добавьте сток. вершину t и соедините все вершины внутри группы B′ с этой вершиной. Емкость всех новых ребер равна 1, а их стоимость равна 0. Доказано, что в G существует поток с минимальной стоимостью существует идеальное двудольное паросочетание минимального веса тогда и только тогда, когда в G' . [1]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с Равиндра К. Ахуджа ; Томас Л. Маньянти и Джеймс Б. Орлин (1993). Сетевые потоки: теория, алгоритмы и приложения . Прентис-Холл, Inc. ISBN 978-0-13-617549-0 .
- ^ Мортон Кляйн (1967). «Основной метод минимальных потоков затрат с применением к задачам назначения и транспортировки». Наука управления . 14 (3): 205–220. CiteSeerX 10.1.1.228.7696 . дои : 10.1287/mnsc.14.3.205 .
- ^ Рафаэль Хассин (1983). «Проблема потока минимальной стоимости: объединяющий подход к существующим алгоритмам и новый алгоритм поиска по дереву». Математическое программирование . 25 : 228–239. дои : 10.1007/bf02591772 .
- ^ Томас Р. Эрволина и С. Томас МакКормик (1993). «Два сильно полиномиальных алгоритма отмены сокращений для сетевого потока с минимальной стоимостью» . Дискретная прикладная математика . 4 : 133–165. дои : 10.1016/0166-218x(93)90025-j .
- ^ Эндрю В. Голдберг и Роберт Э. Тарьян (1989). «Нахождение минимальных тиражей путем отмены отрицательных циклов». Журнал АКМ . 36 (4): 873–886. дои : 10.1145/76359.76368 .
- ^ Джек Эдмондс и Ричард М. Карп (1972). «Теоретические улучшения алгоритмической эффективности решения задач сетевых потоков» . Журнал АКМ . 19 (2): 248–264. дои : 10.1145/321694.321699 .
- ^ Голдберг, Эндрю В. и Тарьян, Роберт Э. (1990). «Нахождение минимальных стоимостных тиражей методом последовательного приближения». Математика исследования операций . 15 (3): 430–466. дои : 10.1287/moor.15.3.430 .
- ^ Джеймс Б. Орлин (1997). «Симплекс-алгоритм простой сети с полиномиальным временем для потоков с минимальной стоимостью». Математическое программирование . 78 (2): 109–129. дои : 10.1007/bf02614365 . hdl : 1721.1/2584 .