Гамма-алгоритм (в общем виде) 2 страница

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

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

Пример.Граф, приведенный на рисунке 6.50, можно изобразить в виде последовательности вершин так: 1,2,4,2,1,3,2,3,4, откуда следует, что два раза карандаш прошел только по ребру {2,3}.

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

20.7 Алгоритм нахождения эйлерова цикла (алгоритм Флери)

Шаг 1. Начиная с произвольной вершины Гамма-алгоритм (в общем виде) 2 страница - student2.ru , присвоить произвольному ребру Гамма-алгоритм (в общем виде) 2 страница - student2.ru номер 1. Затем вычеркнуть ребро Гамма-алгоритм (в общем виде) 2 страница - student2.ru и перейти в вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Шаг 2. Пусть Гамма-алгоритм (в общем виде) 2 страница - student2.ru – вершина, в которую перешли в результате выполнения предыдущего шага, и Гамма-алгоритм (в общем виде) 2 страница - student2.ru – номер, присвоенный некоторому ребру на этом шаге. Выбрать любое ребро, инцидентное вершине Гамма-алгоритм (в общем виде) 2 страница - student2.ru , причём мост выбирать только в том случае, когда нет других возможностей; присвоить выбранному ребру номер Гамма-алгоритм (в общем виде) 2 страница - student2.ru и вычеркнуть его.

Шаг 3. Повторять шаг 2 пока не все ребра вычеркнуты.

20.8 Гамильтоновы графы

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

Определение.Гамильтонов путь, начальная и конечная вершины которого совпадают, называется гамильтоновым циклом.

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

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

исунок 20.15 – Додекаэдр

Задача нахождения гамильтонова цикла с наименьшим весом хорошо известна как задача коммивояжера.

Определение. Гамильтонов граф – это граф, содержащий гамильтонов цикл (рис. 20.16).

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.16 – Гамильтонов граф

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

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.17 – Полугамильтонов граф

20.9 Алгоритм Робертса-Флореса (метод перебора Робертса-Флореса) нахождения гамильтоновых циклов в графе

Алгоритм начинается с построения матрицы Гамма-алгоритм (в общем виде) 2 страница - student2.ru Гамма-алгоритм (в общем виде) 2 страница - student2.ru , где элемент Гамма-алгоритм (в общем виде) 2 страница - student2.ru есть Гамма-алгоритм (в общем виде) 2 страница - student2.ru -я вершина (допустим, Гамма-алгоритм (в общем виде) 2 страница - student2.ru ), для которой в графе Гамма-алгоритм (в общем виде) 2 страница - student2.ru существует дуга Гамма-алгоритм (в общем виде) 2 страница - student2.ru . Вершины Гамма-алгоритм (в общем виде) 2 страница - student2.ru можно упорядочить произвольно, образовав элементы Гамма-алгоритм (в общем виде) 2 страница - student2.ru -го столбца матрицы Гамма-алгоритм (в общем виде) 2 страница - student2.ru . Число строк Гамма-алгоритм (в общем виде) 2 страница - student2.ru матрицы Гамма-алгоритм (в общем виде) 2 страница - student2.ru будет равно наибольшей полустепени исхода вершины.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.18 – Граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Матрица М:

  a b c d e f
b c a c c a
e d f d b
c

Все вершины по очереди записываем во множество Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Поиск всех гамильтоновых циклов производится так (вершина Гамма-алгоритм (в общем виде) 2 страница - student2.ru берется в качестве отправной вершины):

Множество Гамма-алгоритм (в общем виде) 2 страница - student2.ru Комментарии
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем первую возможную вершину в столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru (вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru ).
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем первую возможную вершину в столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru (вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru ).
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Первая возможная вершина в столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru не является возможной ( Гамма-алгоритм (в общем виде) 2 страница - student2.ru ), добавляем следующую вершину в столбце (вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru ).
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru В столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru нет возможных вершин. Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru В столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru нет возможных вершин. Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru В столбце Гамма-алгоритм (в общем виде) 2 страница - student2.ru нет возможных вершин. Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Гамильтонова цепь. Дуга Гамма-алгоритм (в общем виде) 2 страница - student2.ru дает гамильтонов цикл. Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Добавляем вершину Гамма-алгоритм (в общем виде) 2 страница - student2.ru .
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Гамильтонова цепь. Дуга Гамма-алгоритм (в общем виде) 2 страница - student2.ru дает гамильтонов цикл. Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Возвращение.
Гамма-алгоритм (в общем виде) 2 страница - student2.ru Конец поиска.

В результате получаем два гамильтоновых цикла (рис. 20.19).

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.19– Гамильтоновы циклы в графе

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

Пример.На рис. 20.20 изображен исходный граф, а на рис. 20.21 – соответствующий ему реберный.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.20

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.21

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

20.10 Признаки существования гамильтоновых циклов, путей и контуров

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

Если в графе есть висячая вершина (со степенью, равной единице), то гамильтонов цикл в нем отсутствует (рис. 20.22).

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 20.22

Теорема (условие Дирака). Если число Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершин графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru не менее трех и степень Гамма-алгоритм (в общем виде) 2 страница - student2.ru любой вершины Гамма-алгоритм (в общем виде) 2 страница - student2.ru не менее Гамма-алгоритм (в общем виде) 2 страница - student2.ru , то граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru является гамильтоновым.

Теорема (условие Оре). Если в графе Гамма-алгоритм (в общем виде) 2 страница - student2.ru с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами ( Гамма-алгоритм (в общем виде) 2 страница - student2.ru ) сумма степеней любых двух вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru и Гамма-алгоритм (в общем виде) 2 страница - student2.ru является не меньшей, чем Гамма-алгоритм (в общем виде) 2 страница - student2.ru ( Гамма-алгоритм (в общем виде) 2 страница - student2.ru ), то граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru является гамильтоновым.

Теорема Бонди-Хватала. Пусть для упорядоченной по возрастанию последовательности степеней вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru , Гамма-алгоритм (в общем виде) 2 страница - student2.ru , графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru выполнены импликации Гамма-алгоритм (в общем виде) 2 страница - student2.ru , Гамма-алгоритм (в общем виде) 2 страница - student2.ru , тогда Гамма-алгоритм (в общем виде) 2 страница - student2.ru – гамильтонов граф.

Теорема (условие Харари). Реберный граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru гамильтонов тогда и только тогда, когда в Гамма-алгоритм (в общем виде) 2 страница - student2.ru существует цикл, содержащий хотя бы по одной вершине из каждого ребра графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Следствие. Если граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru либо эйлеров, либо гамильтонов, то реберный граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru гамильтонов.

Теорема (признак Кенига). В полном орграфе Гамма-алгоритм (в общем виде) 2 страница - student2.ru (любая пара вершин которого соединяется хотя бы в одном направлении) всегда существует гамильтонов путь.

20. 11 Контрольные вопросы и задания

1. Дайте определение связного и несвязного графов.

2. Что называется степенью связности графа?

3. Перечислите свойства связных графов.

4. Приведите примеры метрических характеристик связных графов.

5. Дайте определения эйлерова цикла (эйлеровой линии, замкнутой эйлеровой цепи, эйлеровой цепи).

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

7. Для решения каких практических задач используется теорема Эйлера?

8. Дайте определение гамильтонова пути (гамильтоновой цепи), гамильтонова цикла.

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

10. Охарактеризуйте применение задачи коммивояжера.

11. Приведите алгоритм Робертса-Флореса. Для каких целей он используется?

12 Назовите основные признаки существования гамильтоновых циклов, путей и контуров.

13. Охарактеризуйте теорему (условие Дирака) для определения гамильтонова графа.

Лекция 21 Деревья

21.1 Определение и свойства деревьев

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

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.1 – Дерево

Несвязный граф, не содержащий циклов, называется лесом.

Пример.На рис. 21.2 приведен трехкомпонентный лес. Первую компоненту образует дерево с вершинами 1,2,3,4, вторую – 5,6,7,8,9, третью – 10,11.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.2 – Лес

21.2 Свойства деревьев

Теорема 21.1. Всякое дерево содержит Гамма-алгоритм (в общем виде) 2 страница - student2.ru ребер, где Гамма-алгоритм (в общем виде) 2 страница - student2.ru – число вершин.

Теорема 21.2. Всякий лес содержит Гамма-алгоритм (в общем виде) 2 страница - student2.ru ребер, где Гамма-алгоритм (в общем виде) 2 страница - student2.ru – число компонент связности.

Теорема 21.3. Любые две вершины дерева соединены точно одной простой цепью.

Теорема 21.4. Если в дереве любые две вершины соединить ребром, то в графе появится один цикл.

21.3 Перечисление графов

Определение.Граф Гамма-алгоритм (в общем виде) 2 страница - student2.ru называется помеченным, если его вершинам присвоены фиксированные метки, например, номера Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

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

Пример.На рис. 21.3 изображены все помеченные графы с числом вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru ; их количество равно 8.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.3

Количество Гамма-алгоритм (в общем виде) 2 страница - student2.ru (неориентированных) помеченных Гамма-алгоритм (в общем виде) 2 страница - student2.ru графов (простых с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами и Гамма-алгоритм (в общем виде) 2 страница - student2.ru ребрами) равно числу сочетаний из множества различных неориентированных пар вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru по числу ребер Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Гамма-алгоритм (в общем виде) 2 страница - student2.ru , Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Суммируя числа Гамма-алгоритм (в общем виде) 2 страница - student2.ru по всем возможным количествам ребер Гамма-алгоритм (в общем виде) 2 страница - student2.ru от случая безреберного графа до случая полного графа с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами, получаем число Гамма-алгоритм (в общем виде) 2 страница - student2.ru всех помеченных графов с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами:

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Число Гамма-алгоритм (в общем виде) 2 страница - student2.ru неизоморфных графов без пометок (простых, неориентированных) найти значительно труднее. Среди восьми графов на рисунке 3 без учета пометок можно указать только четыре попарно неизоморфных друг другу, например, в квадратах 1, 2, 7, 8. Следовательно, Гамма-алгоритм (в общем виде) 2 страница - student2.ru , что вдвое меньше числа Гамма-алгоритм (в общем виде) 2 страница - student2.ru помеченных графов. Число Гамма-алгоритм (в общем виде) 2 страница - student2.ru помеченных четырехвершинных графов равно 64, в то время как различных неизоморфных четырехвершинных графов без пометок существует всего Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Если через Гамма-алгоритм (в общем виде) 2 страница - student2.ru обозначить число неизоморфных Гамма-алгоритм (в общем виде) 2 страница - student2.ru -вершинных графов с Гамма-алгоритм (в общем виде) 2 страница - student2.ru ребрами, то Гамма-алгоритм (в общем виде) 2 страница - student2.ru Гамма-алгоритм (в общем виде) 2 страница - student2.ru

В общем случае количество неизоморфных графов Гамма-алгоритм (в общем виде) 2 страница - student2.ru , Гамма-алгоритм (в общем виде) 2 страница - student2.ru находятся с помощью теории перечисления конфигураций, созданной Д. Пойа.

21.4 Перечисление деревьев

Введем обозначения: Гамма-алгоритм (в общем виде) 2 страница - student2.ru – число помеченных деревьев с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru – число обычных (неизоморфных) деревьев с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами.

Пример. На рис. 21.4 изображены все помеченные четырехвершинные деревья. Их 16.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.4

Формула А. Кэли. Число Гамма-алгоритм (в общем виде) 2 страница - student2.ru помеченных деревьев с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами равно Гамма-алгоритм (в общем виде) 2 страница - student2.ru , т.е. Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Числа Гамма-алгоритм (в общем виде) 2 страница - student2.ru обычных (неизоморфных) деревьев являются значительно меньшими, однако вычислить их существенно труднее. Современные алгоритмы нахождения значений Гамма-алгоритм (в общем виде) 2 страница - student2.ru и получения конфигураций неизоморфных деревьев с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами основаны на теории перечисления Д. Пойа.

Важный класс графов образуют деревья с одной помеченной вершиной, которая называется корнем. Само дерево с одной помеченной («выделенной») вершиной называется корневым деревом. Число корневых деревьев с Гамма-алгоритм (в общем виде) 2 страница - student2.ru вершинами обозначается через Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Все корневые деревья с числом вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru изображены на рисунке 21.5.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.5

Все корневые деревья с числом вершин Гамма-алгоритм (в общем виде) 2 страница - student2.ru изображены на рис. 21.6.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.6

21.5 Остовы графа

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

Определение. Полученное дерево называется остовом, т. е. остовом называется связный частичный граф данного связного графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru , содержащий все вершины графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru , но не содержащий циклов.

Пример.Рассмотрим, например, граф, изображенный на рис. 21.7. Удалим из него ребра Гамма-алгоритм (в общем виде) 2 страница - student2.ru и Гамма-алгоритм (в общем виде) 2 страница - student2.ru и получим остов. Если удалить ребра Гамма-алгоритм (в общем виде) 2 страница - student2.ru и Гамма-алгоритм (в общем виде) 2 страница - student2.ru , то получим другой остов.

Гамма-алгоритм (в общем виде) 2 страница - student2.ru

Рисунок 21.7

Два остова в Гамма-алгоритм (в общем виде) 2 страница - student2.ru считаются различными, если они отличаются хотя бы одним ребром.

Для того чтобы Гамма-алгоритм (в общем виде) 2 страница - student2.ru имел более одного остова, необходимо и достаточно существование хотя бы одного цикла в Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

Для полного (простого) графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru перечисление остовов есть перечисление всех помеченных деревьев с вершинами графа Гамма-алгоритм (в общем виде) 2 страница - student2.ru , так что число остовов равно Гамма-алгоритм (в общем виде) 2 страница - student2.ru .

В общем случае число остовов получил Кирхгоф.

Наши рекомендации