NP-трудностьВ теории сложности вычислений NP-трудность (недетерминированная полиномиальная трудность по времени) является определяющим свойством класса задач, которые, неформально, «по крайней мере так же сложны, как самые сложные задачи в NP». Простым примером NP-трудной задачи является задача о сумме подмножеств. Формальное определение: задача разрешимости является NP-трудной, если любая задача из NP может быть сведена за полиномиальное время к . Эквивалентно условие требует, чтобы каждая задача в NP могла быть решена за полиномиальное время с оракулом для [1][2]. Как следствие, алгоритм с полиномиальным временем для решения любой NP-трудной задачи даст алгоритмы с полиномиальным временем для всех задач в NP. Считается что алгоритмов с полиномиальным временем для NP-трудных задач не существует, но это не доказано (см. проблему P≠NP)[3]. Более того, класс P, в котором все задачи решаются за полиномиальное время, содержится в классе NP[4]. Некоторые NP-трудные задачи оптимизации могут быть полиномиально аппроксимированы до некоторого постоянного (константного) коэффициента аппроксимации (в частности, в APX) или даже до любого коэффициента аппроксимации (в PTAS или FPTAS). Наименования классов в NP-трудностиNP-трудные задачи не обязательно должны быть элементами класса сложности NP. Поскольку в теории вычислительной сложности класс NP является ключевым, он используется в качестве основы для следующих классов:
ПримерыЗадача о сумме подмножеств: есть ли в заданном наборе целых чисел непустое их подмножество, дающее в сумме ноль? Это задача разрешимости, и она является NP-полной. Задача коммивояжера — оптимизационная задача поиска циклического маршрута с наименьшей стоимостью через все узлы взвешенного графа. Это NP-трудная задача[5]. Проблема остановки — задача, являющаяся NP-трудной, но не NP-полной. Задача звучит: «Дана программа и её ввод, остановится ли программа?» Легко доказать, что проблема остановки NP-трудна, но не NP-полна — булева проблема выполнимости может быть сведена к проблеме остановки путем преобразования её в описание машины Тьюринга, которая пробует все возможные входные данные, и когда она находит те, которые удовлетворяют формуле, она останавливается, а в противном случае входит в бесконечный цикл. Также проблема остановки не содержится в NP, так как все проблемы в NP разрешимы за конечное число операций, а проблема остановки неразрешима. Существуют NP-трудные задачи, которые не являются ни NP-полными, ни неразрешимыми . Например, язык истинных квантифицированных булевых формул[англ.] разрешим в полиномиальном пространстве, но не в недетерминированном полиномиальном времени (если верно NP ≠ PSPACE)[6]. В целом, все известные NP-полные задачи автоматически являются NP-трудными. Области примененияС NP-трудными проблемами сталкиваются чаще всего в таких сферах, как:
Примечания
|