
- •Предмет изучения дисциплины "Структуры и алгоритмы обработки данных на эвм". Абстрактные типы данных. Классификация структур данных.
- •Хеширование. Хеш-функции. Коллизии и методы их устранения. Сферы применения хеширования, достоинства метода.
- •Деревья: поисковое дерево, идеально - сбалансированное дерево, сбалансированное поисковое дерево, в-дерево. Рекурсивные методы прохождения деревьев. Алгоритмы построения деревьев.
- •Сферы применения графов. Способы машинного представления графов, их достоинства и недостатки.
- •Алгоритмы поиска в графе: поиск в ширину, поиск в глубину.
- •Эйлеров путь, эйлеров цикл, эйлеров граф. Алгоритм нахождения эйлерова цикла.
- •Нахождение кратчайших расстояний. Алгоритм Дейкстры.
- •Алгоритмы с возвратом.
- •Алгоритм нахождения гамильтоновых циклов в графе.
- •Метод ветвей и границ.
- •Остовные деревья графа. Алгоритмы нахождения дерева минимального веса: алгоритм Прима, алгоритм Крускала.
- •Эффективность алгоритмов и её составляющие. Алгоритмы и их сложность. Доминирование. О-функции и их особенности.
- •Правила для определения сложности. Функции, часто используемые для оценки сложности алгоритмов (список функционального доминирования). Сравнение алгоритмов с различными порядками сложности.
- •Анализ алгоритмов и определение их сложности по управляющим структурам. Контрольные замеры. Критический взгляд на о-анализ. (ограниченность о-анализа).
- •Полиномиальные алгоритмы и труднорешаемые задачи. Два аспекта труднорешаемости задач. Недетерминированное вычисление и класс np.
- •Теория np-полных задач. Структура класса np.
- •Методы решения np-полных задач. Применение теории np-полноты для анализа задач.
Полиномиальные алгоритмы и труднорешаемые задачи. Два аспекта труднорешаемости задач. Недетерминированное вычисление и класс np.
пОЛИНОМИАЛЬНЫЕ АЛГОРИТМЫ И ТРУДНОРЕШАЕМЫЕ ЗАДАЧИ: Первые результаты о трудно-решаемости задач, а именно классические результаты о неразрешимости (существует некоторый класс задач, которые не разрешимы) были получены Тьюрингом. Он доказал, что некоторые задачи неразрешимы в том смысле, что вообще не существует алгоритма их решения. Доказано, что для некоторых задач не существует решения. К примеру, Тьюринг доказал, что невозможно указать алгоритм, который по произвольной программе определял бы: остановится ли программа на произвольно-заданном ходе или нет («проблема остановки»). Также известно большое число других неразрешимых задач; к ним относятся десятая проблема Гилберта ((не?)-разрешимость диофантовых уравнений в целых числах), несколько задач о покрытии плоскости равными частями.
Поскольку эти задачи не могут быть решены никаким алгоритмом, а тем более полиномиальным, то, значит, они трудно-решаемы в самом сильном смысле. Было также показано, что некоторые задачи не могут быть решены за полиномиальное время даже с помощью недетерминированного вычислительного устройства – вычислительного устройства, обладающего способностью параллельно выполнять неограниченное количество независимых вычислений.
Все известные в настоящее время задачи, трудно-решаемость которых доказана, попадают в один из классов – они либо вовсе неразрешимы, либо трудно-решаемы недетерминированным вычислительным устройством.
Два оспектА ТРУДНОРЕШАЕМОСТИ ЗАДАЧ:Первый аспект трудно-решаемости состоит в том, что для отыскания решения требуется экспоненциальное время. Второй аспект заключается в том, что искомое решение настолько велико, что не может быть представлено в виде выражения, длина которого была бы ограничена полиномом от длины входа.
Трудно-решаемостью этого вида нельзя пренебрегать и очень важно её своевременно обнаружить – в большинстве случаев её наличие ясно из постановки задачи. Этот аспект трудно-решаемости можно рассматривать как указание на то, что постановка задачи не реалистична, поскольку мы запрашиваем информации больше, чем когда-либо сможем использовать.
Такая ситуация возникает в задаче коммивояжера. Мы будем изучать задачи, длина решения которых ограничена полиномиальной функцией от длины входной информации, то есть те задачи, которые применимы на практике.
Теория np-полных задач. Структура класса np.
Теория NP-полных задач: Основу теории NP-полных задач заложил С. Кук в своей работе опубликованной в 1971 году – из этой теории выделяем 4 основных положения:
- Кук подчеркнул важность понятия сводимость за полиномиальное время – то есть сводимость, которая выполняется с помощью алгоритма с полиномиальной временной сложностью – если одна задача сводится за полиномиальное время к другой, то любой полиномиальный алгоритм решения второй задачи может быть превращен в полиномиальный алгоритм решения первой задачи;
- Кук обратил внимание на класс задач распознавания свойств – это класс NP, которые могут быть решены за полиномиальное время недетерминированным вычислительным устройством. К классу задач распознавания свойств относятся задачи, решение которых можно дать в виде ответа – «да» или «нет». Задачей распознавания свойств есть задача, решением которой могут быть либо ответ «да», либо ответ «нет». Большинство неподдающихся решению задач, которые встречаются на практике, после переформулировки их в виде задач распознавания свойств попадают в этот класс. Класс NP – это класс всех задач распознавания свойств, которые при разумном кодировании могут быть решены недетерминированными алгоритмами за полиномиальное время, а точнее недетерминированный алгоритм проверяет за полиномиальное время экспоненциальное число вариантов;
- Кук доказал, что одна конкретная задача из класса NP, называемая задачей о выполнимости, обладает свойством, что любая задача из числа задач NP класса может быть сведена к ней за полиномиальное время. Если задача о выполнимости может быть решена за полиномиальное время, то и любая задача из класса NP также полиноминально разрешима. Если какая-то задача из класса NP трудно-решаемая, то и задача о выполнимости также должна быть трудно-решаемой;
- Кук предположил, что и другие задачи из класса NP могут быть самыми трудными представителями класса NP. Позднее, для относительно широкого круга задач было доказано, что они эквивалентны задаче о выполнимости. Этот класс получил название класса NP-C (Nondeterministic-Polynomial Complete – недетерминированное полиномиальное время NP) полных задач. Класс задач NP – полноты (NP-C), определяется задачами с полным недетерминированным полиномом временем решения. Класс задач NP-C таков, что ни для одной из его задач не удалось найти алгоритм полиномиальной сложности. Класс NP обладает свойством, что построение эффективного алгоритма решения хотя бы для одной из NP-C задач будет означать построение эффективного алгоритма решения всех задач класса NP.