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