Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Поток минимальной стоимости и труднорешаемые задачи. Учебно-методическое пособие
.pdf
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) — число, которое естественно на-
w∈F
звать расстоянием от вершины 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, следовательно p C (не забываем, что ЗК

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.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
