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

nbbzibd0Bw

.pdf
Скачиваний:
3
Добавлен:
15.04.2023
Размер:
958.19 Кб
Скачать

Задания для самостоятельной работы

1.Доказать, что в ориентированном графе из всякого замкнутого контура можно выделить простой контур.

2.Выполнить разбиение на классы эквивалентности множества вершин ориентированного псевдографа, изображённого на рисунке

а) 6.1, б; б) 7.1, б.

3.Построить базисный граф для ориентированного псевдографа, изображённого на рисунке

а) 6.1, б; б) 7.1, б.

4.Пусть C r обозначает r-ю степень матрицы смежности C ориентирован-

ного псевдографа F. Доказать, что элемент ai j матрицы A = C r равен количеству всех путей длиной r из vi в vj.

5.Пользуясь утверждением задачи 4, по заданной матрице C смежности ориентированного псевдографа F определить

а) количество путей длины 2 из вершины 1 в вершину 5; б) количество путей длины 3 из вершины 1 в вершину 4;

в) количество циклов чётной длины l (l 4), проходящих через вершину 1.

С

1

2

3

4

5

1

0

1

1

1

0

2

1

0

1

0

1

3

1

1

0

1

1

4

1

0

1

0

1

5

0

1

1

1

0

Контрольные вопросы

1.Что такое путь в ориентированном графе?

2.Какой путь называется ориентированной цепью?

3.Какая ориентированная цепь является простой?

4.Какой путь называется контуром?

5.Какой контур является простым?

6.Как определяется бинарное отношение достижимости для вершин ориентированного графа?

7.Какими свойствами обладает отношение достижимости?

8.Сформулируйте теорему Редеи.

9.Какой граф называется базисным?

10.В чём заключается алгоритм построения базисного графа?

61

§ 10. Эйлеров псевдограф и условия его существования

Задача о кенигсбергских мостах. Постановка и решение Эйлером этой задачи знаменует начало разработки теории графов. Расположение мостов приведено на рисунке 10.1, а.

Требуется пройти каждый мост по одному разу и вернуться в исходную часть города.

Рисунок 10.1 Расположение мостов: а) схема мостов; б) псевдограф, соответствующий схеме мостов

Можно построить псевдограф задачи, в котором каждой части города соответствует вершина, а каждому мосту ребро, инцидентное вершинам, относящимся к соединяемым им частям (рисунок 10.1, б).

Обходу мостов соответствует последовательность рёбер псевдографа F, в которой два соседних ребра имеют общую вершину, т.е. маршрут. Так как в конце обхода нужно вернуться в исходную часть города и на каждом мосту побывать по одному разу, то этот маршрут является циклом, содержащим все рёбра псевдографа. Такие циклы называются эйлеровыми, а

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

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

Примером эйлерова псевдографа является фигура, которая называется сабли Магомета и имеет арабское происхождение (рисунок 10.2).

Рисунок 10.2 «Сабли Магомета».

62

Условия, при которых псевдограф эйлеров

Теорема 10.1 (Эйлера). Конечный неориентированный псевдограф F = (V, E) эйлеров, тогда и только тогда, когда он связный и степени всех его вершин чётны.

ÿ

Необходимость. Пусть конечный неориентированный псевдограф F = (V, E) эйлеров.

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

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

Рассмотрим теперь вершину v0, которая является началом (и концом) эйлерова цикла. Каждый выход из этой вершины по одному ребру плюс возврат в неё по другому ребру даёт вклад 2 в степень этой вершины. Если из начальной вершины выходили p раз, то и возвращались в неё p раз, следовательно, степень этой вершины равна 2p (тоже чётная).

Достаточность. Пусть псевдограф F связный и степени всех его вершин чётны.

Начнём построение эйлерова цикла с произвольной вершины v0 псевдографа F. Каждый раз, когда мы добавляем к маршруту новое ребро и приходим в новую вершину vi (vi ¹ v0), число «свободных» (не пройденных) рёбер в этой вершине уменьшается на единицу. Так как до этого оно было чётным, то теперь становится нечётным, а значит, не может оказаться нулём (0 – число чётное); поэтому закончиться в вершине vi эйлеров цикл не может. Напротив, каждый выход из исходной вершины v0 плюс возврат в неё уменьшает число «свободных» (не пройденных) рёбер на 2 и, в конце концов, станет нулём, а значит, процесс построения цикла может закончиться только в вершине v0.

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

Предположим, что, выйдя из вершины v0 (рисунок 10.3) и пройдя по

63

ров граф.
нее, построить цикл
Рисунок 10.3 Эйле-

маршруту 1−2−3−4, мы вернулись в v0. Цикл построен, но он проходит не через все рёбра. Вместе с тем, продолжать движение из v0 нельзя, т.к. все инцидентные этой вершине рёбра уже пройдены.

Принадлежащие построенному циклу рёбра порождают связную часть C, в которой степени всех вершин чётны (на рисунке 10.3 рёбра C проведены сплошной линией). Значит, чётными будут и степени вершин F1 = F\C (на рисунке 10.3 рёбра F1 обозначены пунктирной линией).

Так как F, по условию, связный псевдограф, то в C найдётся хотя бы одна вершина v*, инцидентная также рёбрам из F1. Начиная с этой вершины, можно, как и ра-

C* в F1, кончающийся также в v* (на рисунке 10.3

цикл C* − это 5−6−7).

Вершина v*, кроме того, разбивает цикл C на 2 участка: C1 с началом

вv0 и концом в v* (на рисунке 10.3 участок C1 − это 1−2−3) и C2 с началом

вv* и концом в v0 (на рисунке 10.3 участок C2 − 4).

Тогда

C1 C* C2

также является циклом, начинающимся и кончающимся в вершине v0, но имеющим большее число рёбер (на рисунке 10.3 цикл C1 C* C2 − это цикл 1−2−3−5−6−7−4, который включает все рёбра F).

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

ÿ

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

Флёри (Fleury) предложил простой алгоритм построения эйлерова цикла в неориентированном псевдографе (если такой цикл существует), а именно: начать с некоторой вершины v0 и каждый раз вычеркивать пройденное ребро; не проходить по ребру, если удаление этого ребра приводит к разбиению графа на 2 связные компоненты (не считая изолированных вершин).

Этот алгоритм можно легко распространить и на орграфы.

64

Эйлеровой называют цепь, включающую все рёбра данного конечного неориентированного псевдографа G, но имеющую различные начало v’ и конец v’’.

Пример эйлеровой цепи приведён на рисунке 10.4. Там же указано одно из направлений её обхода.

Чтобы в конечном неориентированном псевдографе существовала эйлерова цепь, необходимы его связность и чётность степеней всех вершин, кроме начальной v’ и конечной v’’. Последние две вершины должны иметь нечётные степени: из v’ мы лишний раз выхо-

Рисунок 10.4 Граф, дим, а в v’’ лишний раз заходим. содержащий эйлерову цепь. Заметим, что если бы в Кёнигсбер-

ге отсутствовал мост (AD) (рисунок 10.1, а), то в соответствующем псевдографе (рисунок 10.1, б) появилась бы эйлерова цепь.

Задания для самостоятельной работы

1.Выписать все эйлеровы цепи данного графа F. Определить такой подграф F* графа F, который содержит эйлеров цикл.

2.Проверить, существуют ли в графах, заданных матрицами смежности, эйлеровы цепи и циклы? Если “да”, то найти их.

а

 

 

 

 

 

б

 

 

 

 

 

0

1

0

0

2

1

0

1

0

0

2

1

1

0

1

0

0

2

1

0

1

0

0

2

0

1

0

2

0

1

0

1

0

2

0

1

0

0

2

0

1

1

0

0

2

0

1

1

2

0

0

1

0

1

2

0

0

1

0

0

1

2

1

1

1

0

1

2

1

1

0

0

65

Контрольные вопросы

1.Какой цикл называется эйлеровым?

2.Какой псевдограф называется эйлеровым?

3.Сформулируйте условия существования эйлерова цикла.

4.Какая цепь называется эйлеровой?

5.Сформулируйте условия существования эйлеровой цепи.

§ 11. Гамильтонов граф и условия его существования

Цепь в неориентированном графе F = (V, E) называется гамильтоновой, если она проходит через каждую вершину F ровно один раз.

Цикл в неориентированном графе F = (V, E) называется гамильтоновым, если он проходит через каждую вершину F = (V, E) ровно один раз. Граф, содержащий гамильтонов цикл, называется гамильтоновым графом.

Пример. В данном неориентированном графе (рисунок 11.1, а) найти все гамильтоновы циклы.

а

б

Рисунок 11.1.

Решение. В качестве начала и конца гамильтонова цикла можно выбрать любую вершину; выберем v1. В данном графе существует четыре различных гамильтоновых цикла:

1.(v1, v2), (v2, v3), (v3, v4), (v4, v5), (v5, v1);

2.(v1, v4), (v4, v3), (v3, v2), (v2, v5), (v5, v1);

3.(v1, v5), (v5, v2), (v2, v3), (v3, v4), (v4, v1);

4.(v1, v5), (v5, v4), (v4, v3), (v3, v2), (v2, v1).

Аналогичным образом понятия гамильтоновой цепи и гамильтонова цикла можно ввести и для ориентированных графов.

Указанные названия цепей и циклов связаны с именем ирландского математика Уильяма Гамильтона (Hamilton W.), который в 1859 году предложил следующую игру-головоломку: требуется, переходя по очереди от одной вершины додекаэдра (рисунок 11.2) к другой вершине по его ре-

66

Рисунок 11.2.

бру, обойти все 20 вершин по одному разу и вернуться в начальную вершину.

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

Для решения этой задачи нужно сначала построить граф знакомств, т.е. сопоставить каждому человеку вершину

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

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

Следует иметь в виду, что понятия эйлерова графа и гамильтонова графа не зависят друг от друга. Граф может быть эйлеровым и гамильтоновым одновременно (рисунок 11.3, а), эйлеровым, но не быть гамильтоновым (рисунок 11.3, б), гамильтоновым и не эйлеровым (рисунок 11.3, в), наконец, не быть ни тем, ни другим (рисунок 11.3, г).

а

б

в

г

Рисунок 11.3.

К сожалению, отсутствуют такие же простые необходимые и достаточные условия существования гамильтонова цикла, как, например, эйлерова цикла.

Рассмотрим простой класс графов, в которых заведомо существуют гамильтоновы цепи и циклы. Очевидно, что в полном графе Kn всегда существует гамильтонов цикл, а также гамильтоновы цепи, соединяющие две произвольные вершины этого графа. Таким образом, простейшим доста-

67

точным условием существования гамильтонова графа является его полнота.

Пусть полный ориентированный граф F(V, E) содержит n помеченных вершин. Тогда при построении гамильтоновой цепи

первую вершину можно выбрать n способами,

вторую − n−1 способами,

...,

последнюю, n-ю, 1 способом.

В соответствии с комбинаторным правилом произведения (см. § 2) в полном орграфе с n вершинами существует

n∙(n−1) ∙...∙ 1 = n!

(11.1)

различных гамильтоновых цепей.

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

n! / n = (n−1)!

(11.2)

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

Пример. Подсчитать количество различных гамильтоновых цепей и различных гамильтоновых циклов в полном неориентированном графе на n = 6 помеченных вершинах (диаграмма такого графа представлена на рисунке 11.1, б).

Решение. В данном графе имеется гамильтоновых цепей: n! / 2 = 6! / 2 = 720 / 2 = 360,

гамильтоновых циклов:

(n−1)! / 2 = 5! / 2 = 120 / 2 = 60.

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

1. Если граф F = (V, E) гамильтонов, то он связный.

Предположим, что доказываемое утверждение неверно, т.е. F не является связным. Значит, в нем найдется такая пара вершин v’ и v”, что в F не существует соединяющего их маршрута, следовательно, в F не удастся

68

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

Обратное в общем случае неверно. Если граф связный, то он не обязательно гамильтонов. Например, графы, изображённые на рисунках 11.3,

би 11.3, г связные, но не гамильтоновы.

2.Если граф F = (V, E) гамильтонов, то в нем отсутствуют точки сочленения.

Предположим, напротив, что в гамильтоновом графе F есть точка со-

членения. Обозначим ее v0. Так как F гамильтонов, то в нем можно построить гамильтонов цикл с началом и концом в этой точке v0:

С = (v0, v1, v2,...,vp1, v0).

Поскольку v0 точка сочленения, то, удалив её из графа F, получим вместо F граф F’ с компонентами связности F1, F2,..., Fp, где p ³ 2.

По определению гамильтонова цикла v0 ¹ v1 ¹ v2 ¹ ... ¹ vp1, следовательно, после удаления вершины v0 и инцидентных ей рёбер от цикла С в

графе F’ останется (v1, v2,..., vp1) - цепь, соединяющая все вершины графа

F’. Это означает, что F’ связный граф, т.е. он имеет одну компоненту связности: p = 1.

Получается, что количество p компонент связности графа F’ равно 1 и одновременно больше 1, чего быть не может.

Обратное в общем случае неверно. Если в графе нет точек сочленения, то это не гарантирует, что он гамильтонов. В графах 11.3, б и 11.3, г отсутствуют точки сочленения, но эти графы не гамильтоновы.

Задача коммивояжёра

Гамильтоновы циклы задействованы в решении одной из классических задач, называемой задачей коммивояжёра.

Формулировка задачи. Имеется n городов, обозначенных числами: 1, 2,..., n. Известна стоимость сij прямого проезда из города i в город j (i j; i, j = 1, 2, ... n). Требуется найти циклический маршрут, который проходит через каждый из n городов в точности один раз и при этом имеет наименьшую стоимость.

69

Исходной в задаче является квадратная матрица Сn×n , элемент сij ³ 0 которой равен стоимости (обычно в единицах времени, денег или расстояния) прямого проезда из города i в город j.

Задача называется симметричной, если сij = сji для всех i и j (i j; i, j = 1, 2, ... n), т.е. если стоимость проезда между каждыми двумя городами не зависит от направления. Если хотя бы для одной пары i и j (i j) условие сij = сji не выполняется, то задача не симметричная.

Сформулируем задачу коммивояжёра в терминах теории графов. Для этого поставим в соответствие каждому городу вершину ориентированного графа F(V, E), дороге из города i в город j - дугу (i, j). Припишем дуге вес сij. Графы, у которых каждому ребру приписано некоторое число (мера, вес), называются нагруженными.

Граф F(V, E) представляет собой полный ориентированный граф на n вершинах с нагруженными дугами. В этом графе требуется найти гамильтонов цикл, имеющий наименьшую стоимость (под стоимостью f(Г) гамильтонова цикла Г понимается сумма весов входящих в него дуг).

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

Другими словами, надо составить все (n-1)! гамильтоновых циклов в случае, если задача несимметричная (для симметричной задачи их в два раза меньше), и подсчитать стоимость каждого цикла, после чего в качестве ответа выбрать тот цикл (не обязательно единственный), который имеет наименьшую стоимость.

Пример. Решить задачу коммивояжёра для n = 4 городов методом полного перебора. Матрица С приведена в таблице 11.1.

 

 

Таблица 11.1

Решение. Поскольку задача не симметричная

С

I

II

III

IV

(например, с13 с31), то общее количество га-

I

5

0

2

мильтоновых циклов составит: (n-1)! = (4-1)! = 6.

 

 

 

 

Перечислим их все и для каждого подсчита-

II

5

1

6

ем его стоимость:

 

 

 

 

 

 

 

 

 

 

 

 

 

1) Г1: (I, II), (II, III), (III, IV) (IV, I),

 

III

8

1

9

 

 

 

 

 

f(Г1) = с12 + с23 + с34 + с41 = 5 + 1 + 9 + 2 = 17;

 

IV

2

0

9

 

 

2) Г2: (I, II), (II, IV), (IV, III) (III, I),

f(Г2)

 

 

 

 

 

 

 

 

 

= 5 + 6 + 9 + 8 = 28;

 

 

 

 

 

 

 

 

 

 

3) Г3: (I, III), (III, II), (II, IV) (IV, I),

f(Г3) = 0 + 1 + 6 + 2 = 9;

 

 

4) Г4: (I, III), (III, IV), (IV, II) (II, I),

f(Г4) = 0 + 9 + 0 + 5 = 14;

 

5) Г5: (I, IV), (IV, II), (II, III) (III, I),

f(Г5) = 2 + 0 + 1 + 8 = 11;

 

6) Г6: (I, IV), (IV, III), (III, II) (II, I),

f(Г6) = 2 + 9 + 1 + 5 = 17.

Ответ: искомый цикл – это цикл

70

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