Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мат. мет. исл. оп Погорелов / Лекции по мат. мет. ИО.doc
Скачиваний:
67
Добавлен:
26.03.2015
Размер:
3.62 Mб
Скачать

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 рекурсивно, используя приведенную в предыдущем параграфе теорему.

  1. Находим самые дешевые дуги (u, v), соединяющие U и (разрывая связи случайным образом).

  2. Добавляем узел 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. Симметричная матрица называется положительной полуопределенной, еслидля всех, и положительно определенной, если для всех ненулевых .

Мы можем заменить положительную полуопределеннную матрицу положительной полуопределенной матрицейХ более общего вида, задав ограничение . Рассмотрим следующую задачу:

минимизировать при условии и

,

где – диагональный элемент матрицыХ. Ограничение следует из:. Эта частный случай задачиполуопределенного программирования.