Требуется ли, чтобы NP-трудная задача была вычислимой?
Я так не думаю, но я не уверен.
Требуется ли, чтобы NP-трудная задача была вычислимой?
Я так не думаю, но я не уверен.
Ответы:
Нет, проблема -hard не должна быть вычислимой. Определение является довольно полным: проблема является трудной, если эта проблема, имеющая решение за многократное время, подразумевает, что каждая проблема в имеет решение за многократное время (то есть сокращение до существует для каждой проблемы в .).
В этом случае неисчислимые задачи оказываются бессмысленными: предположим, мы могли бы решить их за полиномиальное время. Затем мы используем доказательство того, что это не вычислимо, чтобы получить, что это и вычислимо, и не вычислимо, противоречие. Из этой лжи мы можем вывести что угодно, а именно, что есть алгоритм полиномиального времени для любой задачи мы рассматриваем.
Например, рассмотрим проблемы остановки . Мы можем уменьшить любой язык A до H следующим образом, предполагая, что у нас есть проверка на полимеризацию f ( s , c ), которая проверяет, является ли c сертификатом для s ∈ A :
Таким образом, с помощью одного вызова многочастичного алгоритма, решающего проблему остановки, мы можем решить любую задачу за полиномиальное время.
Такое сокращение бесполезно, потому что все, что он делает, говорит, если «если ложь, то что-то». Мы уже знаем, что не существует алгоритма polytime для неисчислимых задач.
Похоже, что в этом сообществе существует некоторая путаница по этому вопросу. Я дам подробный ответ в надежде очистить воду и осветить взаимосвязь между вычислимостью и NP-твердостью.
Во-первых, я полагаю, что ясность и ясность в отношении различных определений решит большую часть путаницы.
Строка представляет собой конечную последовательность символов из некоторого фиксированного конечного алфавита.
Проблема решения представляет собой набор строк. (Этот набор обычно бесконечен.) Думайте о проблеме решения как о проверке строк для некоторого свойства: строки со свойством находятся в наборе, а строки без свойства - нет.
Предположим , у нас есть две проблемы , решения, и B . Скажем является полиномиальным временем приводимым к B , если существует некоторый многочлен р ( х ) и алгоритм некоторый алгоритм М такое , что для всех строк ы ,
- Если вы передаете ввод s , M останавливается менее чем за p ( | s | ) шагов (где | s | - длина строки s ) и выводит строку M ( s ) .
- в А тогда и только тогдакогда M ( ы ) в B .
Проблема Решение является NP-трудной , если для каждого НП проблемы решения A , полиномиально сводится к B .
Решение задачи вычислимо, если существует алгоритм , который для всех строк s ,
- Если вы предоставляете вход s , M останавливает и выводит либо «да», либо «нет».
- Выход «да», если в A и «нет» в противном случае.
С помощью приведенных выше определений мы можем сразу уточнить, что, по моему мнению, может быть коренной путаницей в вашем вопросе: ничто в определениях проблемы решения, сокращений или NP-сложности не требует, чтобы проблемы решения были вычислимыми. Определения имеют смысл рассматривать решения проблем как произвольные наборы строк, и эти наборы могут быть действительно очень неприятными.
Это оставляет два вопроса на столе:
На вопрос 1 легче ответить. Есть два особенно важных способа найти невычислимые проблемы решения, которые являются NP-сложными. Первая проблема остановки: Проблема Остановки, , обладает свойством , что каждая вычислимая проблема решения полиномиально сводится к H . Поскольку проблемы NP вычислимы каждая задача NP полиномиально сводится к H , поэтому H является NP-трудной.
Другой важный способ построения невычислимой NP-сложной задачи состоит в том, чтобы заметить, что мы можем объединить любую известную NP-сложную проблему с любой известной невычислимой проблемой. Пусть NP-труден, а B невычислим. Сформируйте решение задачи A ⊕ B следующим образом: A ⊕ B содержит строки вида «0, за которыми следует строка в A » и строки вида «1, за которыми следует строка в B ». A ⊕ B является NP-трудным, потому что мы можем превратить любое уменьшение (любой проблемы) в A в уменьшение к A ⊕ B: просто настроить алгоритм для вывода дополнительного «0» в начале его выходной строки. ⊕ B не является вычислимой, поскольку вычисление A ⊕ B требует принятия решения , какие строки , которые начинаются с «1» в наборе; это невозможно, так как B не вычислимо.
Вопрос 2 значительно сложнее, но на самом деле существуют невычислимые задачи решения, которые не являются NP-сложными (при условии, что P NP). Прекрасный ответ Ювала создает такую проблему решения в явном виде. (Для любого теоретика вычислимости в комнате любой " родовой Cohen 1 0 1 " также поможет.) Я расскажу, почему интуиция "NP-сложные задачи сложна, невычислимые задачи сложнее". " неправильно.
NP-твердость и невычислимость говорят о том, что проблема является «сложной» в очень общем смысле, но они очень разные и не должны смешиваться как одно и то же явление. В частности, NP-жесткость является «положительным» свойством: NP-сложная задача трудна в том смысле, что, имея доступ к шпаргалке для A , вы можете решить сложный класс задач . С другой стороны, не вычислимости «негативный» свойство: не-вычислимая проблема трудно в том смысле , что вы не можете решить А с данным классом ресурсов .
( «Принуждение», кстати, является методом , используемым для получения «Коэн родового» , что я говорил. Чтобы быть очень очень расплывчато, заставляя это общий способом производства вещей , которые являются «общими» в том , что они имеют нет положительных свойств и каждого отрицательного свойства. Вот почему форсирование может напрямую привести к проблеме, которая не является ни вычислимой, ни NP-трудной.)
Нет. NP-Hard означает, что он такой же сложный или сложный, как самые сложные NP-проблемы. Интуитивно понятно, что быть неисчислимым намного сложнее, чем NP.
Википедия:
Есть проблемы с решением, которые являются NP-сложными, но не NP-завершенными, например, проблема остановки.
Все знают, что это не вычислимо
problem()
функции, которую мы можем вызвать.
Для полноты приведем следующую теорему:
Существует невычислимый язык, который не является NP-сложным тогда и только тогда, когда P NP.
Если P = NP, то любой нетривиальный язык (отличающийся от ) является NP-сложным (упражнение), и, в частности, любой невычислимый язык является NP-сложным.
Теперь предположим, что P NP. Пусть T i будет некоторым перечислением всех машин Тьюринга. Мы будем строить необходимый язык L поэтапно. На каждом этапе мы будем держать { 0 , 1 , ? } раскраска { 0 , 1 } ∗, которую мы также обозначим через L ; здесь 0 означает, что мы решили, что строка находится не в L , 1 означает, что мы решили, что строка находится в L , и ?означает, что мы еще не решили. Все, кроме конечного числа строк будут окрашены ,
На шаге мы думаем о T i как о машине, которая либо принимает свой ввод, отклоняет его или никогда не останавливается. Если T i не всегда останавливается, то мы ничего не делаем. Если T i всегда останавливается, мы находим строку x такую, что L ( x ) = ? и установите L ( x ) : = 0, если T i ( x ) принимает, и L ( x ) : = 1, если T отклоняет.
На шаге мы рассматриваем T i как машину, вычисляющую (возможно) частичную функцию на своем входе. Если T i не является итоговым, или если оно итоговое, но не выполняется за полиномиальное время, или если оно итоговое, но его диапазон конечен, мы ничего не делаем. Если T i является полным, выполняется за полиномиальное время и имеет бесконечный диапазон, то мы находим строку x такую, что L ( T i ( x ) ) = ? , Если x ∈ S A T (то есть, если x encodes a satisfiable CNF) then we set , and otherwise we set .
After infinitely many steps, we get a coloring of which we complete to an actual language in an arbitrary way.
The resulting language isn't computable: step ensures that doesn't compute it. It also isn't NP-hard, but here the reasoning is a bit more delicate. Suppose that is a polytime reduction from SAT to . If the range of is finite then we can turn into a polytime machine deciding SAT, by listing the truth table of on the range of . This is impossible by the assumption PNP. Thus has infinite range, but then step rules out its being a reduction from SAT to .
A language is NP-hard if for every we have that is polynomial-time reducible to . The acceptance problem for nondeterministic Turing machines
is undecidable and is NP-hard. For consider an . is decided by some nondeterministic Turing machine with polynomial time complexity. A poly-time reduction from to is given by
Я думаю, что заставляет людей думать, что не существует неисчислимой NP-трудной проблемы, так это то, что они упускают момент, когда NP-твердость является нижней границей сложности проблемы, а не верхней границей их твердости, такой как P или NP.
Язык L, являющийся NP-сложным, означает, что он выше языка в NP, и это так. Теперь, если вы понимаете это, нужно показать, что существуют произвольно более сложные проблемы.
Позволять быть языком Рассмотрим алгоритмы, дополненные черным ящиком, которые они могут использовать для определения членства в, Давайте обозначим их как, Легко видеть, что проблема остановки для, не в ,
В теории computablity это называется переход из и обозначается , Такстрого. И ничто не мешает нам повторить это: