NP-Полная задача
[math]\displaystyle{ cal NP }[/math]-Полная задача ([math]\displaystyle{ cal NP }[/math]-Complete problem) - такая задача [math]\displaystyle{ A }[/math] из класса [math]\displaystyle{ \cal NP }[/math] всех задач, недетерминированно разрешимых за полиномиальное время, что любая задача из [math]\displaystyle{ \cal NP }[/math] полиномиально сводится к [math]\displaystyle{ A }[/math]. Если требование принадлежности [math]\displaystyle{ A }[/math] классу [math]\displaystyle{ \cal NP }[/math] не рассматривается, то используется термин [math]\displaystyle{ \cal NP }[/math]-трудная задача.
Найдется немного научных терминов, так быстро завоевавших широкую известность, как понятие "[math]\displaystyle{ {\cal NP} }[/math]-полная задача". За короткий промежуток времени с момента введения этого понятия С.Куком в начале 70-х годов оно стало символом тех трудностей, которые встречаются на пути создания достаточно общих и эффективных методов решения задач дискретной математики. [math]\displaystyle{ {\cal NP} }[/math]-полные задачи являются "самыми трудными" в классе [math]\displaystyle{ {\cal NP} }[/math]. Если какая-нибудь [math]\displaystyle{ {\cal NP} }[/math]-полная задача может быть решена за полиномиальное время, то и любая задача из [math]\displaystyle{ {\cal NP} }[/math] полиномиально разрешима, а если какая-то задача из [math]\displaystyle{ {\cal NP} }[/math] труднорешаема, то и любая [math]\displaystyle{ {\cal NP} }[/math]-полная задача является труднорешаемой. При этом, для того чтобы доказать [math]\displaystyle{ {\cal NP} }[/math]-полноту некоторой задачи из [math]\displaystyle{ {\cal NP} }[/math], достаточно показать, что какая-то из [math]\displaystyle{ {\cal NP} }[/math]-полных задач полиномиально сводится к ней.
Вопрос о взаимоотношении классов [math]\displaystyle{ {\cal P} }[/math] и [math]\displaystyle{ {\cal NP} }[/math] имеет фундаментальное значение, но все еще открыт. Известно, что [math]\displaystyle{ {\cal P}\subseteq {\cal NP} }[/math] и если [math]\displaystyle{ L\in {\cal NP} }[/math], то существует такой полином [math]\displaystyle{ p(n) }[/math] и ДМТ [math]\displaystyle{ M }[/math], что [math]\displaystyle{ L }[/math] допускается на [math]\displaystyle{ M }[/math] с временной сложностью [math]\displaystyle{ O(2^{p(n)}) }[/math]. Однако до сих пор не доказано, содержит класс [math]\displaystyle{ {\cal NP} }[/math] труднорешаемые задачи или нет, т.е. [math]\displaystyle{ {\cal NP\setminus P}\neq \emptyset }[/math] или [math]\displaystyle{ {\cal NP=P} }[/math]. Вместе с тем известно, что в предположении [math]\displaystyle{ {\cal P}\neq {\cal NP} }[/math] класс [math]\displaystyle{ {\cal NP} }[/math] не просто содержит два непересекающихся подкласса: класс [math]\displaystyle{ {\cal P} }[/math] и класс [math]\displaystyle{ {\cal NP} }[/math]-полных задач, а также должен включать задачи, не принадлежащие ни одному из этих подклассов (т.е. при [math]\displaystyle{ {\cal P}\neq {\cal NP} }[/math] должны существовать задачи из [math]\displaystyle{ {\cal NP} }[/math], которые неразрешимы за полиномиальное время и не являются [math]\displaystyle{ {\cal NP} }[/math]-полными).
Известна [math]\displaystyle{ {\cal NP} }[/math]-полнота сотен задач.
Среди них:
(Гамильтонов цикл). Имеет ли данный неориентированный граф гамильтонов цикл?
(Раскрашиваемость). Является ли данный неориентированный граф [math]\displaystyle{ k }[/math]-раскрашиваемым?
(Множество вершин, разрезающих контуры). Имеет ли данный ориентированный граф [math]\displaystyle{ k }[/math]-элементное множество вершин, разрезающих все его контуры, т.е. содержащих хотя бы по одной вершине каждого из них?
(Множество дуг, разрезающих контуры). Имеет ли данный ориентированный граф [math]\displaystyle{ k }[/math]-элементное множество дуг, разрезающих все его контуры, т.е. содержащих хотя бы по одной дуге каждого из них?
(Ориентированный гамильтонов цикл). Имеет ли данный ориентированный граф ориентированный гамильтонов цикл?
(Разбиение). Существует ли разбиение данного конечного множества элементов, имеющих неотрицательный вес, на два подмножества, равных по суммарному весу составляющих их элементов?
(Изоморфизм неориентированному подграфу). Содержит ли данный неориентированный граф [math]\displaystyle{ G }[/math] подграф, изоморфный данному неориентированному графу [math]\displaystyle{ H }[/math]?
(Остовное дерево ограниченной степени). Существует ли в данном неориентированном графе остовное дерево, в котором все вершины имеют степень не более [math]\displaystyle{ k }[/math]?
(Минимальный эквивалентный по достижимости ориентированный граф). Можно ли удалить из данного ориентированного графа часть дуг так, чтобы отношение достижимости между вершинами не изменилось, но результирующий граф содержал бы не более [math]\displaystyle{ k }[/math] дуг.
(Самый длинный путь). Имеется ли в данном неориентированном графе простой путь длины не меньше [math]\displaystyle{ k }[/math]?
(Доминирующее множество). Существует ли в данном неориентированном графе доминирующее множество, состоящее из не более [math]\displaystyle{ k }[/math] вершин?
(3-раскрашиваемость). Можно ли данный неориентированный граф раскрасить в три цвета?\addtolength{\baselineskip}{-0.2pt}
(Нумерация графа по Гранди). Можно ли сопоставить с вершинами данного ориентированного графа [math]\displaystyle{ G=(V,A) }[/math] различные неотрицательные числа таким образом, чтобы для каждого [math]\displaystyle{ p\in V }[/math] число [math]\displaystyle{ F(p) }[/math], сопоставленное с вершиной [math]\displaystyle{ p }[/math], совпадало с наименьшим целым числом, не принадлежащим множеству [math]\displaystyle{ \{ F(q):q\in V, (p,q)\in A\} }[/math]?
(Минимум суммы квадратов). Может ли данное конечное множество [math]\displaystyle{ A }[/math] элементов, имеющих неотрицательный размер [math]\displaystyle{ S(a) }[/math], быть разбито на [math]\displaystyle{ k }[/math] подмножеств [math]\displaystyle{ A_1,\ldots, A_k }[/math] так, чтобы [math]\displaystyle{ \sum^{k}_{i=1}\left( \sum_{a\in A_i} s(a)\right)^2\leq t }[/math], где [math]\displaystyle{ k,t }[/math] --- заданные положительные числа?
(Расщепление множества). Существует ли разбиение данного конечного множества [math]\displaystyle{ A }[/math] на два таких, что ни одно из них не содержит ни одного из элементов заданного семейства подмножеств [math]\displaystyle{ A }[/math]?
См. также Задача о вершинном покрытии, Задача о выполнимости, Задача о клике, Задача о неэквивалентности регулярных выражений, Задача о разбиении, Задача о точном покрытии 3-множествами, Задача о трехмерном сочетании, Классы [math]\displaystyle{ \cal P }[/math] и [math]\displaystyle{ \cal NP }[/math], Задача легко разрешимая, Метод локальной замены, Метод построения компонент, Задача распознавания свойств, Метод сужения задачи, Полиномиальная сводимость (трансформируемость), [math]\displaystyle{ \cal NP }[/math]-полная задача, Труднорешаемая задача.
Литература
[Ахо-Хопкрофт-Ульман],
[Гэри-Джонсон],
[Касьянов/95]