Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Алгоритмы и сложность. Часть 2.docx
Скачиваний:
23
Добавлен:
09.08.2019
Размер:
132.19 Кб
Скачать

§8 Важнейшие классы сложности задач.

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

Определение 1. Алгоритм называется полиномиальным , если его временная сложность в худшем случае T(n) ограничена сверху некоторым полиномом от n, т.е. T(n)=O(p(n)), где p(n)=amnm+am-1nm-1+…+a1n+a0, ai∈ℝ, m∈ℕ.

Определение 2. Алгоритм называется экспоненциальным, если существует k∈ℝ , k ≥ 1 и существует бесконечное множество значений n∈ℕ таких, что T(n) ≥ .

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

«полиномиальность» = «эффективность»

Определение 3. Классом сложности P называется класс всех тех алгоритмических задач, которые допускают решение хотя бы одним полиномиальным алгоритмом.

Пример1. Бинарное отношение R на множестве М, |M|=n называется гамильтоновым, если существует упорядочение (i1,i2,…,in) элементов из М, ijM, j= , такое, что

(i1,i2)R,…,(in-1,in)R (1)

В настоящее время неизвестно полиномиального алгоритма с временной сложностью T(n)=O(p(n)) для проверки гамильтоновости бинарного отношения R на множестве M, такого, что |M|=n.

Простейшая идея требует проверки условий (1) для n! перестановок (i1,i2,…,in) элементов из M, что превосходит по временной сложности любой полином от n.

Задачей распознавания называется задача, имеющая ответ «да» или «нет».

Практически все наиболее важные модельные задачи в теории алгоритмов и сложности вычислений допускают переформулировку в виде задач распознавания.

Определение 4. Говорят что задача распознавания П1 полиномиально сводится к задаче распознавания П2, если существует полиномиальная функция (алгоритм) f, перерабатывающая массивы входных данных I1 задачи П1 в массивы входных данных I2=f(I1) для задачи П2 так, что для любого I1 ответ в задаче П1 совпадает с ответом в задаче П2 для входных данных I2=f(I1).

Под недетерминорованным алгоритмом распознавания (Н-алгоритмом) понимают алгоритм, в котором разрешены недетерминированные операторы вида goto l1 or l2. Таким образом для каждого массива входных данных имеется не один, а несколько (в общем случае – экспоненциальное число) путей, по которым может развиваться вычисление.

(*) Н-алгоритм распознавания, по определению, выдает окончательный ответ «да», если существует хотя бы один путь развития вычисления, на котором выдается ответ «да», и окончательный ответ «нет» если ни на одном пути вычисления не получается ответ «да».

Н-алгоритм является математической абстракцией и, в отличие от детерминированных алгоритмов( т.е. алгоритмов, определенных с помощью формальных алгоритмических моделей – см: §1) не соответствует реально существующим вычислительным машинам.

Пусть имеется массовая задача распознавания П, частная задача p П, p имеет массив входных данных I, |I| = n, то есть |p|= n –размер задачи p.

Работа H – алгоритма над задачей p имеет 2 этапа

  1. Некоторый «угадывающий модуль» недетерминированно (произвольно), генерирует путь развития вычисления («подсказку»), (например, в виде слова c(I), кодирующего направление ветвлений в операторах вида goto l1 or l2).

  2. Детерминированно проверяется, будет ли для массива I на выбранном пути вычисления c(I) получен ответ «да».

  3. Выпадает окончательный ответ по принципу (*) – см. выше.

Пример 2. Пусть П – задача проверки гамильтоновости бинарного отношения R на множестве M, |M| = n. (см. пример 1). Для любой задачи pП массив входных данных I – матрица бинарного отношения R на множестве M, |I| = |p| = n2.

Рассмотрим этапы работы H – алгоритма над задачей p.

  1. Недетерминированно генерируется слово c(I) = i1i2in – перестановка элементов множества M.

  2. Детерминированно проверяются для I и c(I) условия (1).

  3. Выдается окончательный ответ «да» только если хотя бы для одного слова c(I) условия (1) выполняются.

Замечание 1. Изложенное выше понятие H- алгоритма является интуитивным, но может быть формализовано, например, с помощью модели недетермированной машины Тьюринга (см. [4], [5] и [6]).

Рассмотрим время работы H – алгоритма T(n):

На 1 этапе: t1(I) = |c(I)| время на генерирование «подсказки» c(I).

На 2 этапе: t2(I) – время проверки на пути вычисления, определенном подсказкой с(I).

T(n) = max|I|=n(t1(I)+t2(I))

Таким образом H – алгоритм является полиномиальным, если T(n)=O(p(n)), то есть и длина подсказки t1(I) = |c(I)| и время проверки t2(I) ограничены некоторым полиномом p(n) от n = |I|.

Определение 5. Классом сложности NP называется класс всех тех алгоритмических задач, которые допускают решение хотя бы одним полиномиальным H – алгоритмом.

Таким образом класс NP представляет собой класс всех переборных задач разрешения, решаемых за полиномиальное время.

Очевидно, что любой детермированный алгоритм можно считать H – алгоритмом с единственной подсказкой c(I) (т. е. единственным путем вычисления). Если при этом детермированный алгоритм полиноминален, то t1(I) = |c(I)| - длина пути вычисления и t2(I) – время проверки ограничены полиномом p(n) и детерминированный полиномиальный алгоритм можно считать полиномиальным H – алгоритмом.

Отсюда следует включение классов .

Есть много причин считать это включение строгим, но этот факт пока не доказан и представляет собой известную проблему теории алгоритмов

Определение 6. Задача распознавания называется NP - полной, если она принадлежит классу NP и любая задача из NP сводится к ней полиноминально.

К настоящему времени количество известных NP – полных задач выражается четырехзначным числом и постоянно появляются новые. Ни для одной из NP - полных задач не удалось на данный момент построить полиномиальный алгоритм, т. е. доказать её принадлежность классу P (это доказало бы гипотезу P = NP)