- •Глава 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. Пусть задан граф G = (X, U). Найти с помощью алгоритма Форда кратчайшие пути в заданном графе G от фиксированной вершины до всех остальных.
Решение: Рассмотрим матрицу смежности графа G:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
1 |
0 |
10 |
M |
M |
M |
M |
3 |
6 |
12 |
. |
2 |
10 |
0 |
18 |
M |
M |
M |
2 |
M |
13 |
|
3 |
M |
18 |
0 |
25 |
M |
20 |
M |
M |
7 |
|
R=4 |
M |
M |
25 |
0 |
5 |
16 |
4 |
M |
M |
|
5 |
M |
M |
M |
5 |
0 |
10 |
M |
23 |
M |
|
6 |
M |
M |
20 |
16 |
10 |
0 |
17 |
15 |
9 |
|
7 |
3 |
2 |
M |
4 |
M |
17 |
0 |
M |
24 |
|
8 |
6 |
M |
M |
M |
23 |
15 |
M |
0 |
5 |
|
9 |
12 |
13 |
7 |
M |
M |
9 |
24 |
5 |
0 |
1.1. В качестве фиксированной вершины выбираем вершину x1. Тогда ее вес V(1) = 0, а веса всех остальных вершин: V(2) = V(3) = … = V(9) = = M.
1.2. Просматриваем первую строку матрицы смежности и выбираем поочередно все вершины, не помеченные литерой M. В результате мы сформировали следующий список вершин: x2, x7, x8, x9.
1.3. Для каждой из вершин, входящих в полученный список, проверяем истинность неравенства (1.8):
V(2) = 0 + 10 = 10; V(7) = 0 + 3 = 3; V(8) = 0 + 6 = 6;
V(9) = 0 + 12 = 12.
Значения весов для вершин x3, x4, x5, x6 не изменяются.
Теперь произведем пересчет индексов для вершин смежных с x1, с учетом пути через другие смежные вершины.
1.4. Производим пересчет весов для сформированного списка вершин:
для вершины x2:
- V(2) V(7) + r27 10 3 + 2 ─ неравенство истинно, следовательно, вес вершины изменяется: V(2)1 = 5,
- V(2) V(9) + r29 10 1 + 13 ─ неравенство ложно, следовательно, вес вершины не изменяется;
для вершины x7:
- V(7) V(2) + r27 3 10 + 2 ─ неравенство ложно, следовательно, вес вершины не изменяется;
- V(7) V(9) + r79 3 12 + 24 ─ неравенство ложно, следовательно, вес вершины не изменяется.
для вершины x8:
- V(8) V(9) + r89 6 12 + 5 ─ неравенство ложно, следовательно, вес вершины не изменяется;
для вершины x9:
- V(9) V(2) + r29 12 10 + 13 ─ неравенство ложно, следовательно, вес вершины не изменяется,
- V(9) V(7) + r79 12 3 + 24 ─ неравенство ложно, следовательно, вес вершины не изменяется,
- V(9) V(8) + r89 12 6 + 5 ─ неравенство истинно, следовательно, вес вершины изменяется: V(9)1 = 11.
1.5. Проверка условия: все ли вершины помечены.
Произведем пересчет индексов для вершин, несмежных с фиксированной вершиной x1.
2.1. Вычислим значение веса вершины x3, его можно найти через x2, x4, x6 или x9. Однако значения весов вершин x4 и x6 нам пока не известны, поэтому производим расчет через вершины x2 и x9:
- V(3) V(2) + r23 5 + 18 - неравенство истинно, следовательно, вес вершины изменяется: V(3)1 = 23,
- V(3) V(9) + r39 23 11 + 7 ─ неравенство истинно, следовательно, вес вершины изменяется: V(3)2 = 18.
2.2. Вычислим значение веса вершины x4, его можно найти через x3, x5, x6 или x7. Однако значения весов вершин x5 и x6 нам пока не известны, поэтому производим расчет через вершины x3 и x7:
- V(4) V(3) + r34 18 + 25 ─ неравенство истинно, следовательно, вес вершины изменяется: V(4)1 = 43,
- V(4) V(7) + r47 43 3 + 4 ─ неравенство истинно, следовательно, вес вершины изменяется: V(4)2 = 7.
2.3. Вычислим значение веса вершины x5, его можно найти через x4, x6 или x8. Однако значение веса вершины x6 нам пока не известно, поэтому производим расчет через вершины x4 и x8:
- V(5) V(4) + r45 7 + 5 ─ неравенство истинно, следовательно, вес вершины изменяется: V(5)1 = 12,
- V(5) V(8) + r58 12 6 + 23 ─ неравенство ложно, следовательно, вес вершины не изменяется.
2.4. Вычислим значение веса вершины x6, его можно найти через x3, x4, x5, x7, x8 или x9:
- V(6) V(3) + r36 18 + 20 ─ неравенство истинно, следовательно, вес вершины изменяется: V(6)1 = 38,
- V(6) V(4) + r46 38 7 + 16 ─ неравенство истинно, следовательно, вес вершины изменяется: V(6)2 = 23,
- V(6) V(5) + r56 23 12 + 10 ─ неравенство истинно, следовательно, вес вершины изменяется: V(6)3 = 22,
- V(6) V(7) + r67 22 3 + 17 ─ неравенство истинно, следовательно, вес вершины изменяется: V(6)4 = 20,
- V(6) V(8) + r68 20 6 + 15 ─ неравенство ложно, следовательно, вес вершины не изменяется.
- V(6) V(9) + r69 20 11 + 9 ─ неравенство ложно, следовательно, вес вершины не изменяется,
3. Конец работы алгоритма.
Алгоритм Форда дает кратчайшее расстояние от вершин до фиксированной вершины, а сами цепи не определяет.
Для определения цепи от выбранной вершины до фиксированной воспользуемся равенством V(j) ─ V(i) = ri,j.
Например, найдем путь от x6 до x1. Ищется предпоследний шаг при пересчете индекса V(6). Это x6 ─ x7. Затем для x7 определяется вершина пересчета. Это x6 - x1. Следовательно, кратчайший путь x6 – x7 ─ x1, а – кратчайшее расстояние между вершинами x1 и x6 определено ранее V(6) = 20.
Пример 2. Пусть задан граф G = (X, U). Найти с помощью алгоритма Дейкстра кратчайшие пути в заданном графе G от фиксированной вершины до всех остальных.
Решение: Рассмотрим матрицу смежности графа G:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
1 |
0 |
10 |
0 |
0 |
0 |
0 |
3 |
6 |
12 |
. |
2 |
10 |
0 |
18 |
0 |
0 |
0 |
2 |
0 |
13 |
|
3 |
0 |
18 |
0 |
25 |
0 |
20 |
0 |
0 |
7 |
|
R=4 |
0 |
0 |
25 |
0 |
5 |
16 |
4 |
0 |
0 |
|
5 |
0 |
0 |
0 |
5 |
0 |
10 |
0 |
23 |
0 |
|
6 |
0 |
0 |
20 |
16 |
10 |
0 |
17 |
15 |
9 |
|
7 |
3 |
2 |
0 |
4 |
0 |
17 |
0 |
0 |
24 |
|
8 |
6 |
0 |
0 |
0 |
23 |
15 |
0 |
0 |
5 |
|
9 |
12 |
13 |
7 |
0 |
0 |
9 |
24 |
5 |
0 |
Постоянные пометки будем обозначать *, остальные временные.
1. l(x1) = 0*. l(xi) = , xi x1, p = x1.
В качестве начальной вершины принимаем вершину x1. Всем остальным вершинам графа присваиваем метки l(xi) = .
Первая итерация
2. Г(p) = Г(x1) = {x2, x7, x8, x9}. Возьмем вершину x2 и из выражения (15.9) получим:
l(x2) min[l(x2), l(x1) + r(x1, x2)] = min[, 0* + 10] = 10.
Аналогично вычисляем значения меток для других вершин, смежных с вершиной x1: l(x7) = 3, l(x8) = 6, l(x9) = 12.
3. В списке вершин графа выберем вершину, имеющую минимальное значение метки: Min[x2, x7, x8, x9, x3, x4, x5, x6] = min[10, 3, 6, 12, , , , ] = 3 ─ соответствует вершине x7.
4. Вершина x7 получает постоянную пометку l(x7) = 3*, p = x7.
5. Не все вершины имеют постоянные пометки, переходим к п. 2.
Вторая итерация
2. Г(p) = Г(x7) = {x2, x4, x6, x9} ─ все пометки временные. Из выражения (1.9) вычисляем:
l(x2) = min[l(x2), l(x7) + r(x7, x2)] = min[10, 3* + 2] = 5.
Аналогично l(x4) = 7, l(x6) = 17, l(x9) = 12.
3. Min[x2, x4, x6, x8, x9, x3, x5] = min[5, 7, 17, 6, 12, , ] = 5 ─ соответствует вершине x2.
4. Вершина x2 получает постоянную пометку l(x2) = 5*, p = x2.
5. Перейдем к п. 2, т.к. не все вершины имеют постоянные пометки.
Третья итерация
2. Г(p) = Г(x2) = {x1, x3, x7, x9}, только x3 и x9 имеют временные пометки. Из выражения (15.9) получим l(x3) = min[, 5* + 18] = 23, l(x9) = min[12, 5* + 13] = 12.
3. Min[x3, x4, x8, x6, x9, x5] = min[23, 7, 6, 17, 12, ] = 6 ─ соответствует вершине x8.
4. Вершина x8 получает постоянную пометку l(x8) = 6*, p = x8.
5. Перейдем к п. 2, так как. не все вершины имеют постоянные пометки.
Четвертая итерация
2. Г(p) = Г(x8) = {x9, x6, x5}, x5 и x9 имеют временные пометки. Из выражения (15.9) получим:
l(x5) = min[, 6* + 23] = 29, l(x9) = min[12, 6* + r(x8, x9)] = 11.
3. Min[x5, x9, x3, x4, x5] = min[29, 11, 23, 7, 29] = 7 ─ соответствует вершине x4.
4. Вершина x4 получает постоянную пометку l(x4) = 7*, p = x4.
5. Переход к п. 2.
Пятая итерация
2. Г(p) = Г(x4) = {x3, x6, x5}. l(x3) = 23, l(x6) = 17, l(x5) = 12.
3. Min[x5, x6, x9, x3] = min[12, 17, 11, 23] = 11.
4. Вершина x9 получает постоянную пометку l(x9) = 11*, p = x9.
5. Переход к п. 2.
Шестая итерация
2. Г(p) = Г(x9) = {x3, x6} (берем только непомеченные вершины).
(x6) = min[l(x6), l(x9) + r(x6, x9)] = [17, 11* + 9] = 17, l(x3) = 18.
3. Min[x5, x6, x3] = min[12, 17, 18] = 12.
4. Вершина x5 получает постоянную пометку l(x5) = 12*, p = x5.
5. Переход к п. 2.
Седьмая итерация
2. Г(p) = Г(x5) = {x6}.
l(x6) = min[l(x6), l(x5) + r(x5, x6)] = [17, 12* + 10] = 17.
3. Min[x6, x3] = min[17, 18] = 17.
4. Вершина x6 получает постоянную пометку l(x6) = 17*, p = x6.
5. Переход к п. 2.
Восьмая итерация.
2. Г(p) = Г(x3) = .
l(x3) = min[18] = 18, p = x3. Все вершины помечены.
Итак, получили кратчайшие пути от вершины x1 до всех остальных:
x1 x2(5*), x1 x3(18*), x1 x4(7*), x1 x5(12*), x1 x6(17*), x1 x7(3*), x1 x8(6*), x1 x9(11*);
x1 x7 x2 x3(18*), x1 x7 x2(5*), x1 x8(6*), x1 x8 x9(11*), x1 x7 x6(17*), x1 x7 x4 x5(12*), x1 x7 x4(7*).
Длину цепи, т.е. суммарную стоимость весов пройденных ребер, можно получить при помощи описанной ранее рекурсивной процедуры.
Например: x1 x3(18*), сумму 18 дает вершина x9 с ребром {x9 ─ x3}:
имеем x3 x9(11*), сумму 11 дает вершина x8 с ребром {x8 ─ x9}.
имеем x3 x9 x8(6*), сумму 6 дает вершина x1 с ребром {x1 ─ x8}.
Тогда имеем кратчайший путь x3 x9 x8 x1 длиной 18.
Результат построения кратчайших путей в графе G показан на рис. 15.33.
Рис. 15.33. Граф G
