- •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. Генетические алгоритмы
11.4. Задача минимального остовного дерева (мод)
Задана
сеть (N,
A),
со стоимостью
дуги (i,
j)
∈
A,
нужно найти остовное дерево минимальной
стоимости. Эта задача возникает, например,
когда мы хотим сконструировать
коммуникационную сеть, связывающую
множество городов, с минимальными
затратами.
Теорема
11.1.
Пусть U
будет
некоторым собственным подмножеством
множества узлов N.
Если (u,
v)
представляет собой дугу наименьшей
стоимости, так что
и
,
то существует остовное дерево минимальной
стоимости, которое включает в себя дугу
(u,
v).
Доказательство.
Используем доказательство от противного.
Предположим, что не существует минимального
остовного дерева, которое включает в
себя дугу (u,
v).
Пусть T
будет некоторым остовным деревом
минимальной стоимости. Добавление (u,
v)
к T
должно образовать цикл, поскольку T
является остовным деревом. Таким образом,
должна быть другая дуга (u′,
v′)
в T,
такая что
и
.
Если это не так, то не должно быть пути
для цикла, позволяющего проследовать
от узлаu
к узлу v
без прохождения дуги (u,
v)
по второму разу.
Удаление
дуги (u′,
v′)
разрушает цикл и дает остовное дерево
,
стоимость которого не больше стоимости
дереваT,
так как по условию
.
Таким образом, существование дерева
противоречит
нашему предположению, что не существует
минимального остовного дерева, включающего
в себя (u,
v).
11.5. Жадный алгоритм Прима для задачи мод
Пометим узлы N = {1, 2, . . . , n} и множество U = {1}. Построим U рекурсивно, используя приведенную в предыдущем параграфе теорему.
Находим самые дешевые дуги (u, v), соединяющие U и
(разрывая связи случайным образом).Добавляем узел v к множеству U и повторяем до тех пор, пока не будет U = N.
Алгоритм
Прима занимает
шагов. Предположим, что каждый раз, когда
мы начинаем шаг 1, мы уже знаем кратчайшее
расстояние между U
и каждым
,
скажем
.
Затем, делаем не более чемn
сравнений, чтобы найти дугу самой низкой
стоимости между U
и
(путем сравнения всех
для
).
Найдя узелv
и
добавляя его к U,
мы можем найти кратчайшее расстояние
между U′
= U + {v}
и некоторым
,
скажем
.
Таким образом, каждый шаг алгоритма
требует не болееn
сравнений, и алгоритм имеет n
– 1
шагов.
Пример 11.2. Рассмотрим граф на рис. 11.2. В этом примере жадный алгоритм Прима добавляет дуги в последовательности: {1, 3}, {3, 6}, {6, 4}, {3, 2}, {2, 5}.

Рис. 11.2. Граф задачи из примера
Лекция 12. ПОЛУОПРЕДЕЛЕННОЕ ПРОГРАММИРОВАНИЕ
12.1. Задача максимального разреза
В
задаче максимального разреза задан
граф G=(V,
E)
и нужно разделить
вершин на два множества так, чтобы
максимизировать число ребер, которые
соединяют одно множество с другим.
Формально это можно представить так:
максимизировать
,
при
условии
для
каждого
.
Задача максимального разреза допускает и другую формулировку:
минимизировать
,
где
элемент
матрицыС
равен единице или нулю в зависимости
от того, существует ли ребро (i,
j)
в графе G,
или нет. Заметим, что
(произведение
равно следу матрицы
).
Определение
12.1.
След
матрицы – это сумма элементов главной
диагонали матрицы, то есть если
– это элементы матрицы A, то её след
.
Пример 12.1. Для графа, изображенного на рис. 11.2:
.
Разделим
вершины этого графа на два множества
{1, 4, 6} и {2, 3, 5}. В этом случае
.
;
;


.
Определение
12.2.
Симметричная
матрица
называется положительной полуопределенной,
если
для всех
,
и положительно определенной, если
для
всех ненулевых
.
Мы
можем заменить положительную
полуопределеннную матрицу
положительной полуопределенной матрицейХ
более общего вида, задав ограничение
.
Рассмотрим следующую задачу:
минимизировать
при
условии
и
,
где
– диагональный элемент матрицыХ.
Ограничение
следует из:
.
Эта частный случай задачиполуопределенного
программирования.
