- •Глава 16. Специальные циклы и метрика графов 345
- •Глава 17. Графовые инварианты 404
- •Введение
- •Цели и задачи преподавания дисциплины «дискретная математика»
- •Модуль 1. Основы Теории множеств (2 кредита)
- •Комплексная цель и задачи изучения модуля
- •Глава 1. Исчисление множеств
- •1.1. Понятие множества
- •1.2. Способы задания множеств
- •1.3. Подмножество
- •2. Пустое множество не имеет собственных и истинных подмножеств.
- •3. Одноэлементное множество имеет два подмножества - сaмo себя и , т.Е. Не имеет собственных подмножеств.
- •Множество – это многое, мыслимое как единое.
- •Глава 2. Операции над множествами
- •2.1. Объединение множеств
- •2.2. Пересечение множеств
- •2.3. Разность множеств
- •2.4. Дополнение множества
- •2.5. Тождества алгебры множеств
- •2.6. Доказательства тождеств с множествами
- •Глава 3. Упорядоченные множества
- •3.1. Кортеж (Упорядоченное множество)
- •3.2. Декартово произведение
- •3.3. Операция проектирования множеств
- •3.4. График
- •Декартово произведение множеств позволяет перейти к графическому представлению упорядоченных множеств.
- •Глава 4. Отношения
- •4.1. Основные понятия отношений
- •4.2. Основные свойства отношений
- •4.3. Операции над отношениями
- •4.4. Основные свойства специальных отношений
- •4.5. Разбиение множеств
- •4.6. Отношение порядка
- •Использование отношений позволяет строить модели взаимосвязей между любыми обьектами в природе.
- •5. Соответствия
- •5.1. Определение соответствия
- •5.2. Операции над соответствиями
- •5.3. Понятия образа и прообраза при соответствии
- •5.4. Доказательства тождеств с соответствиями
- •5.5. Основные свойства соответствий
- •5.6. Функция
- •Глава 6. Упорядоченные бесконечные множества
- •6.1. Основные сведения об упорядоченных бесконечных множествах
- •6.2. Проблема континуума
- •Глава 7. Основные понятия теории мультимножеств
- •7.1. Понятие мультимножества
- •7.2. Операции над мультимножествами
- •Возможность многократного вхождения элементов в мультимножество создает новое качество и позволяет расширить класс описываемых, анализируемых и синтезируемых математических объектов.
- •8. Нечеткие множества
- •8.1. Нечеткие высказывания
- •8.2. Операции над нечеткими множествами
- •8.3. Нечеткие отношения и соответствия
- •Тестовые задания к модулю 1
- •24. Множество называется графиком, если каждый его элемент ...
- •25. Соответствие может быть задано … способом.
- •Критерии оценки
- •Нечеткие и приближенные высказывания, множества, соответствия и отношения позволяют формально задавать расплывчатую информацию в виде, удобном для обработки на эвм.
- •Глоссарий к модулю 1
- •Глава 1.
- •Глава 2.
- •Глава 3.
- •Глава 4.
- •Глава 5.
- •Глава 6.
- •Глава 7.
- •Глава 8.
- •Галилей Модуль 2. Основы теории алгоритмов (1,5 кредита) Комплексная цель и задачи изучения модуля
- •Глава 9. Введение в теорию алгоритмов
- •9.1. Понятие алгоритма
- •9.2. Основные свойства алгоритмов
- •9.3. Классификация алгоритмов
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •10.1. Преобразование слов в произвольных абстрактных алфавитах
- •10.2. Числовые функции
- •10.3. Построение алгоритмов по принципу «разделяй и властвуй»
- •10.4. Представление алгоритма в виде детерминированного устройства
- •10.5. Универсальные схемы алгоритмов
- •10.5. “Жадные” алгоритмы
- •10.6. Нечеткие (расплывчатые) алгоритмы
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •11.1. Анализ алгоритмов
- •11.2. Сложность алгоритмов
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Тестовые задания к модулю 2
- •Критерии оценки
- •Модуль 3. Алгебра логики (1,5 кредита) Комплексная цель и задачи изучения модуля
- •Глава 12. Элементы алгебры логики
- •12.1. Логические функции
- •12.2. Основные логические тождества и законы
- •12.3. Булевы функции одной и двух переменных
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •13.1. Дизъюнктивная и конъюнктивная нормальные формы
- •13.2. Способы перехода от нормальных к совершенным нормальным формам
- •2. Графический способ.
- •13.4. Функциональная полнота бф
- •13.3. Алгебра Жегалкина
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •14.1. Реализация булевых функций
- •14.2. Минимизация булевых функций
- •14.3. Карты Карно
- •14.4. Метод Квайна - Мак-Класски
- •14.5. Переход от бф к простейшим комбинационным схемам
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Критерии оценки
- •Глоссарий к модулю 3
- •Модуль 4. Основы Теории графОв (2 кредита) Комплексная цель и задачи изучения модуля
- •Глава 15. Введение в теорию графов
- •15.1. Способы задания графов и виды графов
- •15.1.1. Способы задания графов
- •15.1.2. Виды графов
- •15.1.3. Нечеткие неориентированные графы
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •15.2. Маршруты, цепи, циклы
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •При моделировании систем модели и алгоритмы нахождения маршрутов, цепей, циклов, разрезов, связности графов позволяют строить эффективные алгоритмы преобразования графов.
- •15.3. Нахождение кратчайших маршрутов (цепей)
- •15.3.1. Алгоритм Форда
- •15.3.2. Алгоритм Дейкстры
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •Алгоритмы Форда и Дейкстры являются эффективным способом определения кратчайшей по стоимости цепи между двумя вершинами графа.
- •Глава 16. Специальные циклы и метрика графов
- •16.1. Эйлеровы и гамильтоновы цепи и циклы
- •16.1.1. Связь между эйлеровыми и гамильтоновыми графами
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •16.2. Алгоритмы построения гамильтонова цикла
- •16.2.1. Алгоритм Робертса ─ Флореса
- •16.2.2. Алгебраический метод
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •16.3. Задача о коммивояжере и алгоритмы ее решения
- •16.3.1. Алгоритм Хелда и Карпа
- •16.3.2. Геометрический метод решения
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •16.4. Расстояния на графах
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •16.5. Деревья
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •Глава 17. Графовые инварианты
- •17.1. Цикломатическое и хроматическое числа графа
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •17.2. Числа внутренней и внешней устойчивости графа
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •Числа внутренней и внешней устойчивости относятся к инвариантам графа. Они позволяют определить специальные группы вершин в графах.
- •17.3. Планарность графов
- •17.3.1. Плоские и планарные графы
- •17.3.2. Эвристики для определения планарности
- •17.3.3. Минимизация пересечений ребер графов
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •17.4. Ориентированные графы
- •17.4.1. Способы задания
- •17.4.2. Решение стандартных графовых задач с использованием орграфов
- •17.4.3. Выделение сильносвязных компонент
- •17.4.4. Нечеткие ориентированные графы
- •Примеры решения задач
- •Вопросы
- •Задания для самостоятельной работы
- •175 Гиперграфы
- •Примеры решения задач
- •Вопросы для самоконтроля
- •Задания для самостоятельной работы
- •Тестовые задания к модулю 4
- •Критерии оценки
- •Глоссарий к модулю 4 Глоссарий к главе 1
- •Глоссарий к главе 2
- •Глоссарий к главе 3
- •Библиографический комментарий
- •Литература
- •Заключение
- •Приложение 1
- •Учебное издание Гладков Леонид Анатольевич, Курейчик Владимир Викторович, Курейчик Виктор Михайлович
Вопросы для самоконтроля
1. Какой цикл в графе называется эйлеровым? Что такое полуэйлеров граф?
2. Какие условия существования эйлерова цикла в графе?
3. Что такое гамильтонов цикл в графе?
4. Существуют ли условия, позволяющие однозначно определить наличие гамильтонова цикла в произвольном связном графе?
5. В чем заключается основная идея алгоритма Флери?
6. Что такое граф подразбиений?
7. Какой граф называется тотальным?
8. В каком случае ребра и вершины графа называются соседними?
9. Поясните понятие жордановой кривой?
10. Что такое замкнутая жорданова кривая?
Задания для самостоятельной работы
1. Для произвольного неориентированного графа определите, можно ли построить в этом графе эйлеров цикл.
2. Для произвольного связного неориентированного графа постройте с помощью алгоритма Флери эйлеров цикл.
3. Постройте структурную схему алгоритма Флери для построения эйлерова цикла.
4. Запишите псевдокод алгоритма Флери.
5. Приведите пример графа подразбиений.
6. Составьте описание алгоритма построения реберных графов.
7. Приведите псевдокод алгоритма построения реберных графов.
8. Приведите пример тотального графа.
9. Приведите пример связи эйлеровых и гамильтоновых графов словесное описание алгебраического метода.
10. Приведите пример построения гамильтонова псевдоцикла.
Эйлеровы и гамильтоновы циклы в графе связаны с решением практических задач логистики, искусственного интеллекта, проектирования при нахождении циклов и цепей, проходящих по всем ребрам или через все вершины.
Связь между эйлеровыми и гамильтоновыми графами позволяет строить модели и производить преобразования для построения эффективных алгоритмов.
16.2. Алгоритмы построения гамильтонова цикла
16.2.1. Алгоритм Робертса ─ Флореса
Рассмотрим алгоритм Робертса и Флореса для построения гамильтонова цикла на графе. Алгоритм основан на переборе вершин, входящих в анализируемые цепи. Рассматриваемая цепь непрерывно продлевается до момента, когда построен гамильтонов цикл или если эта цепь не приводит к его построению. Тогда рассматривается другая цепь, и процесс продолжается сначала, пока не будет найден гамильтонов цикл или будут рассмотрены все цепи и окажется, что этот цикл не найден.
Исходной информацией является специальная матрица M = | mij |k×n. Здесь k ─ это параметр, определяющий число строк матрицы. Величина mij определяет метку первой вершины, для которой есть ребро ui,j. Число строк матрицы равно наибольшей локальной степени в анализируемом графе. Например, задан граф G (рис. 16.19) и его матрица.
|
|
a |
b |
c |
d |
e |
f |
|
|
1 |
b |
a |
a |
c |
b |
a |
|
М = |
2 |
c |
c |
b |
e |
c |
b |
|
|
3 |
f |
e |
d |
– |
d |
c |
. |
|
4 |
– |
f |
e |
– |
– |
|
|
|
5 |
– |
– |
f |
– |
– |
|
|
.
Рис. 16.19. Граф G
Рассмотрим работу алгоритма на примере. Алгоритм начинается с рассмотрения элементов первого столбца матрицы М, если не задана иная начальная вершина гамильтонова цикла.
1.1. Выбираем вершину a. В списке вершин графа G, смежных с вершиной a (столбец a матрицы М), первой стоит вершина b.
1.2. Заносим в последовательность обхода вершин вершину b:
ГЦ = [a ─ b], переходим к столбцу b матрицы M.
1.3. Так как гамильтонов цикл еще не построен, продолжаем вычисления.
2.1. В списке вершин графа G, смежных с вершиной b, первой стоит вершина a, однако она уже задействована в цикле. Поэтому выбираем следующую вершину в столбце. Это вершина c.
2.2. Заносим в последовательность обхода вершин вершину c:
ГЦ = [a ─ b ─ c], переходим к столбцу c матрицы M.
2.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
3.1. В списке вершин графа G, смежных с вершиной c, вершины a и b мы пропускаем, так как они использованы в цикле. Выбираем вершину d.
3.2. Заносим в последовательность обхода вершин вершину d:
ГЦ = [a ─ b ─ c ─ d], переходим к столбцу d матрицы M.
3.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
4.1. В списке вершин графа G, смежных с вершиной d, пропускаем вершину c и выбираем вершину e.
4.2. Заносим в последовательность обхода вершин вершину e:
ГЦ = [a ─ b ─ c ─ d ─ e], переходим к столбцу e матрицы M.
4.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
5.1. В списке вершин графа G, смежных с вершиной e, все вершины уже задействованы в цикле.
5.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b - c ─ d].
6.1. В списке вершин графа G, смежных с вершиной d, все вершины уже задействованы в цикле.
6.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ c].
7.1. В списке вершин графа G, смежных с вершиной c, пропускаем вершину d и выбираем вершину e.
7.2. Заносим в последовательность обхода вершин вершину e:
ГЦ = [a ─ b ─ c ─ e], переходим к столбцу e матрицы M.
7.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
8.1. В списке вершин графа G, смежных с вершиной e, пропускаем вершины b и c, после чего выбираем вершину d.
8.2. Заносим в последовательность обхода вершин вершину d:
ГЦ = [a ─ b ─ c ─ e ─ d], переходим к столбцу d матрицы M.
8.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
9.1. В списке вершин графа G, смежных с вершиной d, все вершины уже задействованы в цикле.
9.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ c ─ e].
10.1. В списке вершин графа G, смежных с вершиной e, все вершины уже задействованы в цикле.
10.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ c].
11.1. В списке вершин графа G, смежных с вершиной c, пропускаем вершину e и выбираем вершину f.
11.2. Заносим в последовательность обхода вершин вершину f:
ГЦ = [a ─ b ─ c ─ f], переходим к столбцу f матрицы M.
11.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
12.1. В списке вершин графа G, смежных с вершиной f, все вершины уже задействованы в цикле.
12.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a - b - c].
13.1. В списке вершин графа G, смежных с вершиной c, все вершины уже задействованы в цикле.
13.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a - b].
14.1. В списке вершин графа G, смежных с вершиной b, пропускаем вершину c и выбираем вершину e.
14.2. Заносим в последовательность обхода вершин вершину e:
ГЦ = [a ─ b ─ e], переходим к столбцу c матрицы M.
14.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
15.1. В списке вершин графа G, смежных с вершиной e, пропускаем вершину b и выбираем вершину c.
15.2. Заносим в последовательность обхода вершин вершину c:
ГЦ = [a ─ b ─ e ─ c], переходим к столбцу c матрицы M.
15.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
16.1. В списке вершин графа G, смежных с вершиной c, выбираем вершину d.
16.2. Заносим в последовательность обхода вершин вершину d:
ГЦ = [a─ b ─ e ─ c ─ d], переходим к столбцу d матрицы M.
16.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
17.1. В списке вершин графа G, смежных с вершиной d, все вершины уже задействованы в цикле.
17.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ e ─ c].
18.1. В списке вершин графа G, смежных с вершиной c, выбираем вершину f.
18.2. Заносим в последовательность обхода вершин вершину f:
ГЦ = [a ─ b ─ e ─ c ─ f], переходим к столбцу f матрицы M.
18.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
19.1. В списке вершин графа G, смежных с вершиной f, все вершины уже задействованы в цикле.
19.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ e ─ c].
20.1. В списке вершин графа G, смежных с вершиной c, все вершины уже задействованы в цикле.
20.2. Возвращаемся на шаг назад и пытаемся найти другой вариант продолжения обхода вершин графа: ГЦ = [a ─ b ─ e].
21.1. В списке вершин графа G, смежных с вершиной e, пропускаем вершину c и выбираем вершину d.
21.2. Заносим в последовательность обхода вершин вершину d:
ГЦ = [a ─ b ─ e ─ d], переходим к столбцу c матрицы M.
21.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
22.1. В списке вершин графа G, смежных с вершиной d, выбираем вершину c.
22.2. Заносим в последовательность обхода вершин вершину c:
ГЦ = [a ─ b ─ e ─ d ─ c], переходим к столбцу c матрицы M.
22.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
23.1. В списке вершин графа G, смежных с вершиной c, выбираем вершину f.
23.2. Заносим в последовательность обхода вершин вершину f:
ГЦ = [a ─ b ─ e ─ d ─ c ─ f], переходим к столбцу c матрицы M.
23.3. Гамильтонов цикл еще не построен, продолжаем вычисления.
24.1. В списке вершин графа G, смежных с вершиной f, выбираем вершину a, поскольку это завершающее ребро гамильтонова цикла.
23.2. Заносим в последовательность обхода вершин вершину a:
ГЦ = [a ─ b ─ e ─ d ─ c ─ f ─ a].
23.3. Гамильтонов цикл построен, работа алгоритма завершена.
Главное преимущество алгоритма ─ простота, а его основным недостатком является сложность в случае необходимости перебора всех путей в процессе построения гамильтонова цикла. В случае же, когда гамильтонова цикла в графе не существует, алгоритм и вовсе сведется к полному перебору всех возможных вариантов построения пути.
Если в графе можно построить несколько гамильтоновых циклов, то алгоритм позволяет последовательно определить все гамильтоновы циклы. Кроме того, алгоритм позволяет определять и гамильтоновы цепи.
