Рефераты. Эйлеровы и гамильтоновы графы p> §4. Некоторые родственные задачи

Сразу же укажем ряд вопросов, связанных с тем, имеется ли в неориентированном графе эйлеров цикл. Например,
Каково наименьшее число цепей или циклов необходимое для того, чтобы каждое ребро графа G содержалось точно в одной цепи или в одном цикле? Очевидно, что если G имеет эйлеров цикл или эйлерову цепь, то ответом будет число один.
Ребрам графа G приписаны положительные веса. Требуется найти цикл, проходящий через каждое ребро графа G по крайней мере один раз и такой, что для него общий вес (а именно сумма величин njc(aj), где число nj показывает, сколько раз проходилось ребро aj, а c(aj) — вес ребра) минимален. Очевидно, что если G содержит эйлеров цикл, то любой такой цикл будет оптимальным, так как каждое ребро проходится по один раз и вес этого цикла равен тогда
Сформулированная выше задача 2) называется задачей китайского почтальона, и ее решение имеет много потенциальных приложений, как например:
Сбор мусора. Рассмотрим проблему сбора домашнего мусора. Допустим, что определенный район города обслуживается единственной машиной. Ребра графа G представляют дороги, а вершины — пересечения дорог. Величина c(aj) — вес ребра — будет соответствовать длине дороги. Тогда проблема сбора мусора в данном районе сводится к нахождению цикла в графе G, проходящего по каждому ребру G по крайней мере один раз. Требуется найти цикл с наименьшим километражем.
Доставка молока или почты. Еще две задачи, когда требуется определить маршрут, проходящий хотя бы один раз по каждой из улиц, возникают при доставке молока или почты. Здесь задача состоит в нахождении маршрута, минимизирующего общий километраж (или время, стоимость и т.д.).
Проверка электрических, телефонных или железнодорожных линий. Проблема инспектирования распределенных систем (лишь некоторые из которых названы выше) связана с непременным требованием проверки всех «компонент». Поэтому она также является проблемой типа 2) или близка к ней.

§5. Задача китайского почтальона

Рассмотрим неориентированный граф G(X,A). Среди вершин из X некоторые вершины (скажем из множества X+) будут иметь четные степени, а остальные
(из множества X-=XX+) — нечетные степени. Сумма степеней di всех вершин xi[pic]X равна удвоенному числу ребер в A (т.к. каждое ребро добавляет по единице к степеням двух его концевых вершин) и поэтому равна четному числу
2m. Следовательно, и так как первая сумма четна, то вторая сумма также четна. Но все di в последней сумме нечетны, значит число |X-| вершин нечетной степени четно.

Пусть M — множество таких цепей (скажем ?ij) в G между концевыми вершинами xi и xj [pic] X-, что никакие две цепи не имеют одинаковых конечных вершин, т.е. цепи соединяют различные пары вершин из X- и покрывают все вершины множества X-. Число цепей ?ij в M равно 1/2|X-| и всегда цело, если конечно оно определено. Предположим теперь, что все ребра, образующие цепь ?ij, теперь удвоены (добавлены искусственные ребра).
Так поступаем с каждой цепью ?ij[pic]M и полученный граф обозначим через G-
(M). Так как некоторые ребра из G могут входить более чем в одну цепь ?ij, то некоторые ребра из G-(M) могут быть (после того как добавлены все
«новые» цепи ?ij) утроены, учетверены и т.д.

Теорема 3. Для любого цикла, проходящего по G, можно выбрать множество
M, для которого граф G-(M) имеет эйлеров цикл, соответствующий первоначально взятому циклу в графе G. Это соответствие таково, что если цикл проходит по ребру (xi, xj) из G l раз, то в G-(M) существует l ребер
(одно реальное и l-1 искусственных) между xi и xj, каждое из которых проходится ровно один раз эйлеровым циклом из G-(M). Справедливо и обратное утверждение.

Доказательство.

Если цикл проходит по графу G, то по крайней мере одно ребро, инцидентное каждой вершине xi нечетной степени, должно проходиться дважды.
(Ребро, проходимое дважды, можно рассматривать как два параллельных ребра — одно реальное и одно искусственное — и каждое из них проходится один раз).
Пусть это ребро (xi, xk). В случае нечетности степени dk вершины xk графа G добавление искусственного ребра прежде всего сделает dk четным, и значит только ребро (xi,xk) нужно будет проходить дважды, если ограничиться рассмотрением лишь вершин xi и xk. В случае когда dk четно, добавление искусственного ребра сделает dk нечетным, а второе ребро выходящее из xk должно быть пройдено дважды (т.е. добавляется еще одно искусственное ребро). Такая ситуация сохраняется до тех пор, пока не встретится вершина нечетной степени, о чем говорилось выше. Следовательно, чтобы удовлетворить условию возвращения в вершину xi, нужно дважды пройти всю цепь из xi в некоторую другую вершину нечетной степени xr [pic] X-. Это автоматически приводит к выполнению условия прохождения вершины xr. Аналогично обстоит дело для всех других вершин xi [pic] X-. Это значит что все множество M цепей из G, определенное выше, должно проходится дважды, и так как отсюда вытекает, что каждое ребро из G-(M) должно проходиться один раз, то теорема доказана.

Алгоритм решения задачи китайского почтальона немедленно следует из доказанной теоремы, так как все, что для этого необходимо, состоит в нахождении множества цепей M* (цепного паросочетания для множества вершин нечетной степени), дающего наименьший дополнительный вес. Цикл наименьшего веса, проходящий по G, будет иметь вес, равный сумме весов всех ребер из G плюс сумма весов ребер в цепях из M*. Это то же самое, что и сумма весов всех ребер — реальных и искусственных — графа G-(M*).

Описание алгоритма решения задачи китайского почтальона:

Пусть [cij] — матрица весов ребер G. Используя алгоритм нахождения кратчайшей цепи, образуем |X-|*|X-| — матрицу D=[dij], где dij — вес цепи наименьшего веса, идущей из некоторой вершины xi[pic]X- в другую вершину xj[pic]X-.
Найдем то цепное паросочетание M* для множества X-, которое дает наименьший вес (в соответствии с матрицей весов D). Это можно сделать эффективно с помощью алгоритма минимального паросочетания.
Если вершина x? сочетается с другой вершиной x?, то определим цепь ??? наименьшего веса (из x? в x?), соответствующую весу d??, делая шаг 1.
Добавим искусственные ребра в G, соответствующие ребрам из ???, и проделаем это для всех других цепей из множества M*, в результате чего получится граф
G-(M*).
Сумма весов всех ребер графа G-(M*), найденная с использованием матрицы
[cij] (вес искусственного ребра берется равным весу параллельного ему реального ребра), равна минимальному весу цикла, проходящего по G. При этом число прохождений цикла по ребру (xi,xj) равно общему числу параллельных ребер между xi и xj в G-(M*).

Покажем, что указанный выше алгоритм строит минимальный цикл. Для этого следует заметить, что поскольку на шаге 2 мы используем минимальное паросочетание, никакие две кратчайшие цепи ?ij и ?pq при таком паросочетании (скажем, идущие из xi в xj и из xp в xq) не могут иметь общего ребра. Если бы они имели общее ребро (xa, xb), то сочетание вершин xi и xq (использующее подцепи от xi к xb и от xb к xq) и сочетание пары вершин xp и xj (использующее подцепи от xp к xa и от xa к xj) давало бы общее паросочетание веса 2cab, меньшего чем вес первоначального паросочетания, что противоречит предположению о минимальности исходного паросочетания. Следовательно, граф G-(M*)не должен содержать более двух параллельных ребер между любыми двумя вершинами, т.е. оптимальный цикл не проходит ни по какому ребру графа G более чем два раза.

Глава 2. Гамильтоновы циклы

Название «гамильтонов цикл» произошло от задачи «Кругосветное путешествие» предложенной ирландским математиком Вильямом Гамильтоном в
1859 году. Нужно было, выйдя из исходной вершины графа, обойти все его вершины и вернуться в исходную точку. Граф представлял собой укладку додекаэдра, каждой из 20 вершин графа было приписано название крупного города мира.

§1. Основные понятия и определения

Если граф имеет простой цикл, содержащий все вершины графа по одному разу, то такой цикл называется гамильтоновым циклом, а граф называется гамильтоновым графом. Граф, который содержит простой путь, проходящий через каждую его вершину, называется полугамильтоновым. Это определение можно распространить на ориентированные графы, если путь считать ориентированным.

Гамильтонов цикл не обязательно содержит все ребра графа. Ясно, что гамильтоновым может быть только связный граф и, что всякий гамильтонов граф является полугамильтоновым. Заметим, что гамильтонов цикл существует далеко не в каждом графе.

Замечание.

Любой граф G можно превратить в гамильтонов граф, добавив достаточное количество вершин. Для этого, например, достаточно к вершинам v1,…,vp графа
G добавить вершины u1,…,up и множество ребер {(vi,ui)}[pic]{(ui,vi+1)}.

Степенью вершины v называется число ребер d(v), инцидентных ей, при этом петля учитывается дважды. В случае ориентированного графа различают степень do(v) по выходящим дугам и di(v) — по входящим.

§2. Условия существования гамильтонова цикла

В отличии от эйлеровых графов, где имеется критерий для графа быть эйлеровым, для гамильтоновых графов такого критерия нет. Более того, задача проверки существования гамильтонова цикла оказывается NP-полной.
Большинство известных фактов имеет вид: «если граф G имеет достаточное количество ребер, то граф является гамильтоновым». Приведем несколько таких теорем.

Теорема Дирака. Если в графе G(V,E) c n вершинами (n ? 3) выполняется условие d(v) ? n/2 для любого v[pic]V, то граф G является гамильтоновым.

Доказательство.

От противного. Пусть G — не гамильтонов. Добавим к G минимальное количество новых вершин u1, … ,un, соединяя их со всеми вершинами G так, чтобы G’:= G + u1 + … + un был гамильтоновым.

Пусть v, u1, w, … ,v — гамильтонов цикл в графе G’, причем v[pic]G, u1[pic]G’, u1[pic]G. Такая пара вершин v и u1 в гамильтоновом цикле обязательно найдется, иначе граф G был бы гамильтоновым. Тогда w[pic]G, w
[pic] {u1,…,un}, иначе вершина u1 была бы не нужна. Более того, вершина v несмежна с вершиной w, иначе вершина u1 была бы не нужна.

Далее, если в цикле v,u1,w, … ,u’,w’, … ,v есть вершина w’, смежная с вершиной w, то вершина v’ несмежна с вершиной v, так как иначе можно было бы построить гамильтонов цикл v,v’, … ,w,w’, … ,v без вершины u1, взяв последовательность вершин w, … ,v’ в обратном порядке. Отсюда следует, что число вершин графа G’, не смежных с v, не менее числа вершин, смежных с w.
Но для любой вершины w графа G d(w) ? p/2+n по построению, в том числе d(v)
? p/2+n. Общее число вершин (смежных и не смежных с v) составляет n+p-1.
Таким образом, имеем: n+p-1 = d(v)+d(V) ? d(w)+d(v) ? p/2+n+p/2+n = 2n+p.

Следовательно, 0 ? n+1, что противоречит тому, что n > 0.

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.