Министерство Образования Российской Федерации
Новосибирский Государственный Технический Университет
Кафедра Прикладной Математики
Курсовая работа
по практикуму на ЭВМ: «Структуры данных и алгоритмы»
Факультет: ПМИ
Группа: ПМ-71
Студентка: Калашникова О.А.
Преподаватель: Еланцева И.Л.
1. Условия задачи.
Известно, что заданный граф - не дерево. Проверить, можно ли удалить из него одну вершину (вместе с инцидентными ей ребрами), чтобы в результате получилось дерево.
2. Анализ задачи.
Дано: <G (V, E), I> – граф (по условию – не дерево)
V – множество вершин
E – множество ребер
I– множество индексов вершин, I={1,2,3,…,n}
Результат:G` (V`, E`) – дерево
V`= V-1
E`= E-n, где n – количество смежных с E ребер
Понятия теории графов, применяемые в данной задачи.
Пусть V – непустое множество, V(2) – множество всех его двухэлементных подмножеств. Пара (V,E), где E – произвольное подмножество множества V(2), называется графом. Элементы множества V называются вершинами графа, а элементы множества E – ребрами. Итак, граф – это конечное множество V вершин и множество E ребер, EV(2).
Дерево – связный граф, не содержащий циклов.
Связный граф – граф, у которого две любые не совпадающие вершины соединены маршрутом.
Теорема: для связности графа необходимо и достаточно, чтобы в нем для какой-либо фиксированной вершины u и каждой другой вершины v существовал (u,v) – маршрут.
ВершинаV и ребро Е называются инцидентными, если V является одним из концов ребра Е, и не инцидентными в противном случае.
Помеченным графомназывают граф, каждой вершине которого однозначно поставлены в соответствие элементы некоторого множества. Чаще всего это множество натуральных чисел.
Пусть V - вершина графа G. Тогда операцию построения графа Н=G-Vназывают удалением вершины V. Построенный в результате этой операции граф Н содержит все ребра множества Е(G) кроме инцидентных вершине V, а V(н)=V(g)\{V}.
Пусть E - ребро графа G. Тогда операцию построения графа Н=G-Eназывают удалением ребра Е. Построенный в результате этой операции граф Н содержит все вершины графа G, а Е(H)=Е(G)\{E}.
Обход графа – это некоторое систематическое прохождение его вершин.
Две вершины vi и vj называются смежными, если существует дуга из vi в vj.
Вершина vi достижима из вершины vj, если существует путь из vj в vi.
Обход в глубину. Стратегия поиска в глубину состоит в том, чтобы, начиная с начальной вершины, идти «вглубь», пока это возможно (есть не пройденные ребра), и возвращаться и искать дугой путь, когда таких ребер нет. Так делается, пока не обнаружены все вершины, достижимые из исходной. Если после этого остаются необнаруженные вершины, выбирается одна из них (как начальная) и процесс повторяется. Так делается до тех пор, пока мы не обнаружим все вершины графа.
Граф может быть однозначно представлен структурой смежности своих вершин. Структура смежности состоит из списков Adj [x] вершин графа, смежных с вершиной х. Списки Adj [x] составляются для каждой вершины графа.
Метод решения:
Поиск уже пройденных вершин (при обходе графа в глубину может возникнуть следующая ситуация: нам необходимо взять вершину, но она уже помечена как пройденная -> граф имеет цикл, значит не удовлетворяет определению дерева).
i=0
повторять
v[i]=0
i=i+1
пока i<n
Проверка графа на связность (идет с помощью компонент связанности графа, т.к. в теории графов – дерево это связный граф):
Повторять
Если, то
{
Повторять
Повторять
Повторять
Если то
Пока
Пока
Если , то
Повторять
Пока
Пока
Пока не просмотрим все вершины графа
3. Структура основных входных и выходных данных.
Выходные данные
Внешнее представление
Граф представляется списком смежности вершин. Он организуется следующим образом:
n
v1 deg v1 v11 v12 v13…v1,deg v1
v2 deg v2 v21 v22 v23…v2,deg v2
……………………………….
vn deg vn vn1 vn2 vn3…vn,deg vn
То есть в заголовке списка – количество вершин графа, далее строки, содержащие номер вершины, степень вершины и номера смежных с ней вершин.
Был выбран именно такой способ представления графа, т.к. он очень прост для ввода пользователем и алгоритмы на списках смежности широко распространены. Матрицы смежности и инцидентности требуют навыков их составления у пользователя, что ограничивает сферы использования программы. Списки ребер просты при вводе, однако серьезно усложняют использование в программе и не столь информативны, как другие представления.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.