- •Глава 4. Деревья
- •§ 1. Определение дерева
- •§ 2. Задача полного перебора всех деревьев данного порядка. Код Прюфера. Теорема Кэли.
- •§ 3. Задача о построении остова минимального веса
- •3.1. Алгоритм Краскала
- •3.2. Алгоритм Прима.
- •§ 4. Метрические характеристики дерева.
- •§ 5. Задача о построении остова наименьшего диаметра.
- •Глава 5. Потоки в сетях
- •§ 1. Потоки и разрезы
- •§ 2. Задача о максимальном потоке
- •§ 3. Поток минимальной стоимости.
- •Глава 6. Применение сетевых методов к решению задач линейного программирования транспортного типа
- •§ 1. Эквивалентность экстремальных задач
- •§ 2. Классическая транспортная задача
- •§ 3. Операции над т-сетями
- •§ 4. Оптимальное планирование вагонопотоков с учетом возврата порожних вагонов
- •Литература
- •Оглавление
§ 3. Поток минимальной стоимости.
В этом параграфе
мы будем рассматривать Т-сети,
для которых
для любой дуги
.
В дальнейшем положим
и будем называть
пропускной способностью дуги
,
опуская слово «верхняя». В рассматриваемом
случае множество допустимых потоков
не пусто, поскольку нулевой поток
является допустимым. Следовательно, по
теореме Форда – Фалкерсона существует
максимальный поток в Т-сети,
причем его величина равна минимальной
из величин разрезов, отделяющих источник
от стока. Эту величину будем называть
пропускной
способностью Т-сети
и обозначать
,
где
.
Если
,
то подмножество дуг
называется носителем
потока
.
Предположим, что
наряду с пропускной способностью для
каждой дуги
задана величина
,
выражающая стоимость
транспортировки единичного потока по
этой дуге. Такие Т-сети
будем обозначать
.
Стоимостью потока называется величина
.
(5.9)
Пусть дано целое
число
,
удовлетворяющее неравенствам
.
Множество
,
т. е. множество допустимых потоков
величины
,
не пусто. В этом параграфе мы рассмотрим
задачу
,
(5.10)
называемую задачей построения потока заданной величины , имеющего минимальную стоимость.
Пусть
– некоторый путь от источника к стоку,
– множество его дуг. Поток, определяемый
соотношениями
(5.11)
называется единичным
потоком с носителем
,
или кратко
единичным
-потоком.
Так как, по
предположению,
для любой дуги
,
поток
является допустимым для любого пути
.
Любой поток величины может быть представлен в виде суммы слагаемых, каждое из которых является единичным -потоком:
.
(5.12)
Разложение (5.12) неоднозначно, однако суммарная стоимость потоков в правой его части одна и та же для различных разложений, так как она равна стоимости потока :
(5.13)
Пример такой
неоднозначности разложения на единичные
потоки показан на рис. 5.6. Поток
величины 2 имеет представления
,
где
,
,
,
.
Рис. 5.6. Неоднозначность разложения на единичные потоки.
Соотношения (5.12)
и (5.13) подсказывают следующую идею
решения задачи (5.10). Поскольку требуется
найти поток
,
для которого найдется разложение (5.12)
с минимальным значением правой части
равенства (5.13), разумно действовать
следующим образом. На первом шаге следует
найти наиболее дешевый путь
от источника к стоку и вычислить его
пропускную способность
.
Если окажется, что
,
то очевидно, что поток
является решением задачи. В противном
случае положим
и найдем наиболее дешевый путь
,
состоящий из ненасыщенных
дуг.
Если оказалось,
что
,
то кандидатом на решение задачи (5.10)
может служить поток
.
В противном случае поток
определим равенством
,
и т. д. Будем повторять эту процедуру
насыщения наиболее дешевых путей до
тех пор, пока не получим поток величины
.
Однако такая процедура требует существенной корректировки, поскольку для увеличения имеющегося потока мы фактически используем процедуру , в результате чего после применения описанных итераций насыщения наиболее дешевых путей мы каждый раз получаем полный поток в сети, образованной рассмотренными путями, который может не быть максимальным. Поэтому необходимо на каждой итерации учесть так же возможность увеличения потока в подсети, образованной уже рассмотренными путями. Оказывается, можно «одним выстрелом убить двух зайцев», если каждый раз искать наиболее дешевые пути не в исходной сети, а в некоторой ее модификации, отражающей структуру уже имеющегося потока.
Предположим, что
имеются допустимый поток
и маршрут
,
соединяющий источник и сток, в котором
прямые дуги ненасыщенны, а потоки на
обратных дугах положительны. Применив
процедуру
увеличения потока, т. е. добавив величину
к значениям потока на прямых дугах и
вычтя
из значений потока на обратных дугах,
мы увеличим поток в сети на
,
т. е. получим поток
величины
.
При этом для стоимости потока
имеем равенство
.
(5.14)
Каждой дуге
поставим в соответствие добавочную
«фиктивную» дугу
и определим величину
равенством
,
а
– равенством
.
Расширив таким образом исходную Т-сеть,
можно теперь каждому маршруту
в исходной Т-сети
поставить в соответствие путь
в расширенной сети по следующему правилу.
Множество дуг пути
есть
,
где
,
и для дуг
выполняются соотношения (рис. 5.7)
(5.15)
На рис. 5.7 приведен
пример применения описанной процедуры,
т. е. показано соответствие между
маршрутами в исходной Т-сети
и путями в расширенной сети. Маршруту
в исходной сети соответствует путь
в расширенной сети. Первое число на дуге
– ее остаточная пропускная способность,
второе – стоимость транспортировки
единичного потока по дуге. Сумма первых
чисел на прямой и обратной дугах равна
исходной пропускной способности дуги.
Вес пути
,
равный
,
совпадает со значением выражения в
квадратных скобках (5.14) для маршрута
.
Рис. 5.7. Соответствие между маршрутами в исходной Т-сети и
путями в расширенной сети.
Если в выражении
(5.14) положить
,
то можно видеть, что приращение стоимости
будет наименьшим из возможных в том и
только том случае, когда
является кратчайшим (самым дешевым)
путем от источника к стоку в расширенной
сети. Очевидно, что путь
не должен содержать насыщенных дуг, а
также то, что пропускные способности
прямых дуг в расширенной сети следует
положить равными остаточным
пропускным способностям, поскольку
речь идет об алгоритме последовательного
насыщения путей в исходной Т-сети,
основанного на соотношениях (5.13).
Уточним понятие модифицированной сети.
Определение 5.3.
Сеть
называется модификацией
Т-сети
относительно
потока
,
если:
1)
,
где
;
2)
3)
Замечание 5.6.
Если поток
ненулевой, то модифицированная сеть
не являетя Т-сетью,
поскольку нарушены пункты 1) и 2) определения
Т-сети.
Однако фактически сеть
используется только для корректного
поиска оптимального разложения (5.12).
Значения возникающих в процессе алгоритма
потоков на фиктивных дугах всегда равны
нулю, т. е. потоки всегда текут в исходной
Т-сети.
Алгоритм решения
задачи (5.10), основанный на поочередном
использовании алгоритма поиска
кратчайшего пути в модифицированной
сети, увеличения потока вдоль маршрута,
соответствующего найденному пути, и
построения новой модификации сети,
называется алгоритмом Басакера – Гоуэна
по именам авторов, впервые его предложивших
[19]. Обоснование корректности этого
алгоритма является нетривиальной
задачей, поскольку даже если в выражении
(5.14)
– поток минимальной стоимости величины
,
а
– маршрут, для которого выражение в
квадратных скобках минимально, то отсюда
еще не следует, что
будет потоком минимальной стоимости
величины
.
Дело в том, что множество маршрутов,
удовлетворяющих условиям применимости
процедуры
,
т. е. множество, по которому ищется
минимум выражения в квадратных скобках
соотношения (5.14), зависит от имеющегося
потока. Доказательство корректности
алгоритма Басакера – Гоуэна можно найти
в работе [6]. Отметим, что замечательной
особенностью этого алгоритма является
тот факт, что на каждой итерации он
строит поток наименьшей стоимости,
выполняя их до тех пор, пока либо не
будет построен поток требуемой величины
,
либо будет сделан вывод, что задача не
имеет решения, т. е. что
.
Пример 5.2.
Построить
поток величины
в Т-сети,
изображенной на рис. 5.8, который имеет
минимальную стоимость. (Первое число
на дуге – ее пропускная способность,
второе – стоимость транспортировки
единичного потока по дуге).
Рис. 5.8. Т-сеть
к примеру задачи о потоке
минимальной стоимости.
Для решения задачи применим алгоритм Басакера – Гоуэна.
1-я итерация.
Находим кратчайший путь в сети
.
Это путь
.
Стоимость транспортировки единичного
потока по этому пути равна
,
а его пропускная способность равна
Поскольку
,
полагаем
и модифицируем сеть (рис. 5.9).
Рис. 5.9. Сеть после первой модификации.
2-я итерация.
Находим кратчайший путь от источника
к стоку в сети
по рис. 5.9:
.
Стоимость транспортировки единичного
потока по этому пути равна
,
а пропускная способность составляет
Так как
,
полагаем
и модифицируем сеть (рис. 5.10).
Рис. 5.10 . Сеть после второй модификации.
3-я итерация.
Находим кратчайший путь от источника
к стоку в сети
по рис. 5.10:
.
Стоимость транспортировки единичного
потока по этому пути равна
,
а его пропускная способность равна
.
Поскольку
,
полагаем
и модифицируем сеть (рис. 5.11).
Рис.
5.11.
Сеть
после третьей модификации.
4-я итерация.
Находим кратчайший путь от источника
к стоку в сети
по рис. 5.11:
.
Стоимость транспортировки единичного
потока по этому пути равна
,
а его пропускная способность составляет
.
Так как
,
оставшиеся пять единиц мы «переправляем»
вдоль пути
,
что фактически означает увеличение в
исходной Т-сети
потока на пять единиц применением к
маршруту
процедуры
.
Следовательно, на дугах
поток
увеличивается на 5 единиц, а на дуге
уменьшается. Модификация сети
относительно итогового потока
показана на рис. 5.12.
Рис. 5.12. Сеть после итоговой модификации.
По рис. 5.12 легко
строится итоговый поток
.
Он показан на рис. 5.13.
Рис. 5.13. Поток минимальной стоимости величины 25 для Т-сети на рис. 5.8.
Для потока
можно написать следующее представление
в виде суммы
-потоков:
.
Стоимость потока
равна
у.е.
При реализации
алгоритма Басакера – Гоуэна на компьютере
для поиска кратчайшего пути в
модифицированной сети можно воспользоваться
любым из описанных в главе 2 алгоритмов
поиска кратчайших путей в сети с
произвольными весами. Если использовать,
например, алгоритм Форда – Беллмана,
то время его работы допускает оценку
при
.
В этом случае для времени работы алгоритма
Басакера – Гоуэна имеем оценку
.
Наряду с алгоритмом Басакера – Гоуэна для решения задачи построения потока минимальной стоимости широкой популярностью пользуется также алгоритм Клейна [20]. В этом алгоритме задача решается в два этапа: на первом этапе строится начальный поток требуемой величины, а на втором осуществляется процедура уменьшения стоимости имеющегося потока, также использующая модификацию исходной Т-сети относительно имеющегося потока.
