
- •Часть 1. Курс лекций
- •Введение.
- •Цели освоения дисциплины
- •Место дисциплины в структуре ооп впо
- •Компетенции обучающегося, формируемые в результате освоения дисциплины (модуля)
- •Тема 1. Алгоритмы на графах (6 часов).
- •Лекция 1. Начальные понятия теории графов.
- •Определение графа
- •Графы и бинарные отношения
- •Откуда берутся графы
- •Число графов
- •Смежность, инцидентность, степени
- •Некоторые специальные графы
- •Графы и матрицы
- •Взвешенные графы
- •Изоморфизм
- •Инварианты
- •Операции над графами
- •Локальные операции
- •Подграфы
- •Алгебраические операции
- •Лекция 2. Поиск в глубину и ширину. Поиск в ширину
- •Процедура поиска в ширину
- •Процедура поиска в глубину
- •Глубинная нумерация
- •Построение каркаса
- •Шарниры
- •Маршруты, пути, циклы
- •Связность и компоненты
- •Метрические характеристики графов
- •Маршруты и связность в орграфах
- •Эйлеровы пути и циклы
- •Построение эйлерова цикла
- •Гамильтоновы пути и циклы
- •Тема 2. Алгоритмы комбинаторного перебора (6 часов).
- •Размещения с повторениями
- •Перестановки
- •Подмножества
- •Разбиения
- •Лекция 5. Коды Грея. Коды Грея и аналогичные задачи
- •Лекция 6. Применение методов комбинаторного перебора.
- •Подсчет количеств
- •Тема 3. Общие методы разработки алгоритмов (6 часов).
- •Ферзи, не бьющие друг друга: обход дерева позиций
- •Лекция 8. Рекурсия. Примеры рекурсивных программ
- •Рекурсивная обработка деревьев
- •Лекция 9. Построение итеративных алгоритмов по рекурсивным.
- •Стек отложенных заданий
- •Более сложные случаи рекурсии
- •Библиографический список
- •Содержание
- •Тема 1. Алгоритмы на графах. 6
- •Тема 2. Алгоритмы комбинаторного перебора. 48
- •Тема 3. Общие методы разработки алгоритмов. 66
- •Шутов Антон Владимирович Медведев Юрий Алексеевич
- •600014, Г. Владимир, ул. Университетская, 2, тел. 33-87-40
Маршруты, пути, циклы
Маршрут
в графе - это последовательность вершин
,
такая, что для каждого
вершины
и
соединены
ребром. Эти
ребер
называются ребрами
маршрута.
Говорят, что маршрут проходит
через них, а число
называют
длиной
маршрута. Говорят, что маршрут соединяет
вершины
и
,
они называются соответственно началом
и концом
маршрута, вершины
называются
промежуточными.
Маршрут называется замкнутым,
если
.
Путь - это маршрут, в котором все ребра различны. Путь называется простым, если и все вершины в нем различны.
Цикл
- это замкнутый путь. Цикл
называется
простым,
если все вершины
попарно
различны.
В графе на рисунке 3.1 последовательность вершин
- не маршрут;
- маршрут, но не путь;
- путь, но не простой;
- замкнутый маршрут, но не цикл;
- цикл, но не простой;
- простой цикл.
Рис. 3.1.
Установим некоторые простые свойства маршрутов.
Теорема 1. В любом маршруте, соединяющем две различные вершины, содержится простой путь, соединяющий те же вершины. В любом цикле, проходящем через некоторое ребро, содержится простой цикл, проходящий через это ребро.
Доказательство.
Пусть
-
маршрут. Если все его вершины различны,
то это уже простой путь. В противном
случае, пусть
,
.
Тогда последовательность
,
полученная из этого маршрута удалением
отрезка последовательности от
до
,
тоже является маршрутом. Новый маршрут
соединяет те же вершины и имеет меньшую
длину. Продолжая действовать таким
образом, после конечного числа "спрямлений"
получим простой путь, соединяющий
и
.
Второе утверждение теоремы доказывается
аналогично.
Отметим,
что в формулировке теоремы 1 нельзя
заменить слово "цикл" словами
"замкнутый маршрут". Действительно,
если
-
ребро графа, то последовательность
-
замкнутый маршрут, проходящий через
это ребро, но никакого цикла в нем нет.
Теорема 2. Если в графе степень каждой вершины не меньше , то в нем есть цикл.
Доказательство.
Найдем
в графе простой путь наибольшей длины.
Пусть это
.
Вершина
смежна
с
,
а так как ее степень не меньше двух, то
она смежна еще хотя бы с одной вершиной,
скажем, с
.
Если бы
была
отлична от всех вершин пути, то
последовательность
была
бы простым путем большей длины.
Следовательно,
-
это одна из вершин пути,
,
причем
.
Но тогда
-
цикл.
Связность и компоненты
Граф называется связным, если в нем для любых двух вершин имеется маршрут, соединяющий эти вершины. Заметим, что ввиду теоремы 1 можно в этом определении заменить слово "маршрут" словами "простой путь".
Для произвольного графа определим на множестве вершин отношение соединимости: вершина соединима с вершиной , если существует соединяющий их маршрут. Легко видеть, что это отношение рефлексивно, симметрично и транзитивно, то есть является отношением эквивалентности. Классы эквивалентности называются областями связности, а порождаемые ими подграфы - компонентами связности графа. В связном графе имеется только одна компонента связности - весь граф. Компоненты связности можно определить также как максимальные по включению связные подграфы данного графа.
У
графа на рис.
3.2
имеется четыре области связности -
,
,
,
.
Рис. 3.2.
Вершина
называется шарниром
(или точкой
сочленения),
если при ее удалении число компонент
связности увеличивается. У графа на
рис.
3.2
имеется четыре шарнира - это вершины
,
,
,
.
Ребро,
при удалении которого увеличивается
число компонент связности, называется
перешейком.
Перешейками графа, изображенного на
рис.
3.2,
являются ребра
,
,
,
,
.
Легко доказываются следующие свойства шарниров и перешейков:
Теорема 3.Вершина является шарниром тогда и только тогда, когда в графе имеются такие отличные от вершины и , что любой путь, соединяющий и , проходит через .
Теорема 4. Ребро является перешейком в том и только том случае, если в графе нет простого цикла, содержащего это ребро.