- •Глава 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), |X| = 5, |U| = 7. Определите количество маршрутов длиной 2, 3, 4.
2. Составьте словесный алгоритм определения маршрутов в графе.
3. Составьте структурную схему алгоритма определения маршрутов в графе.
4. Задайте произвольный граф G = (X, U), где X = 6; U = 10. Постройте маршрут, цепь, цикл, простую цепь, простой цикл. Покажите на примере отличия между этими видами маршрутов.
5. Составьте структурную схему алгоритма или словесный алгоритм определения связности произвольного неориентированного графа.
6. Задайте произвольный граф G = (X, U), где X = 6; U = 18. Приведите пример правильного разреза и разреза графа.
7. Приведите пример графа, имеющего точку сочленения.
8. Приведите пример неразделимого графа.
9. Приведите пример графа блоков.
10. Постройте граф G и покажите на его примере взаимосвязь между числом реберной и вершинной связности и минимальной локальной степенью вершин графа.
При моделировании систем модели и алгоритмы нахождения маршрутов, цепей, циклов, разрезов, связности графов позволяют строить эффективные алгоритмы преобразования графов.
15.3. Нахождение кратчайших маршрутов (цепей)
15.3.1. Алгоритм Форда
Приведем алгоритм Форда нахождения маршрутов с минимальной суммарной стоимостью ребер. Будет анализироваться помеченный граф с весами на ребрах. Граф с весами на ребрах называется взвешенным.
1. Строим матрицу R взвешенного графа G.
Если вершины не смежны между собой, то в матрице ставим M. Фиксируем одну вершину xk и приписываем ей вес V(k) = 0, всем остальным вершинам приписываем вес V(j) = M.
2. Берем произвольную вершину xj xk и находим смежную с xj вершину xi, имеющую вес ri,j. В начальный момент в качестве вершины xi берем фиксированную xk. Для xj и xi проверяется выполнение неравенства
V(j) > V(i) + ri,j. (15.8)
Если оно выполняется, то прежний вес V(j) вершины xj заменяется суммой V(i) + ri,j. В противном случае, вес V(j) остается неизменным.
3. Повторяем пп. 1, 2 пока не рассмотрены все вершины.
4. Конец работы алгоритма.
Для уменьшения объема вычислений операцию пересчета индексов сначала выполняют для всех xj, смежных с фиксированной xk, а затем продолжают это для вершин, смежных с выбранными ранее.
Операция пересчета производится для всех вершин графа до тех пор, пока ни одна из вершин не сможет принимать нового значения V(j). Тогда длинами кратчайших цепей от xj до xk будут величины V(j), полученные в результате замен переменных весов V(j) на новые.
Например, для графа G рис. 15.31 выполним алгоритм Форда.
Рис. 15.31. Пример графа G
В матрице R по главной диагонали проставлены нули, так как в графе G нет петель. При отсутствии связи между вершинами проставлен знак М.
Матрица смежности этого графа запишется так:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
1 |
0 |
4 |
5 |
9 |
M |
2 |
M |
. |
2 |
4 |
0 |
M |
M |
M |
5 |
6 |
|
3 |
5 |
M |
0 |
3 |
3 |
M |
7 |
|
R = 4 |
9 |
M |
3 |
0 |
8 |
M |
M |
|
5 |
M |
M |
3 |
8 |
0 |
M |
1 |
|
6 |
2 |
5 |
M |
M |
M |
0 |
3 |
|
7 |
M |
6 |
7 |
M |
1 |
3 |
0 |
Принимаем вес вершины х1 равным V(1) = 0, V(2) = V(3) = … = V(7) = M = .
1) Фиксированная вершина xk = x1.
2) Просматриваем все пары xi, xj и проверяем выполнение неравенства (15.8).
Пусть i = 1, j = 2, тогда имеем V(1) = 0, V(2) = M, r1,2 = 4.
Условие неравенства V(2) = M > V(1) + r1,2 = 0 + 4 = 4. Поэтому вершине x2 присваиваем новый вес V(2)1 = 4.
Для вершин, у которых ri,j = M, неравенство (15.8) выполняться не будет и вес V(j) останется прежним.
Далее, для x3: V(3) = M > V(1) + r1,3 = 0 + 5 = 5 и V(3)1 = 5.
Для x4: V(4) = M > V(1) + r1,4 = 0 + 9 = 9 и V(4)1 = 9.
Для x6: V(6) = M > V(1) + r1,6 = 0 + 2 = 2 и V(6)1 = 2.
Теперь произведем пересчет индексов для вершин, смежных с x1, с учетом пути через другие смежные вершины.
Для x2: V(2) = 4 < V(6) + r2,6 = 2 + 5 = 7, значит, индекс вершины остается без изменения.
Для x4: V(4) = 9 > V(3) + r4,3 = 5 + 3 = 8, следовательно, меняем значение V(4) с 9 на 8 (см рис. 1.31).
Для x6: V(6) = 2 < V(2) + r2,6 = 4 + 5 = 9, здесь индекс остается без изменения.
Произведем пересчет индексов для вершин, несмежных с фиксированной вершиной x1.
Вычислим индекс вершины x5, его можно найти через x3, x4 или x7. Индекс x7 равен М, поэтому для нее неравенство (15.8) не выполняется.
Вычислим индекс вершины x5 через x4. Получим V(5)41 = M > V(4)1 + r4,5 = 8 + 8 = 16.
Приняв V(5)1 = 16 за старое значение индекса, пересчитаем его через x3:
V(5)31= 16 > V(3)1 + r3,5 = 5 + 3 = 8.
Так как условие (15.8) выполняется, то значение индекса V(5)1 = 16 заменяем на V(5)2 = 8.
Индекс x7 можно определить через x2, x3, x5, x6.
V(7)21 = M > V(2)1 + r2,7 = 4 + 6 = 10,
V(7)51 = M > V(5)1 + r5,7 = 8 + 1 = 9,
V(7)31 = M > V(3)1 + r3,7 = 5 + 7 = 12,
V(7)61 = M > V(6)1 + r6,7 = 2 + 3 = 5.
Итак, V(1) = 0, V(2) = 4, V(3) = 5, V(4) = 8, V(5) = 8, V(6) = 2, V(7) = 5.
Алгоритм Форда дает кратчайшее расстояние от выбранных вершин до фиксированной вершины, а сами цепи не определяет.
Для определения цепи от выбранной вершины до фиксированной воспользуемся равенством V(j) ─ V(i) = ri,j.
Например, найдем путь от x7 до x1. Ищется предпоследний шаг при пересчете индекса V(7)1. Это x7 ─ x6. Затем для x6 определяется вершина пересчета. Это x6 - x1. Следовательно, кратчайший путь x7 ─ x6 ─ x1, а кратчайшее расстояние между вершинами x1 и x7 определено ранее V(7)1 = 5.
Предположение, что при выборе на каждом шаге ближайшей вершины ожидаемая длина всего маршрута будет меньше, чем при любом другом выборе, не очевидно.
На рис. 15.32 приведен пример, когда необходимо определить путь из вершины
Рис. 15.32. Пример нахождения минимального маршрута
А в В с минимальной стоимостью. При выборе ближайшей вершины 1 из вершины А получим длину маршрута АВ = 13. Например, длины маршрутов А – 1 – 6 – 7 – В или А – 1 – 2 – 7 – 8 – В равны 13. В то же время все другие маршруты (через вершину 3) дают длину маршрута АВ = 8 (например, А – 3 – 4 – 5 – В).
Отметим, что здесь необходима стратегия просмотра длины маршрута в глубину на несколько шагов. Хотя в общем случае этот метод может свестись к полному перебору вариантов.
