Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
06.02.2016
Размер:
166.4 Кб
Скачать

3. Классификация задач по сложности

Задачи, как и алгоритмы принято классифицировать по сложности. Множество всех распознавательных задач, для которых существует полиномиальный разрешающий алгоритм, образуют класс Р. Ясно, что распознавательные трудноразрешимые задачи не принадлежат классу Р. Класс NP – это множество распознавательных задач, которые могут быть разрешены за полиномиальное время на недетерминированной машине Тьюринга (НМТ). Оракул предлагает решения, которые после проверки верификатором приобретают «юридическую» силу. Таким образом, задачи класса NP являются «полиноминально проверяемыми».

Например, в задаче коммивояжера оракул предлагает некоторую перестановку всех вершин графа, а верификатор проверяет, образует ли эта перестановка гамильтонов цикл графа. Ясно, что такую проверку можно выполнить с полиномиальной сложностью – надо лишь проверить смежность соседних вершин. Построить одну перестановку вершин тоже можно с полиномиальной сложностью. Оба шага решения задачи полиномиальные, поэтому задача коммивояжера принадлежит классу NP. Трудноразрешимой ее делает факториальное число повторений этих шагов. Следует отметить, что такую двухшаговую процедуру поиска решения можно применить к любой распознавательной задаче полиномиальной сложности.

Полиномиальные по сложности алгоритмы относят к классу P-сложных. Среди экспоненциальных выделяют алгоритмы, основанные на переборе, и их выделяют в класс NP-сложных (т.е. формально возможно существование экспоненциальных алгоритмов, основанных не на переборе. Например, n!, растущий быстрее, чем ). КNP-сложным относятся, например, задачи линейного целочисленного программирования, составление расписания, поиск кратчайшего пути в лабиринте и т.д. Обратим внимание, что все это дискретные задачи.

Например, булевская задача о рюкзаке:

Ее можно решить, перебирая булевские n-мерные векторы-варианты. Число вариантов равно . Т.е. при большихn задача труднорешаемая, а далее, с учетом ограниченных возможностей вычислительных средств – практически неразрешимая. Но к классу NP относятся и неразрешимые задачи, например, десятая проблема Гильберта: “Существует ли алгоритм, который по данному полиному p(, ... ,) c целыми коэффициентами распознает, имеет ли уравнениеp=0 решение в целых числах”. Доказано, что такого алгоритма в принципе не существует, хотя можно методом перебора попытаться решить эту задачу. Если ограничиться областью поиска | xi X, то сложность его составляет .

Классическая задача о коммивояжере (k1): Есть конечный набор городов C={,, ... ,} и расстояний между нимиd(,). Необходимо найти упорядоченный набор этих городовтакой, что

(1)

Т.е. надо найти путь обхода всех n городов (без повторного посещения) минимальной длины.

Это NP-сложная задача; поиск решения требует проверки n! перестановок n городов. Сложность задачи O(n!) (еще раз напомним, что n! растет быстрее, чем ). При этом не обязательно выполняется правило треугольника:

Рис.1. Задача о коммивояжере.

Проиллюстрированная конкретная задача имеет решение < ,,, ,>, определяющее минимально возможный маршрут длиной 27.

Выделим в классе NP-сложных задач задачи распознавания свойств, которые имеют два решения – “да” или “нет”.

Видоизменим задачу о коммивояжере (т.е. сформулируем задачу k2):

Условие: Задано множество городов C={, ... ,} и расстоянийd(ci, cj) между ними, а также граница В длины маршрута обхода городов.

Вопрос: Существует ли маршрут, проходящий через все города из C, длина которого не превосходит В? Т.е. существует ли перестановка такая, что

(2)

Будем исходить из того очевидного факта, что задачи распознавания обладают той же сложностью, что и задача оптимизации (k1); поэтому выводы о сложности второй задачи применимы и к задачам оптимизации.

Можно представить следующую схему решения задачи распознавания свойств на примере задачи k2 :

1. Предъявление некоторого маршрута (стадия угадывания).

2. Проверка: является ли он решением, т.е. соответствует ли условиям задачи, а по длине – не превосходит B. Т.е. определение ответа – “да” или “нет” (стадия проверки).

Очевидно, что процедуру проверки можно представить алгоритмом полиномиальной временной сложности. Стадия же угадывания порождает экспоненциальную сложность. Такие алгоритмы, состоящие из указанных двух стадий, называют недетерминированными.

Отсюда – класс NP определяется как класс всех задач типа распознавания, которые могут быть решены недетерминированными (Nnondeterministic) алгоритмами за полиномиальное (Ppolinomial) время.

Тогда все алгоритмы класса P можно считать подмножеством множества NP, или детерминированными алгоритмами. Тогда гипотетическая картина класса NP-сложных задач может быть представлена таким образом (рис.2):

Рис.2. Классы сложности NP и P.

Соседние файлы в папке 2_semestr_lection