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

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]

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

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

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

31. Задача коммивояжера. Алгоритм поиска субоптимального решения.::::::::::::::::::::::::::

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

__Для решения задачи нам необходимо найти гамильтонов цикл минимального общего веса.

__Для сложных сетей число гамильтоновых циклов непомерно велико. В полном графе с 20-ю вершинами существует приблизительно 6,1*1016 ЦГ

__Применяют алгоритм поиска субоптимального решения - Алгоритм ближайшего соседа

__Дан нагруженный граф с множеством вершин V. Цикл, полученный в результате работы, будет совпадать с конечным значением переменной маршрут, а его длина — конечное значение переменной w.

ПРИМЕР (Лекция 6(25))

32. Теория алгоритмов. Вычислительная сложность алгоритмов. Классификация алгоритмов по функции сложности (эффективность алгоритмов). Распознавательные задачи. Сложностные классы задач P, NP, NP- полные задачи. Соотношение классов P, NP и NP-полные.

__Теория алгоритмов - классифицирует задачи по сложности. При этом классифицируются лишь распознавательные задачи.

ВЫЧИСЛ СЛОЖНОСТЬ АЛГОР(оценка сложности алгоритм):::::

__Предположим, что функции f(n) и g(n) измеряют эффективность двух алгоритмов, их обычно называют функциями временной сложности. Будем говорить, что порядок роста функции f(n) не больше, чем у g(n), если найдется такая положительная константы С, что | f(n) | <= С | g(n) |. Этот факт обозначают как f(n) = O(g(n))

Например: сложность алгоритма О(n3)

ЭФФЕКТИВНОСТЬ АЛГОРИТМОВ:::

РИСУНОК(Лекция 5 12 слайд)

РАССПОЗНАВАТЕЛЬНые ЗАДАЧи:::

___Распознавательная задача – это задача отвечающая на вопрос: обладают ли входные данные некоторым свойством. В нашем случае: входные данные – граф, свойство – является ли граф Гамильтоновым?

СЛОЖНОСТНЫЕ КЛАССЫ:

__Сложностный класс P: существует алгоритм A, решающий задачу за полиномиальное время.

__Сложностный класс NP — существует алгоритм А проверяющий предложенное решение, за полиномиальное время.

__Задача о гамильтоновом цикле состоит в выяснении, имеет ли заданный граф G гамильтонов цикл относится к NP-классу.

NP-gлные задачи :::::

__Наиболее серьезная причина полагать, что P ≠ NP — существование NP полных задач.

__Неформально!!!, задача Q сводится к задаче Q, если задачу Q можно решить за полиномиальное время для любого входа, считая известным решение задачи Q′ для какого-то другого входа. Например, задача решения линейного уравнения сводится к задаче решения квадратного уравнения.

__NP-полная задача — это такая задача из класса NP, к которой можно свести любую другую задачу из класса NP.

__NP-полные задачи образуют подмножество «самых сложных» задач в классе NP. Если для любой NP-полной задачи будет найден полиномиальный алгоритм решения, то и любая другая задача из класса NP может быть решена за полиномиальное время.

__Все перечисленные NP-задачи являются NP-полными. В том числе задача о цикле Гамильтона.

СООТНОШЕНИЕ P и NP :::::

__Всякая задача из P принадлежит NP.

__Таким образом, класс NP включает в себя класс P. В данное время, неизвестно совпадают ли классы P и NP, но большинство специалистов полагает, что нет.

__Если окажется, что Р= NP

1) NP задачи окажутся решаемы за разумное время.

2) Существует ряд задач, которые намеренно используют задачи экспоненциальной сложности (т.е. предполагая, что задачу решить не возможно). Например, В криптографии существует раздел о шифровании с открытым ключом, расшифровать которые практически не возможно. Если вдруг P = NP, то многие секреты перестанут быть таковыми.

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