Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Поток минимальной стоимости и труднорешаемые задачи. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
2.2. Задача о вершинном покрытии 61
2.1. Вершина x — светлая, т. е. x не инцидентна никако- му ребру из M. Но тогда вершина y — темная, так как M — наибольшее паросочетание, а иначе цепь p : x, y была бы M-чередующейся, что невозможно. Но тогда p это M -цепь, и, значит, y C, поскольку цепь оканчивается в y.
2.2. Вершина x — темная. Тогда существует темное ребро
= xy∗∈ M. Но, по предположению, x/∈ C, зна-
e
чит, y яся в y
q∪(y
C, т. е. существует M -цепь, оканчивающа-
. Обозначим эту цепь через q, но тогда цепь
,x)(x, y) является M-цепью, оканчивающейся в y. Значит, y C, что и требовалось доказать.
2.2.4. Построение наименьшего вершинного покрытия
Возьмем последнюю итерацию алгоритма Хопкрофта —
Карпа, т. е. тот случай, где G(M )=ипустьX
и Y∗все вер­шины из X и Y , помеченные в ходе поиска M -чередующейся цепи (напомним, что через G(M ) мы ранее обозначили граф, образованный всеми M-цепями длины не более, чем кратчай­шая M -чередующаяся цепь).
Утверждение. C =(X \ X
) Y∗.
В самом деле, пусть ребро e = xy произвольное тем- ное. Если вершина y помечена в ходе поиска, то по правилам помечивания в y заканчивается некоторая M -цепь, и, значит, y C. Если y не помечена в ходе поиска, то и x не помечена, так как вершины x помечаются после вершин типа y, им ин-
цидентных, т. е. x X \ X равенства C =(X \ X
, что и завершает доказательство
) Y∗.
62 Глава 2. Труднорешаемые задачи
2.3. Задача коммивояжера
Бесспорно, самой популярной задачей дискретной оптими­зации является задача коммивояжера. В литературе обычно ее формулируют так. Путешественнику нужно посетить несколько городов и вернуться в родной город. Как ему вы­брать маршрут, позволяющий сэкономить средства на переезд из одного города в другой? Иногда эту задачу формулируют для служащего и экономить нужно время на переезды. Мы сформулируем эту задачу математически.
Есть несколько различных формулировок. Мы будем при­держиваться такой.
Пусть G =(V, E,c) — неориентированный полный взвешен- ный граф.
Постановка задачи. В заданном полном, взвешенном неори­ентированном графе найти маршрут коммивояжера мини­мальной стоимости.
Цикл в графе G, включающий каждую вершину ровно по од­ному разу, называется маршрутом коммивояжера.
При этом стоимость маршрута коммивояжера равна сумме весов входящих в маршрут ребер. Не ограничивая общности, можно считать, что веса ребер неотрицательны, просто доба­вив достаточно большое число к весу каждого ребра, тогда ве­са всех маршрутов коммивояжера просто сдвинутся на одно и то же число.
Внимательный читатель, конечно, заметил, что маршрут коммивояжера — это определение гамильтонова цикла. Зада­чу коммивояжера можно сформулировать и так: «В заданном
полном, взвешенном неориентированном графе найти гамиль­тонов цикл минимального веса».
Все содержательные результаты относятся именно к неори­ентированным графам, поэтому мы ими и ограничимся, хотя задачу коммивояжера можно сформулировать и для ориенти­рованных графов.
2.3. Задача коммивояжера 63
В дальнейшем задачу коммивояжера будем обозначать ЗК, а маршрут коммивояжера — МК.
Задать полный взвешенный граф — все равно, что задать квадратную симметричную матрицу, по диагонали которой сто­ят плюс бесконечности (здоровенное число). МК — это просто выборка по одному элементу в каждой строке и каждом столб­це в такой матрице.
Тo еcть если в матрице выбран элемент, стоящий на пе­ресечении строки с номером v и столбца w, то считаем, что из вершины v мы идем в вершину w. Поскольку в МК из каж­дой вершины можно идти только в одну вершину, то в каждой строке выбирается только один элемент. Таким образом ЗК — это просто найти выборку с минимальной суммой.
Но и задача о назначениях в двудольном графе — это тоже поиск выборки с минимальной суммой в квадратной матрице. Почему задача назначения легкорешаема, а ЗК труднорешае­ма?
Не спасает тут и апелляция к тому, что рассматриваются симметричные матрицы: можно решать ЗК и в ориентирован­ном полном графе, тогда матрица весов не обязана быть сим­метричной. Плюс бесконечности по главной диагонали тоже не играют роли, всегда можно рассматривать матрицы, у ко­торых по диагонали стоят здоровенные числа.
Проблема здесь в том, что маршрут коммивояжера — это выборка, но не всякая выборка является маршрутом коммиво­яжера. Именно в этом и состоит отличие ЗК от задачи назначе­ния. Достаточно, например, рассмотреть полный граф на четы­рех вершинах, где из первой вершины идем во вторую, а из вто­рой — в первую; аналогично, из третьей — в четвертую, а из нее в третью. На матрице это выборка, но она не опре­деляет МК.
Вначале сформулируем и докажем теорему несуществова­ния. За время учебы вы уже привыкли к тому, что формули­руются и доказываются теоремы существования и, зачастую, единственности. А тут теорема несуществования.
64 Глава 2. Труднорешаемые задачи
Теорема 2.3. Если P = NP, то не существует полиноми- ального алгоритма, решающего ЗК с гарантированной оцен­кой точности k.
Предположим противное, что такой алгоритм существу­ет, обозначим его A. Пусть алгоритм A имеет точность k,т.е. для любого неориентированного полного взвешенного графа G справедливо неравенство
A(G)k ·Opt(G).
Покажем тогда, что этот алгоритм A решает задачу о га­мильтоновом цикле, что противоречит предположению P = NP, так как задача о гамильтоновом цикле NP-полна.
Напомним задачу о гамильтоновом цикле: «В заданном гра-
фе построить гамильтонов цикл или вывести сообщение, что его не существует».
Пусть Γ — произвольный граф. Зададим неориентирован­ный полный взвешенный граф G. Множество вершин графа G то же, что и в графе Γ. Граф полный, следовательно, ребра описывать не надо, веса ребер определим так:
c(v, w)=
1, если v, w Γ
kn, если v, w /Γ.
Пусть к графу G применен алгоритм A. Посмотрим на дли­ну маршрута, построенного A. Если длина маршрута A(G) стро­го больше, чем n, то в маршрут (G) попало хотя бы одно реб­ро, не входящее в граф неравенств
Opt(G)
так как k>1.
То есть в Γ нет гамильтонова цикла.
Но верно и обратное. Пусть в Γ нет гамильтонова цикла, тогда Opt(G) включает хотя бы одно ребро не из Γ, следова- тельно, и A(G) включает в себя хотя бы одно ребро не из Γ, поскольку A(G)Opt(G).
Γ. В самом деле, справедлива цепочка
A(G)
k
>
n
k
>n,
2.3. Задача коммивояжера 65
Значит, вес маршрута A(G) определяет, есть в Γ гамильто­нов цикл или нет, что завершает доказательство.
Итак, алгоритма с гарантированной оценкой точности в об­щем случае не существует.
2.3.1. Эвристический алгоритм.
Алгоритм «Ближайший сосед»
Изложим очень популярный алгоритм.
Algorithm 10: Алгоритм «Ближайший сосед»
1 Произвольную вершину считать первой и ее же
последней, добавленной в МК;
2 На каждом шаге идти в ближайшую к последней
добавленной (вес ребра называем расстоянием);
3 Как только все вершины в маршруте, идти в первую.
Алгоритм «Ближайший сосед» легко реализовать так, что-
2
бы он имел сложность O(n
). Соответствующие структуры дан-
ных, необходимых для этого, описаны в [1] в разделе, посвящен­ном алгоритму Ярника — Прима — Дейкстры. Впрочем, почти всё описано в следующем разделе.
Понятно, что в общем случае за счет последнего ребра можно получить хоть какую оценку. См. пример на рис. 2.4.
Здесь задан полный граф на четырех вершинах; ве­са ребер (1,2), (2,3) и (3,4) равны 1, а на ребрах (1,3)
Рис. 2.4. Работа алгоритма
«Ближайший сосед»
и (2,4) — 2; и, наконец, на реб­ре (1,4) вес равен K,гдеK — большое число.
66 Глава 2. Труднорешаемые задачи
Тогда «Ближайший сосед», с началом в вершине 1, последо­вательно включит в маршрут вершины 2, 3 и 4, а затем ничего не остается как по ребру (1,4) прийти в вершину 1. Вес такого маршрута будет K +3, где число K — сколь угодно большое.
Итак, алгоритма с гарантированной оценкой точности в об­щем случае не существует. Все содержательные результаты от­носятся к частному случаю графов.
Определение. Граф, матрица весов которого симметрична, неотрицательна и удовлетворяет неравенству треугольника, называется метрическим.
Однако и для метрических графов оценка точности неваж­ная.
Теорема 2.4. Пусть A — алгоритм «Ближайший сосед». То- гда для любого метрического графа G справедливо неравенство
A(G) ([log n]+1)·Opt(G).
Результат очень плохой, так как множитель, стоящий в этом неравенстве справа, перед Opt(G), стремится к бесконечно- сти. Ценится именно константа; чем она ближе к единице, тем лучше.
Однако это оценка сверху, и ничего не говорится о том, на­сколько плохим может быть решение. Оказывается, есть при­меры, когда ответ реально плох, а именно, справедливо нера­венство
1
(G)>
Хотя теоретически этот алгоритм бесконечно плох, но в ре­альных, практически важных случаях он весьма неплох, осо­бенно для метрических графов.
Теорему и пример приведем без доказательства.
· log n ·Opt(G).
3
2.3. Задача коммивояжера 67
2.3.2. Алгоритмы с гарантированной
оценкой точности
Можно получить оценку точности, лишь чуть подправив алгоритм «Ближайший сосед».
Пусть G =(V, E,c) — какой-либо взвешенный граф (не обя- зательно полный и не обязательно метрический), пусть F V и v V .
Введем следующие обозначения:
d(v, F)=min
c(v, w) — число, которое естественно на-
wF
звать расстоянием от вершины v до множества F; v(F ) — вершина, на которой достигается минимум рас- стояний до F среди всех вершин, не входящих в F ,т.е. d(v(F )) = min
d(v). Вершину v(F ) естественно называть
v/∈F
ближайшей к F.
В других разделах математики v(F ) называют элементом наилучшего приближения элементами F .
Пусть pv(F ) — проекция v на F,т.е.c(v, pv(F )) = d(v, F ). Впрочем, в школе называли этот элемент основанием перпен­дикуляра из v.
Алгоритм «Ближайшая вставка» отличается от алгорит­ма «Ближайший сосед» тем, что на каждом шаге добавля­ется не ближайшая к последней добавленной, а ближайшая ко всем входящим в строящийся МК. Естественно, придется выбирать, куда ее добавить. Добавляем в текущий маршрут между ее проекцией и следующей за ней вершиной. Естествен­но, придется как-то хранить текущий МК. Лучше всего счи­тать, что текущий МК представляет собой цикл, описываемый структурой СЛЕД. Детали алгоритма приведены ниже.
68 Глава 2. Труднорешаемые задачи
Algorithm 11: Алгоритм «Ближайшая вставка»
1 Произвольную вершину v V объявим текущим МК,
положив СЛЕД[v]=v;
2 T = v; 3 while не все вершины графа содержатся в T do 4 Среди всех вершин, не входящих в T , найти ту
вершину w, для которой величина d(w,T ) минимальнa;
5 Вставить w в T между проекцией w на T и
следующей за ней вершиной в текущем МК, т. е. положить СЛЕД[pw(T )] = w, СЛЕД[w]=pw(T )+;
6 (здесь через pw(T )+ обозначена вершина,
следующая за pw(T ) в текущем МК T );
7 end
Иллюстрирует сказанное рис. 2.5.
Рис. 2.5. Работа алгоритма «Ближайшая вставка»
Здесь стрелками изображены добавляемые ребра и неизме­няемые, а штриховой линией — ребро, которое удаляется из T .
Разберем пример работы алгоритмов «Ближайший сосед» и «Ближайшая вставка» (см. рис. 2.6).
Предположим, что оба алгоритма начинают с вершины 1.
2.3. Задача коммивояжера 69
Рис. 2.6. Пример работы алгоритмов
Ближайший сосед Ближайшая вставка 1 1—1 1—2 1—2—1 1—2—3 1—2—3—1 1—2—3—4
Дальнейшее в работе алгоритма «Ближайшая вставка» за­висит от того, что выбрано в качестве проекции вершины 4 на множество T , состоящее из вершин 1, 2 и 3.
1. Если p4(T )=1, то получается МК: 1—4—2—3—1, веса 29.
2. Если p4(T )=2, то получается МК: 1—2—4—3—1, веса 26.
3. Если p4(T )=3, то получается МК: 1—2—3—4—1, веса 25.
Теорема 2.5 (Розенталь, Штерн, Льюис, 1977). Пусть A алгоритм «Ближайшая вставка». Тогда для любого метри­ческого графа G справедливо неравенство
A(G) 2 ·Opt(G),
т. е. алгоритм дает оценку точности 2 в классе метрических графов.
(Доказательство Александра Ипатова) В маршруте ком- мивояжера A(G), построенном алгоритмом, удалим произволь-
ное ребро. Получим граф p
C, где через C обозначен вес минимального остова ис-
p
, являющийся деревом. Тогда
ходного графа G, следовательно pC (не забываем, что ЗК
70 Глава 2. Труднорешаемые задачи
мы рассматриваем в графах с неотрицательными весами). Бо­лее того, фактически мы доказали, что вес любого МК, в том числе и оптимального, не меньше чем C,гдеC — вес мини- мального остова.
Пронумеруем все вершины, попадающие в A(G), получим последовательность {v
,...,vn}. Стоимость МК A(G) равна
1,v2
сумме стоимостей добавлений и удалений ребер. Пусть s(v означает стоимость добавления вершины v
в маршрут A(G).
i
Тогда справедливы равенства
n
A(G) =
s(vi);
i=1
где
)=0
s(v
1
s(v
)=c(vi,pvi(T )) + c(vi,pvi(T )+) c(pvi(T ),pvi(T )+)
i
(1)
)
i
(здесь вершина v
играет роль вершины w, как она обозначена
i
в алгоритме).
По неравенству треугольника имеем
,pv
c(v
(F ))  c(vi,pvi(F )) + c(pvi(F ),pv
i
i
1
(F )) (2)
i
1
Подставим неравенство (2) в (1), получим
s(v
)=2· c(vi,pvi(F )).
i
Заметим теперь, что вершины v
являются вершинами рас-
i
тущего дерева в алгоритме Ярника — Прима — Дейкстры, а реб-
,pvi(F )) является ребром минимального остова. Значит,
ро (v
i
A(G) 2C.
Отсюда,
A(G)
Opt(G)
Opt(G)
2C
2.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]