232 Глава 6. Основы теории сложности вычислений
Историю современной теории сложности вычислений при-
нято отсчитывать с работ [Кук75b, Кар75a], в которых были
заложены основы теории N P-полноты и доказано существо-
вание вначале одной, а затем (в работе [Кар75a]) достаточно
большого числа (а именно, 21) естественных N P-полных задач.
В неоднократно цитировавшейся монографии [82] (вышедшей
на английском языке в 1979 г.) приводится список известных
к тому времени N P-полных задач, насчитывавший уже более
300 наименований. К настоящему времени количество извест-
ных N P-полных задач выражается четырехзначным числом,
и постоянно появляются новые, возникающие как в самой ма-
тематике и теории сложности, так и в таких дисциплинах, как
биология, социология, военное дело, теория расписаний, теория
игр и т. д. (см. [Wik07, CK]). Более того, как мы уже отмечали
в разделе 1.1, для подавляющего большинства задач из класса
N P в конечном итоге удается либо установить их принадлеж-
ность классу P (т. е. найти полиномиальный алгоритм), либо
доказать N P-полноту. Одним из наиболее важных исключе-
ний являются задачи типа дискретного логарифма и фактори-
зации, на которых основаны многие современные криптопро-
токолы.
Именно этим обстоятельством объясняется важность про-
блемы P
?
= N P. Безуспешным попыткам построения полино-
миальных алгоритмов для N P-полных задач были посвящены
усилия огромного числа выдающихся специалистов в данной
области (в конце раздела мы вкратце расскажем о некоторых
частичных результатах, полученных в обратном направлении,
т. е. попытках доказать неравенство P 6= N P). Ввиду этого
можно считать, что NP-полные задачи являются трудноре-
шаемыми со всех практических точек зрения, хотя, повторяем,
строгое доказательство этого составляет одну из центральных
открытых проблем современной математики.
Прежде всего необходимо иметь хотя бы одну N P-полную
задачу. Честь быть первой выпала задаче 16 «SAT», «откры-