- •Глава 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.3.2. Геометрический метод решения
Опишем геометрический метод решения задачи о коммивояжере. Решение задачи геометрическим методом возможно при условии, что в графе любые две вершины смежны и выполняется правило треугольника.
Сформулируем «Правило треугольника»: Длина оптимального маршрута коммивояжера не может быть меньше удвоенной величины максимального веса ребра, выбранного среди множества всех ребер графа:
L1 + L2 > 2ri,jmax. (16.2)
Приведем словесное описание алгоритма. Примем по умолчанию, что L1 – расстояние между вершинами xi и xk, а L2 – расстояние между вершинами xk и xj.
1. Определим максимальный элемент матрицы R и вершины xk, xh, расстояние между которыми max.
2. Строятся треугольники с основанием k – h с вершинами i I = {1, 2, ..., n}, i k, i h. Таких треугольников будет n - 2. Вычисляем их периметры по формуле:
Пkih = r(k, i) + r(i, h) + r(k, h) (16.3)
3. Находим Пmax = Пklh. Фиксируем вершины xk, xl, xh и выделяем звенья L1 – (k – h), L2 – (k – l), (l – h). Далее оставшиеся n – 3 вершины включаются либо в L1, либо в L2.
4. Для каждого фиксированного i l, i k, i h вычисляем
R(k, h) = r(k, i) + r(I, h) – r(k, h).
R(k, l) = r(k, i) + r(I, l) – r(k, l).
R(l, h) = r(k, i) + r(I, h) – r(l, h).
Наименьшая R определит принадлежность xi соответствующему отрезку и xi принадлежит k – l.
5. Отрезки a – b заменяем согласно 4 отрезками a – c и c – b. Если все вершины просмотрены, то к 7.
6. Если две вершины xa, xb отнесены к одному отрезку k – h k – a, a – h и делают k – b – a или a – b – h.
7. Определяем длину маршрута.
Например, пусть имеется 6 городов, расстояния между которыми известны. Матрица смежности графа запишется следующим образом:
|
1 |
2 |
3 |
4 |
5 |
6 |
|
1 |
|
30 |
65 |
40 |
62 |
28 |
|
|
30 |
|
40 |
20 |
40 |
60 |
|
R = 3 |
65 |
40 |
|
30 |
55 |
60 |
. |
4 |
40 |
20 |
30 |
|
30 |
32 |
|
5 |
62 |
40 |
55 |
30 |
|
36 |
|
6 |
28 |
60 |
60 |
32 |
36 |
|
|
Согласно 1 определим пару вершин, расстояние между которыми максимально (наибольший элемент матрицы R).
ri,jmax = max(r(i, j)) = r1,3 = 65.
Фиксируем вершины x1, x3 и для отрезка 1 – 3 строим треугольники с вершинами в точках 2, 4, 5 и 6.
2. Вычисляем периметры построенных треугольников (рис. 162.22) по формуле (16.3). При этом слагаемое r1,3 можно пропустить, поскольку оно одинаково для всех выражений.
П123 = 30 + 40 = 70,
П143 = 40 + 30 = 70,
П153= 62 + 55 = 117,
П163 = 28 + 60 = 88.
3. Выбираем треугольник с максимальной величиной периметра П153 и фиксируем вершины x1, x5, x3. Выделяем два звена: L1 – (x1 – x3) и L2 - (x1 – x5 и x5 – x3) (см. рис. 16.22).
Рис. 16.22. Построение пути коммивояжера
4. Оставшиеся незадействованными вершины x2, x4, x6 отнесем по принадлежности к отрезкам 1 – 3, 1 – 5, 5 – 3. Для этого с учетом правила треугольника, гласящего, что сумма длин двух сторон треугольника всегда больше длины третьей стороны
r(i, j) + r(j, k) > r(i, k), r(i, k) + r(k, j) > r(i, j), r(k, i) + r(i, j) > r(k, j),
используем следующую формулу:
R(l, h) = r(l, i) + r(i, h) - r(l, h) (16.4)
Начнем с вершины x2. При этом получим, что k = 1, h = 3, l = 5, i = 2. Тогда имеем:
R1,3 = r1,2 + r2,3 – r1,3 = 30 + 40 - 65 = 5,
R1,5 = r1,2 + r2,5 – r1,5 = 30 + 40 - 28 = 42,
R3,5 = r3,2 + r2,5 – r3,5 = 40 + 40 - 55 = 25.
Так как из всех полученных значений R1,3 = 5 является наименьшим, то вершину x2 отнесем к отрезку 1 – 3.
Аналогичные вычисления выполняем для вершин x4 и x6. Так, для вершины x4: k = 1, h = 3, l = 5, i = 4. Тогда
R1,3 = r1,4 + r4,3 – r1,3 = 40 + 30 - 65 = 5,
R1,5 = r1,4 + r4,5 – r1,5 = 40 + 30 - 28 = 42,
R3,5 = r3,4 + r4,5 – r3,5 = 30 + 30 - 55 = 5.
Вершину x4 можно отнести как к отрезку 1 – 3, так и к отрезку 3 – 5. Отнесем ее к отрезку 3 – 5, так как к отрезку 1 – 3 мы уже отнесли вершину x2.
Для вершины x6: k = 1, h = 3, l = 5, i = 6. Тогда
R1,3 = r1,6 + r6,3 – r1,3 = 28 + 60 ─ 65 = 23,
R1,5 = r1,6 + r6,5 – r1,5 = 28 + 36 ─ 62 = 2,
R3,5 = r3,6 + r6,5 – r3,5 = 60 + 36 ─ 55 = 41.
Следовательно, вершину x6 отнесем к отрезку 1 – 5. Теперь производим включение каждой вершины в маршрут.
5. Отрезок 1 – 3 заменяем двумя отрезками 1 – 2 и 2 – 3. Аналогично отрезок 3 – 5 заменяем отрезками 3 – 4 и 4 – 5, а отрезок 1 – 5 – отрезками 1 – 6 и 6 – 5.
Если все вершины включены в маршрут, то алгоритм закончен, надо вычислить только длину маршрута и перейти к пункту 7. В противном случае переход к п. 6.
Если в процессе работы окажется, что к одному отрезку одновременно отнесено несколько вершин, то в этом случае оставляем вершину, для которой значение R(k, h) минимально.
6. Все вершины отнесены к отрезкам k – l, k – h и l – h. Пусть, например, для отрезка k – h зафиксированы две вершины xi и xj. Тогда надо отнести вершину xj к одному из отрезков k – i или i – h.
Для этого вычисляем значения
Rki = r(k, j) + r(j, i) – r(k, i), Rih = r(i, j) + r(j, h) - r(i, h).
Минимальная из этих двух величин определяет принадлежность вершины xj к отрезку k – i или отрезку i – h. Аналогично определяем принадлежность всех остальных вершин для других отрезков и переходим к п. 5.
7. Построен следующий маршрут коммивояжера: x1 – x2 – x3 – x4 – x5 – x6 – x1. Его длина равна 194.
На рис. 16.23 показан ГЦ с весами на ребрах, когда сумма весов пройденных ребер минимальна.
Рис. 16.23. Решение задачи коммивояжера
Алгоритм справедлив только для графа, у которого выполняется правило треугольника.
