- •Богданов а.Е. Курс лекций
- •Содержание
- •§ 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,…, выбраны.