
- •5. Алгоритмы поиска циклов в графе
- •5.1. Понятие о фундаментальных циклах
- •5.2. Определение всех циклов в графе
- •5.3. Поиск эйлерова цикла
- •5.4. Поиск гамильтонова цикла
- •5.5. Лабораторная работа №5.1: “Поиск фундаментальных циклов”
- •Порядок выполнения работы
- •Методические указания
- •5.6. Лабораторная работа №5.2: “Поиск всех циклов”
- •Порядок выполнения работы
5.5. Лабораторная работа №5.1: “Поиск фундаментальных циклов”
Цель работы:
Исследование и поиск фундаментальных циклов в графе.
Задание:
Используя методические указания раздела 5.1 разработать программу поиска всех фундаментальных циклов в графе от заданной вершины, используя один из алгоритмов поиска по выбранному варианту.
Порядок выполнения работы
Работа рассчитана на 2 часа и должна определять в заданном неориентированном графе следующие элементы:
цикломатическое число;
список вершин каждого фундаментального цикла перечислением его вершин;
список фундаментальных циклов.
Варианты выполнения работы:
Использовать рекурсивный алгоритм поиска в графе в глубину.
Использовать нерекурсивный алгоритм поиска в графе в глубину.
Использовать алгоритм поиска в графе в ширину.
В качестве теста для отладки и исследования использовать связный неориентированный граф из 9 вершин, представленный на рис. 4.1.
Методические указания
Для удобства последующего использования найденных фундаментальных циклов рекомендуем их систематизировать в специальной матрице. Матрица фундаментальных циклов может быть построена по столбцам (или аналогично - по строкам), где строкам соответствуют ребра, а столбцам - циклы. Единичный элемент указывает на наличие данного ребра в данном цикле. Ребра можно задавать в виде пар вершин и представлять их в отдельном массиве.
5.6. Лабораторная работа №5.2: “Поиск всех циклов”
Цель работы:
Исследование и поиск циклов в графе, используя фундаментальные циклы в графе.
Задание:
Используя методические указания раздела 5.2 разработать программу генерирования всех циклов в графе, применяя операцию симметрической разности к ранее найденным фундаментальным циклам.
Порядок выполнения работы
Работа рассчитана на 2 часа и должна определять в заданном неориентированном графе неповторяющийся список всех циклов в графе.
Варианты выполнения работы:
Использовать рекурсивный алгоритм поиска в графе в глубину при определении фундаментальных циклов.
Использовать нерекурсивный алгоритм поиска в графе в глубину при определении фундаментальных циклов.
Использовать алгоритм поиска в графе в графе в ширину при определении фундаментальных циклов.
В качестве тестов использовать связный неориентированный граф из 9 вершин, представленный на рис. 4.1.
Методические указания
При разработке алгоритма поиска всех циклов следует воспользоваться построенной в предыдущей работе матрицей фундаментальных циклов. Каждый полученный новый простой цикл можно записывать в эту же матрицу, расширяя ее дополнением нового столбца.
5.7. Лабораторная работа №5.3: “Поиск эйлерова цикла”
Цель:
Исследование и поиск эйлеровых путей и циклов в графе.
Задание:
Используя методические указания раздела 5.3 разработать программу поиска эйлеровых путей и циклов.
Порядок выполнения работы
Работа рассчитана на 2 часа и должна определять в заданном неориентированном графе все эйлеровы пути и циклы.
В качестве тестов использовать связный неориентированный граф из 9 вершин, представленный на рис. 5.1.
5.8. Лабораторная работа №5.4: “Поиск гамильтонова цикла”
Цель:
Исследование и поиск гамильтоновых путей и циклов в графе.
Задание:
Используя методические указания раздела 5.4 разработать программу поиска гамильтоновых путей и циклов.
Порядок выполнения работы
Работа рассчитана на 2 часа и должна строить дерево исчерпывающего перебора и определять в заданном неориентированном графе все гамильтоновы пути и циклы.
В качестве тестов использовать связный неориентированный граф из 5 вершин, представленный на рис. 5.2.
ЛИТЕРАТУРА
Липский В. Комбинаторика для программистов. - М.: Мир, 1988.
Кристофидес Н. Теория графов: алгоритмический подход. - М.: Мир. - 1978.
Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для инженера. - М.: Энергоатомиздат. - 1988.
Майника Э. Алгоритмы оптимизации на сетях и графах. - М.: Мир, 1981.
Свами М., Тхуларисаман К. Графы, сети и алгоритмы. - М.: Мир, 1984.
Пападимитриу Х., Стайнглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. - М.: Мир, 1985.
Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы: теория и практика. - М.: Мир, 1980.
Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. - М.: Мир, 1979.
Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. - М.: Мир, 1981.
Вирт Н. Алгоритмы + структуры данных = программы. - М.: Мир, 1985.
Басакер Р., Саати Т. Конечные графы и сети. - М.: Мир, 1974.
Оре О. Теория графов. - М.: Наука. - 1968.
Харари Ф. Теория графов. - М.: Мир, 1973.
Зыков А.А. Теория конечных графов. - Новосибирск: Наука, 1969.