Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii-DM-Logika-Grafy.pdf
Скачиваний:
93
Добавлен:
30.05.2015
Размер:
1.71 Mб
Скачать

240

 

 

Глава 7.

Связность графов

 

 

 

 

 

 

Пример 7.13.

 

 

 

 

 

 

2

u2

3

 

 

u

u

 

u1

u9

u10

u3

1 u

u11

 

u

u5

u 4

u12

u

u8

u7

u

u4

 

u6

 

6

 

5

 

Все вершины имеют четные валентности. Разметка ребер может быть, например, такой:

u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12

1

2

3

3

3

4

4

4

2

2

1

1

Тогда эйлеров цикл (при вершине 1) имеет вид:

1 u1 2 u2 3 u3 4 u4 5 u6 6 u8 7 u7 5 u5 3 u10 7 u9 2 u11 6 u12 1. J

7.5.4 Эйлеровы пути

Введем следующие обозначения: v+(x) = s+(x) + s±(x);

v¡(x) = s¡(x) + s±(x):

v+(x) и v¡(x) – полувалентности вершины x.

Определение. Путь в орграфе G, содержащий все его дуги, называется эйлеровым путем.

Теорема 7.7 Эйлеров путь из вершины s в вершину t существует тогда и только тогда, когда

1) x 2 X n fs; tg [v+(x) = v¡(x)]:

2) s =6 t : v+(s) ¡ v¡(s) = 1; v¡(t) ¡ v+(t) = 1:

7.5. Обходы графа

241

 

 

 

Доказательство полностью аналогично предыдущему.

Для решения задачи нахождения эйлерова цикла вручную (например, для решения головоломок) можно использовать следующий алгоритм.

7.5.4.1Алгоритм Флери

( все валентности – четные).

Маршрут начинается с любой вершины. Пройденное ребро удаляется. Не проходить по ребру, если его удаление приводит к увеличению числа компонент связности (не считая изолированных вершин).

Некоторые обобщения задачи нахождения эйлеровой цепи.

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

Очевидно, если граф эйлеров, то эйлеров цикл и будет оптимальным.

2. Разбиение графа на эйлеровы суграфы. Если связный граф имеет 2k вершин с нечетной валентностью, то минимальное число покрывающих его реберно непересекающихся цепей равно k.

7.5.5Гамильтоновы цепи и циклы

Определение. Гамильтоновой цепью (циклом) графа называется простая цепь (простой цикл), содержащая (содержащий) все вершины графа.

Пока неизвестен какой-либо достаточно простой критерий необходимости и достаточности существования гамильтоновой цепи (цикла) для произвольного графа G. Неизвестен также алгоритм нахождения гамильтоновой цепи (цикла) полиномиальной сложности.

Известен лишь ряд необходимых условий существования гамильтоновой цепи (цикла), из которых мы рассмотрим лишь два (без доказательства).

242

Глава 7. Связность графов

 

 

 

 

Теорема

7.8 (Оре) Пусть в связном обыкновенном графе G =

(X; U) имеется наибольшая простая цепь

Q = x0 u1 : : : x1 ul xl,

такая, что l ¸ 2 и s(x0) + s(xl) ¸ l + 1. Тогда в G существует гамильтонов цикл.

Теорема 7.9 Если для двух несмежных различных вершин x и y связного обыкновенного графа G с n ¸ 3

s(x) + s(y) ¸ n(G),

то G имеет гамильтонов цикл. Если

s(x) + s(y) ¸ n(G) ¡ 1,

то существует гамильтонова цепь.

Следствие.Если G – связный обыкновенный граф с n(G) ¸ 3, такой, что для всех его вершин x

s(x) ¸ n(2G), то в G существует гамильтонов цикл.

Самый очевидный алгоритм нахождения гамильтоновой цепи состоит в генерировании n! перестановок различных последовательностей вершин, и в проверке каждой из них на наличие простой цепи. Такой алгоритм требует по меньшей мере n!n шагов и его сложность имеет порядок n!n ¼ O(nn).

Продемонстрируем на примере методы поиска в ширину и в глубину для нахождения гамильтоновых цепей (циклов) на орграфе.

7.5.5.1Алгоритм поиска гамильтоновой цепи (цикла) в ширину

Пример 7.14. Алгоритм поиска в ширину заключается в последовательном нахождении цепей длины 2; 3; : : : ; n и проверке на каждом шаге найденной цепи на допустимость (отсутствие цикла длины меньшей чем n).

Пусть граф G задан как бинарное отношение с помощью массива пар вершин. Цепи длины 2 , 3,... будем находить как степени отношений R2; R3; : : : .

G = (X; R); X = fa; b; c; d; eg;

7.5. Обходы графа

 

243

R = fab; ad; bd; be; cb; ce; dc; ea; ecg;

cbd; cbe; cea, dcb; dce; eab; ead; ecbg

R2 = fabd; abe; adc, bdc; bea; bec,

;

 

 

 

 

Циклы cec и ece длины 2 вычеркнуты, т.к. их длина меньше n = 5.

a

s6

- b

 

 

¡¢¡¢s6

 

 

 

¡ ¢

 

 

 

¡

¢

 

 

 

¡

¢®¢

 

e s

¡¡ R sQdQ

 

¡ª

Qs

 

)

 

 

1 sc

 

R3 = fabdc; abea; abec; adcb, bdcb; bdce; beab, bead; becb, bece; cbdc; cbea; cbec; ceab; cead; dcbd, dcbe; dcea, dcec; eabd; eabe, eadc; ecbd, ecbeg. Подчеркнутые маршруты не включаются в дальнейшее рассмотрение, т.к. они содержат циклы длины меньшей, чем n.

R4 = fabdcd; abdce; abecb; abece, adcbd; adcbe; adcea, adcec, bdcea, beadc; cbeab, cbead, ceabe, dcbea, dcbec, dceab, dcead, eabdc, eadcb, eadce, ecbdcg.

Неподчеркнутые цепи в R4 представляют собой гамильтоновы цепи длины 4.

Для нахождения гамильтоновых циклов найдем еще одну степень отношения:

R5 = fabdcea; adcbea; adcbec; bdceab; bdcead; beadcb, beadce; cbeadc; ceabdc; dcbeab, dcbead, dceabd, dceabe, eadcbd, eadcbeg.

Неподчеркнутые циклы в R5 представляют собой гамильтоновы циклы. Некоторые из них представляют собой просто циклический сдвиг других циклов. В результате получим только два различных гамильтоновых цикла, например при вершине a : fabdcea; adcbeag. J

7.5.5.2Алгоритм поиска гамильтоновой цепи (цикла) в глубину

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

244

Глава 7. Связность графов

 

 

цепи (пути) длины 1 или простые циклы длины n, т.е. исключать в процессе поиска циклы длины меньше, чем n.

Дерево поиска для графа из предыдущего примера имеет сле-

дующий вид:

Вставить картинку

Вычеркнутые ребра в дереве поиска соответствуют циклам длины менее, чем n.

Найденные гамильтоновы циклы: fabdcea; adcbeag.

7.5.5.3Связь между эйлеровыми и гамильтоновыми циклами

Построим реберный граф L (linegraph) данного графа G следующим образом:

²Множество вершин графа L соответствует множеству ребер графа G.

²Вершины графа L смежны, если смежны соответствующие ребра в графе G.

Верны следующие утверждения:

1.Если G имеет эйлеров цикл, то его реберный граф L имеет как эйлеров, так и гамильтонов цикл.

2.Если G имеет гамильтонов цикл, то его реберный граф L также имеет гамильтонов цикл.

Утверждения, обратные к 1 , 2 – неверны. Таким образом эти утверждения мало что дают для практики.

Задача нахождения гамильтоновой цепи (цикла) имеет обобщение на взвешенные графы.

Задача коммивояжера (travelling seller problem, TSP) формулируется следующим образом: во взвешенном графе (обычно – полном) найти гамильтонову цепь (цикл) наименьшей длины (с наименьшим суммарным весом ребер).

Название задачи происходит от следующей формулировки: имеется n городов и известны расстояния между каждой парой городов; коммивояжер (бродячий торговец), выходящий из какоголибо города, должен посетить n ¡ 1 других городов и вернуться в исходный. В каком порядке ему нужно посещать города, чтобы общее пройденное расстояние было минимальным ?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]