21
Класс
Р или P - TIME состоит из всех задач, решаемых за
полиномиальное время. Класс
NP или NP - TIME, состоит из
всех задач решаемых за полиномиальное время на недетермини-
рованной машине Тьюринга, способной параллельно выполнять
неограниченное количество независимых вычислений. Это озна-
чает, что если вариант решения проверяется, то он может быть
проверен на такой машине Тьюринга за полиномиальное время.
Конечно, это не означает решить задачу, так как нет гарантии,
что машина проверяет правильно отгаданное решение. Чтобы
проверить все варианты решения и найти нужное (т.е. чтобы
решить задачу из NP класса), по-видимому, необходимо затра-
тить экспоненциальное время. Примером такой задачи является
известная «задача рюкзака»: имеется множество из n целых чи-
сел
A=(a
1
,…,a
n
) и целое число S. Требуется определить, сущест-
вует ли подмножество чисел из
А такое, чтобы их сумма была
бы равна
S. Эта задача принадлежит к классу NP задач, так как
для любого подмножества чисел из
А легко проверить равна ли
их сумма
S. Найти же такое подмножество чисел, сумма кото-
рых равна
S гораздо труднее. Существует 2
n
таких подмножеств
и проверка их всех имеет временную сложность
τ
=О(2
n
).
Класс
NP включает класс P, так как любая задача, полино-
миально решаемая на детерминированной машине Тьюринга,
может быть полиномиально решена и на недетерминированной
22
машине Тьюринга. Еще никто не доказал, что
NP=P также как и
то, что
.
Основной метод, используемый для доказательства близо-
сти по сложности задач, состоит в сведении задач друг к другу с
помощью
конструктивного преобразования. Известно много
примеров такого преобразования. В 1971 году Кук доказал тео-
рему, согласно которой любая задача о выполнимости имеет
свойство, что каждая другая задача из
NP класса может быть
сведена к ней за полиномиальное время. В тоже время Карп до-
казал, что многие хорошо известные комбинаторные задачи,
включая задачу «о коммивояжере» (выбрать маршрут, посеще-
ния разных городов так, чтобы в каждый город попасть только
один раз) столь же трудны, как и задача о выполнимости.
Класс
NP Complete (NP - полных) задач включает все са-
мые трудные
NP задачи. Если какая - либо из NP полных задач
окажется в классе
P, то будет доказано равенство NP=P
Класс
С
0
NP состоит из всех задач, являющихся дополни-
тельными для некоторых задач из
NP. Если задача в NP имеет
вид: «определить существует - ли решение», то задача из
CoNP
имеет вид «показать, что решений нет». На сегодняшний день не
известно верно - ли равенство CoNP=NP, но есть задачи, при-
надлежащие пересечению классов
CoNP и NP т.е. CoNP
∩
NP.
Примером такой задачи является «задача о разложении чисел»:
дано целое число n, определить существуют - ли делители p и q,
такие что
n=pq. Эта задача нашла плодотворное применение в
криптологии. При этом, задача нахождения делителей
p и q
сложнее, чем задача установления разложимости числа
n (раз-
ложимость
n можно установить проверкой равенство n=pq при
выбранных
p и q, что достаточно просто сделать)
Класс
PSPACE состоит из задач, требующих полиноми-
альных объемов машинной памяти, но не обязательно решаемых
за полиномиальное время. Этот класс включает классы
CoNP и
NP (CoNP - Complete и NP.Complete), но есть в нем задачи, ко-
торые труднее чем
CoNP(CoNP - complete) и NP(NP - complete).
Класс
PSPACE - complete (полных) задач состоит из задач,
имеющих свойство, что если какая-нибудь из них окажется при-