- •Богданов а.Е. Курс лекций
- •Содержание
- •§ 1. Основные понятия теории множеств
- •Основные понятия теории множеств
- •Способы задания множеств
- •Операции над множествами
- •§ 2. Соответствия. Функции. Отображения
- •§ 3. Понятие алгебры. Алгебра множеств кантора
- •Диаграмма Эйлера-Венна
- •§ 4. Бинарные отношения
- •Способы задания бинарных отношений
- •Свойства бинарных отношений
- •§ 5. Бинарное отношение эквивалентности
- •§ 6. Бинарное отношение порядка. Упорядоченные
- •§ 7. Решетки (структуры). Изоморфизм
- •Изоморфизм множеств
- •Дедекиндовые решетки
- •Дистрибутивные решетки
- •§ 8. Отношения (обобщение). Алгебраические
- •Операции над отношениями
- •Алгебраические системы
- •Глава ιι. Комбинаторный анализ
- •§ 1. Основные определения
- •Правила суммы и произведения
- •§ 2. Формулы расчета перестановок и сочетаний
- •§ 3. Бином и полином
- •§ 4. Подстановки
- •§ 5. Метод включений и исключений
- •§ 6. Метод производящих функций
- •§ 7. Комбинаторная мера информации. Вероятность искажения информации
- •Глава ιіі. Теория графов
- •§ 1. Первоначальные понятия теории графов
- •§ 2. Операции над графами. Способы задания графов Операции над графами
- •Способы задания графов
- •§ 3. Маршруты, цепи, циклы и другие характеристики графа
- •§ 4. Алгебраическая форма представления графа
- •Глава іv. Некоторые приложения графов
- •§ 1. Эйлеровы графы. Алгоритм флери. Гамильтоновы
- •Эйлеровы графы
- •Алгоритм Флери.
- •Метод построения эйлерового обхода двоичного куба
- •Гамильтоновы графы. Метод Робертса – Флореса
- •Метод перебора Робертса – Флореса
- •§ 2. Пространство циклов графа
- •§ 3. Независимое множество вершин графа
- •Алгоритм выделения пустых подграфов
- •§ 4. Вершинное число внешней устойчивости графа
- •§ 5. Плотность графа
- •Алгоритм выделения полных подграфов
- •§ 6. Раскраска графа
- •Оценки хроматического числа
- •Алгоритм минимальной раскраски вершин графа
- •§ 7. Планарность графа
- •Глава V. Оптимизационные алгоритмы теории графов
- •§ 1. Определение кратчайших путей. Алгоритм дейкстры
- •§ 2. Максимальный поток через сеть. Алгоритм
- •Алгоритм Форда – Фалкерсона
- •§ 3. Построение остова экстремального веса. Алгоритм краскала
- •§ 4. Метод ветвей и границ: задача коммивояжера. Общая модель задачи поиска
- •Дерево поиска частичных решений
- •§ 5. Применение ориентированных деревьев в задачах теории кодирования и диагностирования
- •§ 6. Построение оптимального дерева бинарного поиска. Алгоритм гильберта – мура
- •Алгоритм Гильберта – Мура построения оптимального дерева бинарного поиска Суть алгоритма
- •Алгоритм
- •§ 7. Сложность задач теории графов. Задача синтеза управляющих систем
- •Задача синтеза управляющих систем
- •Задача о выполнимости
- •Литература
- •Электронное пособие курс лекций
- •«Дискретная математика».
§ 3. Построение остова экстремального веса. Алгоритм краскала
Рассмотрим алгоритм Краскала построения остова наименьшей длины (веса):
1. Упорядочить ребра графа по неубыванию их весов (длин):
2. Начиная с первого ребра в этом списке, добавляют ребра в строящийся остов, соблюдая условие: такое добавление не должно приводить к появлению цикла.
3. Повторять шаг 2 до тех пор, пока число ребер в строящемся остове не стане равным п – 1, где п – количество вершин в исходном графе.
Если упорядочить ребра по невозрастанию их весов (длин), то можно построить остов с наибольшим весом (длиной).
Пример. Построить остов с наименьшим весом для графа , заданного матрицей весов P
v1 v2 v3 v4 v5 v6
.
□ Так как матрица симметричная, то задан неориентированный граф. Исходный граф показан на рис. 6.2
Рис. 6.2
1. Упорядочим ребра в порядке неубывания веса (длины):
2. Возьмем ребро и1 и поместим его в строящийся остов.
Возьмем ребро и2 и поместим его в строящийся остов (т.к. оно не образует цикла с предыдущим ребром).
Возьмем ребро и3 и поместим его в строящийся остов (т.к. оно не образует цикла с предыдущими ребрами).
Берем ребро и4 и поместим его в строящийся остов.
Ребра и5 и и6 образуют с предыдущими ребрами циклы, поэтому их не используем в построении остова.
Берем ребро и7 и поместим его в строящийся остов.
3. Проверим
окончание алгоритма. Число входящих в
остов ребер равно 5. Заданный граф имеет
п
= 6 вершин и п
– 1 = 6 – 1 = 5. Таким образом, построенный
остов содержит все вершины заданного
графа. Вес (длина) построенного остова
равна
4
+ 5 + 5 + 6 + 9 = 29. Остов D
наименьшего веса (длины) показан на рис.
6.3
Рис. 6.3
■
§ 4. Метод ветвей и границ: задача коммивояжера. Общая модель задачи поиска
Задача коммивояжера относится к комбинаторным задачам на составление расписания. В свою очередь, к задаче коммивояжера сводятся многие другие задачи, связанные с объездом ряда пунктов и возвращением в исходный пункт: развозка почты, продуктов питания и т.д. Аналогичный характер носят задачи соединения отдельных пунктов линиями электроснабжения, водопровода, газоснабжения и т.п.
Постановка задачи коммивояжера: коммивояжер (агент, рекламирующий товар своей фирмы) должен посетить п городов ( в это число входит и город , из которого начинается поездка ) и вернутся в исходный пункт, побывав в каждом городе только один раз. Известны расстояния между городами (или стоимость проезда). Требуется установить, в каком порядке коммивояжер должен посещать города, чтобы общая длина маршрута (общая стоимость маршрута) была минимальной.
Если города принять за вершины графа, то задача коммивояжера сводится к определению кратчайшего гамильтонового контура.
Метод ветвей и границ является одним из вариантов поиска с возвращением (backtrak).
Рассмотрим общую модель задачи поиска.
Полагаем, что
решение задачи состоит из вектора
конечной, но не определенной длины,
удовлетворяющего некоторым ограничениям
и называемого частичным
решением.
Каждое решение
является элементом линейного упорядоченного
множества
Таким
образом, при исчерпывающем поиске должны
рассматриваться элементы множества
в качестве возможных решений. В качестве
исходного частичного решения выбирается
пустой вектор
и на основе имеющихся ограничений
выясняется, какие элементы из
являются кандидатами в
.
Обозначим это подмножество через
В качестве а1
выбираем наименьший элемент множества
S1.
В результате имеем частичное решение
В общем случае
различные ограничения, описывающие
решения, говорят о том : из какого
подмножества
множества
выбираются кандидаты для расширения
частичного решения
от
до
.
Если частичное
решение не представляет возможностей
для выбора элемента ak
, то
Ø
. В этом случае следует вернуться и
выбрать новый элемент
.
Если его выбрать нельзя, то возвращаемся
еще дальше и выбираем новый элемент
и т.д.
Этот процесс
удобно описывать в терминах процедуры
прохождения дерева в глубину. Исследуемое
подмножество множества
для I
= 0,1,2,… представляется как
дерево поиска
следующим образом. Корень дерева
(нулевой уровень) есть пустой вектор.
Узлы первого уровня есть множество
кандидатов для выбора а1
. В общем случае узлы k-го
уровня являются кандидатами на выбор
ak
при условии, что а1,
а2,…,
выбраны.
