- •Глава 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
- •Учебное издание Гладков Леонид Анатольевич, Курейчик Владимир Викторович, Курейчик Виктор Михайлович
16.2.2. Алгебраический метод
Идея алгоритма состоит в построении всех простых цепей в графе путем последовательного перемножения матриц графа. В качестве исходных матриц для перемножения используются модифицированная матрица смежности графа B и матрица перемножений PL. Модифицированная матрица смежности B = ||bij||, представляет собой матрицу, в которой если xi и xj смежны, то в ячейку матрицы вместо единицы заносится xj. На первом этапе матрица перемножений PL = ||pL(i, j)|| идентична матрице B, а элемент матрицы pL(i, j) представляет собой сумму внутренних произведений все простых цепей длиной l. Выражение вида x2 x3 xk-1, получаемое в ячейке на пересечении строки x1 и столбца xk, представляет собой цепь x1, x2, x3, , xk-1, xk.
Алгебраическое
произведение матриц P’L+1
= B
PL
представляет собой матрицу P’L+1
= pL+1(s,
t),
где элемент pL+1(s,
t)
=
.
Из полученной таким образом матрицы алгебраического произведения P’L+1 исключаются элементы, расположенные на главной диагонали. Кроме того, из ячеек, содержащих суммы внутренних произведений, исключаются слагаемые, содержащие начальный элемент простой цепи в качестве сомножителя. Полученная после подобного преобразования матрица, обозначается нами как PL+1, после чего процесс повторяется. По достижении n ─ 1 шага все непустые элементы матрицы Pn-1 представляют собой гамильтоновы цепи, которые при наличии ребра u(xk ─ x1) образуют гамильтоновы циклы.
Примеры решения задач
Пример 1. Пусть задан граф G = (Х, U), изображенный на рис. 16.20. Построить ГЦ для заданного графа, используя алгоритм Робертса ─ Флореса.
Рис. 16.20. Исходный граф
Решение: Построим матрицу М для заданного графа. Она будет иметь следующий вид:
.
Теперь воспользуемся описанным ранее алгоритмом.
1.1. Выбираем из матрицы М вершину a и заносим ее в список: L = {а}.
2.1. По матрице смежности выбираем из столбца с индексом a вершину, расположенную в первой ячейке. Это вершина b: L = {a, b}.
2.2. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к п. 3.1.
3.1. Выбираем столбец b, рассматриваем вершину из первой ячейки ─ это вершина a. Такая вершина уже есть в списке L, поэтому из второй ячейки столбца b берем вершину c. Переходим к следующему шагу.
3.2. Вершины с в списке L нет. Заносим ее в список: L = {a, b, c}.
3.3. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к п. 4.1.
4.1. В столбце c рассматриваем вершину из первой ячейки ─ это вершина b. Такая вершина уже есть в списке L, поэтому из второй ячейки столбца c берем вершину d. Переходим к следующему шагу.
4.2. Вершины d в списке L нет. Заносим ее в список: L = {a, b, c, d}.
4.3. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к п. 5.1.
5.1. В столбце d все вершины уже рассмотрены. Поэтому возвращаемся на шаг назад и пытаемся построить другой вариант построения пути. Вершина d вычеркивается из списка L = {a, b, c}. Переходим к п. 6.1.
6.1. В столбце c из третьей ячейки столбца берем вершину e. Переходим к следующему шагу.
6.2. Вершины e в списке L нет. Заносим ее в список: L = {a, b, c, e}.
6.3. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к пункту 7.1.
7.1. В столбце e все вершины уже рассмотрены. Поэтому возвращаемся на шаг назад и пытаемся построить другой вариант построения пути. Вершина e вычеркивается из списка L = {a, b, c}. Переходим к пункту 8.
8.1. В столбце c все вершины уже рассмотрены. Поэтому возвращаемся на шаг назад и пытаемся построить другой вариант построения пути. Вершина c вычеркивается из списка L = {a, b}. Переходим к п. 9.1.
9.1. В столбце b из третьей ячейки столбца берем вершину d. Переходим к следующему шагу.
9.2. Вершины d в списке L нет. Заносим ее в список: L = {a, b, d}.
9.3. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к п. 10.1.
10.1. В столбце d из третьей ячейки столбца берем вершину c. Переходим к следующему шагу.
10.2. Вершины c в списке L нет. Заносим ее в список: L = {a, b, d, c}.
10.3. Проверяем условие |L| = n. Условие не выполняется, поэтому переходим к п. 11.1.
11.1. В столбце c из третьей ячейки столбца берем вершину e. Переходим к следующему шагу.
11.2. Вершины e в списке L нет. Заносим ее в список: L = {a, b, d, c, e}.
11.3. Проверяем условие |L| = n. Условие выполняется. Следовательно, в графе G построена гамильтонова цепь и нам необходимо проверить, есть ли в исходном графе замыкающее ребро, чтобы завершить гамильтонов цикл.
11.4. В столбце e имеется вершина a, следовательно, поставленная задача выполнена, в графе G построен гамильтонов цикл:
{a ─ b ─ d ─ c ─ e ─ a}.
11.5. Конец работы алгоритма.
Пример 2. Пусть задан граф G = (X, U), изображенный на рис. 16.21. Построить ГЦ для данного графа алгебраическим методом.
Рис. 16.21. Исходный граф
Решение:
1. Запишем матрицу смежности B и матрицу перемножений P1 для заданного графа. Матрица P1 на первом этапе совпадает с матрицей.
B
=
.
2. После перемножения матриц B и P1, получим матрицу:
|
|
a |
b |
c |
d |
e |
|
P2= |
a |
b+c+e |
e |
e |
b+e |
b+c |
. |
b |
e |
a+d+e |
a+e |
e |
a+d |
||
c |
e |
a+e |
a+e |
e |
a |
||
d |
b+e |
e |
e |
b+e |
b |
||
e |
b+c |
a+d |
a |
b |
a+b+c+d |
После исключения из матрицы P’2 элементов, находящихся на главной диагонали, получим матрицу:
|
|
a |
b |
c |
d |
e |
|
P2’= |
a |
0 |
e |
e |
b+e |
b+c |
. |
b |
e |
0 |
a+e |
e |
a+d |
||
c |
e |
a+e |
0 |
e |
a |
||
d |
b+e |
e |
e |
0 |
b |
||
e |
b+c |
a+d |
a |
b |
0 |
3. После перемножения матриц B и P2, получим матрицу:
|
|
a |
b |
c |
d |
e |
|
P3’= |
a |
be+ce+eb+ec |
ca+ce+ea+ed |
ba+be+ea |
be+ce+eb |
ba+bd+ca |
. |
b |
de+db+eb+ec |
ae+de+ea+ed |
ae+de+ea |
ab+ae+eb |
ab+ac+db |
||
c |
eb+ec |
ae+ea+ed |
ae+ea |
ab+ae |
ab+ac |
||
d |
be+eb+ec |
ea+ed |
ba+be+ea |
be+eb |
ba+bd |
||
e |
be+ce+db+de |
ae+ca+ce+de |
ae+ba+be+de |
ab+ae+be+ce |
ab+ac+ba+bd+ca+db |
В полученной матрице сначала обнуляем ячейки главной диагонали, а затем из всех ячеек матрицы исключаем элементы, в которые в качестве сомножителя входят концевые вершины цикла. Например, в строке a исключаем все элементы, включающие в качестве сомножителя вершину a. Для наглядности такие элементы выделены в матрице жирным шрифтом. После исключения из матрицы P’2 всех вышеуказанных элементов получим матрицу:
|
|
a |
b |
c |
d |
e |
|
P3= |
a |
0 |
ce+ed |
be |
be+ce+eb |
bd |
|
b |
de+ec |
0 |
ae+de+ea |
ae |
ac |
|
|
c |
eb |
ae+ea+ed |
0 |
ab+ae |
ab |
. |
|
d |
be+eb+ec |
ea |
ba+be+ea |
0 |
ba |
|
|
e |
db |
ca |
ba |
ab |
0 |
|
4. После перемножения матриц B и P3, получим матрицу:
|
|
a |
b |
c |
d |
e |
|
P’4 = |
a |
bde+bec+ceb+edb |
cae+cea+ced+eca |
bde+bae+bea+eba |
bae+cab+cae+ceb+eab |
bac+cab |
. |
b |
dbe+deb+dec+edb |
ace+aed+dea+eca |
abe+dba+dbe+dea+eba |
abe+ace+aeb+eab |
abd+dba |
||
c |
edb |
ace+eca+aed |
abe+eba |
abe+ace+aeb+eab |
abd |
||
d |
bde+edb+bec |
eca |
bae+bde+bea+eba |
bae+eab |
bac |
||
e |
bde+bec+ceb+dbe+deb+ dec |
ace+aed+cae+cea+ced |
abe+bae+bde+bea+dba+ dbe+dea |
abe+ace+aeb+bae+cab+ cae+ceb |
abd+bac+cab+dba |
После аналогичного преобразования матрицы P’4 можем записать матрицу:
|
|
a |
b |
c |
d |
e |
|
|
a |
0 |
ced |
bde |
ceb |
0 |
. |
|
b |
dec |
0 |
dea |
ace |
0 |
|
P4 = |
c |
edb |
aed |
0 |
abe+aeb+eab |
abd |
|
|
d |
bec |
eca |
bae+ bea+ eba |
0 |
bac |
|
|
e |
0 |
0 |
dba |
cab |
0 |
Все ненулевые ячейки матрицы P4 представляют собой гамильтоновы цепи. Концами этих цепей являются вершины, на пересечении которых располагается рассматриваемая ячейка. Например, ячейка на пересечении строки a и столбца d представляет собой гамильтонову цепь a – c– e – b – d. Те из построенных цепей, для которых существует замыкающее ребро, образовывают гамильтонов цикл. Анализ полученной матрицы P4 позволяет сделать вывод о наличии в исходном графе G следующего ГЦ:
a – c – e – d – b.
Все остальные цепи либо не имеют замыкающего ребра, либо являются вариантами обнаруженного цикла. Например, c – e – d – b – a или d – b – a – c – e.
Очевидно, что различные эвристические алгоритмы определения гамильтонова цикла, например, алгоритм Робертса–Флореса не могут дать точного решения задачи, но обеспечивают нахождение результата за полиномиальное время. В худшем случае, например, когда гамильтонова цикла в графе не существует, они могут свестись к полному перебору всех возможных вариантов. При анализе всех цепей можно получить точный результат, но для задач практически большой размерности такой вариант является неприемлемым. Алгоритм перемножения матриц позволяет всегда найти гамильтонов цикл в графе, если он существует, однако этот алгоритм сложно реализовать с вычислительной точки зрения.
