- •6.1. Продолжительность симплекс-алгоритма
- •6.2. Размер экземпляра задачи лп
- •6.3. Задача эквивалентной допустимости
- •6.4. Начальные сведения о методе эллипсоида
- •6.5. Описание метода эллипсоида на интуитивном уровне
- •7.1. Алгоритм Хачияна
- •7.2. Обоснование метода эллипсоида
- •8.1. Терминология теории графов
- •8.2. Задача потока минимальной стоимости
- •8.3. Метод остовного дерева
- •8.4. Условия оптимальности
- •8.5. Стержневое правило для изменения базиса
- •8.6. Поиск начального допустимого решения
- •8.7. Целочисленность оптимальных решений
- •9.1. Транспортная задача
- •9.2. Табличная форма
- •9.3. Задача назначений
- •9.4. Лп-ослабления
- •9.5. Задача о максимальном потоке
- •10.1. Теорема максимального потока – минимального разреза
- •10.2. Управление проектом
- •10.3. Задача кратчайшего пути
- •10.4. Уравнение Беллмана
- •11.1. Алгоритм Беллмана-Форда
- •11.2. Алгоритм Дейкстры
- •11.3. Преформулировка с неотрицательным
- •11.4. Задача минимального остовного дерева (мод)
- •11.5. Жадный алгоритм Прима для задачи мод
- •12.1. Задача максимального разреза
- •12.2. Задача полуопределенного программирования
- •12.3. Игра «Симметричное рандеву»
- •12.4. Методы внутренней точки для лп и поп
- •13.1. Основы метода
- •13.2. Задача о ранце
- •13.3. Метод Дакина
- •14.1. Виды алгоритмов
- •14.2. Точные методы
- •14.3. Полиномиальная формулировка зк
- •14.4. Решение с помощью метода ветвей и границ
- •14.5. Приближенный алгоритм для задачи коммивояжера
- •15.1. Эвристики задачи коммивояжера
- •15.2. Метод ближайшего соседа
- •15.3. Метод ближайшего соседа для зк
- •15.4. Имитация отжига
- •15.5. Генетические алгоритмы
8.4. Условия оптимальности
Рассмотрим Лагранжиан задачи потока минимальной стоимости:

Минимизируя
L(f
;
λ)
для
,
мы получаем двойственную допустимость
и дополнительные условия оптимальности:

где
– приведенные стоимости. Заметим, что
если
Т
– остовное дерево, то мы можем получить
однозначное решение этих уравнений:
,
для
всех
,
где n = |N|.
8.5. Стержневое правило для изменения базиса
Вычисляем
приведенные стоимости
для каждой дуги
.
Полагаем при этом
для всех дуг
.
Если
для всех
и
для всех
,
то текущее базисное допустимое решение
является оптимальным. В противном случае
отмечаем дуги (i,
j),
где имеются нарушения. Каждая из этих
дуг вместе с деревом Т
образует цикл. Добавляем (или вычитаем)
поток насколько это возможно, увеличивая
(или уменьшая)
.
Нужно обратить внимание на то, что
,
где суммы берутся по всем дугам цикла.
Таким образом, если
– отрицательная величина, мы можем
уменьшить суммарную стоимость за счет
увеличения потока
.
Аналогично, если
– положительная величина, мы можем
снизить затраты за счет уменьшения
.
Пример 8.1. Рассмотрим следующую задачу потока минимальной стоимости (рис. 8.2).

Рис. 8.2. Два варианта остовных деревьев
На
каждой дуге заданы значения: (
,
,
).
В этой задаче:
,
и
.
Остовное дерево можно построить разными
способами. Вначале составим остовное
дерево из дуг (1, 2) и (2, 3), как показано на
левом рисунке (эти дуги обозначены
сплошными линиями). Теперь произвольно
устанавливаем
и находим
(так как:
).
Аналогично получаем:
(так как
).
На дуге (1, 3), которая не принадлежит к
остовному дереву, значение приведенной
стоимости равно:
.
Поскольку оно меньше нуля, мы можем
снизить затраты за счет увеличения
.
Однако мы не можем принять максимальное
значение
=
3, поскольку в этом случае поток
будет равен 3, а узел 2 потребляет 4 единицы
потока.
Поскольку
первое остовное дерево не привело нас
к оптимальному решению, строим новое
остовное дерево на основе дуг (1, 3), (1, 2)
(правый рисунок). Пересчитываем величины
множителей Лагранжа:
,
и
(так как теперь
).
Приведенное значение стоимости дуги,
не входящей в остовное дерево:
.
Так как оно больше нуля, мы должны
минимизировать поток на дуге (2, 3). И это
вполне возможно:
.
Теперь мы получили оптимальное решение.
8.6. Поиск начального допустимого решения
Каждая задача о потоке в сети может быть сведена к такой же с ровно одним источником и одним приемником (путем добавления к сети двух новых узлов).
Каждая задача о потоке в сети может быть сведена к задаче без источников и приемников (путем подключения двух новых узлов и новой дуги). В этом случае ограничения примут вид: Af = 0. Некоторый вектор f, удовлетворяющий этим ограничениям, называется циркуляцией, и потоковые задачи подобного типа называются циркуляционными задачами.
В случае, если
для всех i,
j,
нулевой поток является допустимым
решением задачи. Если
для некоторых дуг (i,
j),
мы можем заменить потоки
на разности
и затем отрегулировать величины
соответственно.
8.7. Целочисленность оптимальных решений
Предположим,
что входные данные (
,
и
)
– представляют собой целые числа. Тогда
описанный выше алгоритм приводит к
оптимальным решениям в целых числах,
поскольку в нем нет операций умножения
или деления.
Теорема 8.2. (Теорема целочисленности). Для каждой задачи о потоке в сети с целочисленными данными, каждое базисное допустимое решение и, в частности, каждое базисное оптимальное решение обеспечивают целочисленный поток по каждой дуге.
Эта теорема имеет важное значение для многих практических задач, для которых целочисленное решение является обязательным (например, для задачи распределения средств). Позже мы исследуем задачи линейного программирования, в которых дополнительным условием является требование целочисленности решения. Такие задачи, как правило, гораздо труднее решать, чем задачи без подобных ограничений. Тем не менее, для задач о потоке в сети мы получаем целочисленные решения даром.
Лекция 9. ТРАНСПОРТНАЯ ЗАДАЧА И ЗАДАЧА НАЗНАЧЕНИЯ
