Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers v.1.0.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
501.37 Кб
Скачать

28. Алгоритм определения компонент связности в неориентированном графе.

Любой максимальный связный подграф (не содерж. в других связных подграфах) графа G называется компонентой связности.

Обозначения:

u или v — вершины, (u,v) — ребро;

num — кол-во компонент связности

comp[v] — массив для каждой вершины хранит номера компонент связности, которым принадлежит данная вершина.

DFS(v) — процедура поиска в глубину.

Итог: массив comp[v] содержит число связности для каждой вершины.

1. begin

2. Задание графа // Ваш интерфейс

3. for (v ∊ V)

do comp[v]=0 // все вершины Ï КС

4.num=0 //начальное кол-во КС 0.

5 . for (v ∊ V) цикл по всем вершинам

6. {

7. if comp[v]=0 then Если v Ï КС

8. { num=num+1; DFS(v) }

9. }

10. Интерфейс для вывода числа КС и всех КС

11. end

12.Procedure DFS(v)

13. begin

14.comp[v]=num // вершина v Î КС num

15.for ( u: (v,u) ∊ E) // по смежным с v

16.{ if comp[u] = 0 then DFS(u) }

17. end

29. Эйлеров путь в графе. Эйлеров цикл. Теорема о существовании эйлерова цикла. Алгоритм нахождения эйлерова цикла и его вычислительная сложность.

___Эйлеровым путем в графе называется произвольный путь, проходящий через каждое ребро графа в точности один раз.

___Если v1 = vm+1, то такой путь называется эйлеровым циклом. Задача существования эйлерова пути в заданном графе была решена Эйлером в 1736 году, и представленное им необходимое и достаточное условие существования такого пути считается первой в истории теоремой теории графов.

___Теорема. Эйлеров путь в графе существует тогда и только тогда, когда граф связный и содержит не более чем две вершины нечетной степени.

___Эйлеров цикл в графе существует тогда и только тогда, когда степени всех вершин четны.

АЛГОРИТМ НАХ ЭЙЛЕРОВА ЦИКЛА::

__Исходные данные: связный граф G = <VE> без вершин нечетной степени, представленный списками ЗАПИСЬ [v],

v Î V.

____Результаты: Эйлеров цикл, представленный последовательностью вершин в стеке СЕ.

ВЫЧИСЛ СЛОЖНОСТЬ:::

___каждая итерация главного цикла либо помещает вершину в стек CT и удаляет ребро из графа, либо переносит вершину из стека CT в стек CE. Таким образом, число итераций этого цикла — О(m). В свою очередь число шагов в каждой итерации ограничено константой.

__Т.о. общая сложность алгоритма есть О(m).

30. Гамильтонов цикл в графе. Достаточные условия существования цикла Гамильтона: Дирака, Оре, Поша. Алгоритм с возвратом для поиска гамильтонова пути. Оценки вычислительной сложности алгоритма.

___Гамильтоновым называется путь, проходящий в точности один раз через каждую вершину графа.

___В отличие от эйлеровых путей не известно ни одного простого необходимого и достаточного условия для существования гамильтоновых путей и это несмотря на то, что эта задача — одна из самых центральных в теории графов.

___Не известен также полиномиальный алгоритм, который проверял бы существование гамильтонова пути в произвольном графе (т.е. используя число шагов, ограниченное многочленом от числа n вершин в графе).

ДОСТ УСЛОВ ДИРАКА::::::

Условие Дирака: Пусть - число вершин в графе р ≥ 3; если степень каждой вершины d(x) ≥ р/2, то граф называется графом Дирака.

Каждый граф Дирака обязательно гамильтонов.

Граф Дирака – Гамильтонов

Гамильнов граф - но НЕ граф Дирака

p=6,

p/2=3

k=2

ДОСТ УССЛ ОРЕ::::::::::::

Условие Оре: Если для любой пары несмежных вершин x,y выполнено неравенство d(x)+d(y) > = p (сумма степеней любых двух несмежных вершин не меньше общего числа вершин в графе), то граф называется графом Оре.

Всякий граф Оре обязательно гамильтонов.

Граф Оре – Гамильтонов

Гамильнов граф - но НЕ граф Оре

p=6,

d(x)+d(y)=4<6

ДОСТ УСЛ ПОША ::::::: Введем функцию Поша f(x) целого неотрицательного аргумента x, такую что функция f(x) в каждом целом неотрицательном х принимает значение, равное кол-ву вершин графа, степень которых не превосходит х. Функция Поша следующего графа:

ТАБЛИЦА(л-6(8))

Графом Поша называется граф , удовлетворяющий условиям

1) для 1 £ х < (p 1)/2 выполняется неравенство f(x) <x ;

2) если (p-1)/2 - целое число, то при x=(p-1)/2 имеет место f(x)<(p-1)/2

Каждый граф Дирака и граф Оре – граф Поше

___Каждый граф Поша обязательно гамильтонов. Простой цикл на большом числе вершин графом Поша не явл., но, конечно, явл. гамильтоновым графом.

АЛГОРИТМ С ВОЗВРАТОМ:::::

___Данные: Граф G = <VE>, представленный списками инцидентности ЗАПИСЬ[v], v Î V.

__Результаты: Список всех гамильтоновых циклов графа G.

___Массив Dop[v] – метка, показывающей включена ли вершина в рассматриваемый маршрут. Если Dop[v]=1, то вершина НЕ включена в маршрут.

__Массив X[n] –содержит последовательность вершин образующих маршрут.

___Dop[v], X[n] –глобальные массивы

__Рrocedure ГАМИЛЬТ(k) - генерация всех гамильтоновых циклов, являющихся расширением последовательности X[1], . . ., X[– 1]

СЛОЖНОСТЬ АЛГОРИТМА::::::::

__для большинства приложений число шагов алгоритма с возвратом хотя и будет меньше, чем в случае полного перебора, однако же в наихудшем случае растет по экспоненте с возрастанием размерности задачи.

___Вопрос: если известно, что некоторая задача алгоритмически разрешима, то неудача в разработке для нее полиномиального алгоритма явл. следствием неумения конкретного разработчика или следствием каких-то свойств самой задачи?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]