每个NP难题都可以计算吗?


Answers:


15

不,一个ñ PNP难的问题不一定是不可计算的。定义相当完整:问题LLN P-NP难,如果该问题具有多时间解意味着N PNP中的每个问题都具有一个多时间解(即,将N P中的每个问题都归结为LL,)。NP

这样,无可争议的问题就变得空洞无力了:假设我们可以在多项式时间内解决一个问题。然后,我们使用证明它是可计算且不可计算的矛盾是无可辩驳的证明。从这个错误中,我们可以得出任何结论,即对于正在考虑的任何N PNP问题,都有一个多项式时间算法。

例如,考虑停机问题^ hH。我们可以在任何减少Ñ PNP语言AħH如下,假设我们有一个polytime检查˚F 小号Ç f(s,c)其中检查是否Çc为证书小号sA

  • 给定输入ss
  • 构建(但不运行)图灵机中号M这需要输入Xx尝试每个证书Çc和暂停,如果Çc是一个证明书,证明小号sA
  • 返回H M x H(M,x)(即,如果输入x暂停M,则返回true )Mx

因此,只需调用解决停顿问题的多项式算法,就可以解决多项式时间内的任何N PNP问题。

这种减少是没有用的,因为它所做的只是告诉是否“如果为假,则为某物”。我们已经知道,没有针对不可解决问题的多重时间算法。


7
“定义相当完整”,但是答案中的引号后面没有什么。

我对此有疑问。我可以想象有一个函数可以在某些适当的约束下解决最大的程序停止问题,但是我可以想象这个函数仍然不是可计算的(从某种意义上说,即使有无限长的时间我们也永远找不到它) 。然而,如果我们不知何故有解决的办法,它甚至没有清楚,我认为它应该一定能解决所有的NP难问题。因此,或者此答案中的逻辑不成立(意味着不确定[!] =不可计算),或者我的推理存在缺陷(可能)。那有什么缺陷呢?
Mehrdad

12
这个答案大部分都是错误的,包括您对NP的定义:如果“对于每个NP问题B,B都将折乘为A,则问题A为NP困难。” 即一样的东西“如果A是聚时间,则P = NP”。(后者是前者的结果,反之亦然。)尤其是,几乎肯定存在一些无法计算的问题,这些问题也很难解决NP问题。我还没有弄清楚细节,但是在足够通用的集合(从强制意义上来说)中的成员资格问题应该可以解决。具体来说,暂停设置是NP难的,但是要减少设置。

7
可考虑从聚时间减少到B是这样的:它是一个程序,在多项式时间内运行,但它具有特殊能力的查询,在一个单一的步骤,一个Oracle这个问题B的答复情况不管是否有一个针对B的多重时间算法,或者甚至B是否可计算,仍然提出以下问题仍然有意义:假设oracle正确地回答了它的问题(一步即可),所讨论的程序是否在多项式时间内运行并正确解决问题A的实例?

2
@MikeHaskel您的oracle类比只有在查询oracle之后,程序必须以与该oracle相同的答案停止时才是正确的。否则,co-SAT简化为SAT:查询预言值并取反。在某些归约概念(例如Turing归约)中,这是可以接受的,但是在标准的多时间归约中,甚至在多合一归约中,它不是。

16

在这个问题上,这个社区似乎有些混乱。我将给出详细的答案,以期清理水面并阐明可计算性与NP硬度之间的关系。

首先,我相信对所涉及的各种定义保持清晰明确将解决许多困惑。

是从一些固定的有限字母表字符的有限序列。

一个决策问题是一组字符串。(该集合通常是无限的。)将决策问题视为测试某些属性的字符串:具有该属性的字符串在集合中,而没有该属性的字符串则不在。

假设我们有两个决策问题,一个。假设存在多项式p x ),并且算法M有算法M使得A对于所有字符串sA多项式时间可归约B ABABp(x)Ms

  • 如果为M提供输入s,则M停止的步数少于p | s |步(其中| s |是字符串s的长度),并输出字符串M MsMp(|s|)|s|s s M(s)
  • 当且仅当 M s )时s A中sAM(s)是在B

如果对于每个NP决策问题A,决策问题B都是NP难题BAA是可多项式化为B的多项式时间则。B

如果存在算法M,则对于所有字符串s,决策问题都是可计算Ms

  • 如果为M提供输入s,则M暂停并输出“是”或“否”。MsM
  • 如果sA中,则输出为“ yes”,否则为“ no”。sA

通过以上定义,我们可以立即弄清我认为可能是您的问题的根源:决策问题,减少量或NP硬度的定义中没有要求决策问题是可计算的。这些定义将决策问题视为任意字符串集是很有意义的,而这些集确实确实很讨厌。


剩下两个问题:

  1. 定义使不可计算的函数可能具有NP困难性。实际上有不可计算的NP硬函数吗?
  2. 有一种直觉,说一个问题是NP难的,那是说很难解决的。说它是不可计算的就好比说它“真的很难”解决。那么,所有的不可计算的问题都是NP问题吗?

问题1更容易回答。有两种特别重要的方法可以找到难以解决的NP问题决策问题。首先是停机问题:停机问题,^ h,具有每个属性可计算的决策问题是多项式时间还原到^ h。由于NP问题是可计算的,因此每个NP问题都是多项式时间可归约为H,因此HHHHH是NP难的。

建立不可计算的NP困难问题的另一种重要方法是观察到,我们可以将任何已知的NP困难问题与任何已知的不可计算问题结合起来。令A为NP-hard,而B为不可计算。形成决策问题如下:包含表单的那些字符串“0,接着在一个字符串 ”和那些形式的“1,随后在一个字符串 ”。是NP难题,因为我们可以把(任何问题的)的任何减少到成还原成ABABABABABAAB:只需调整算法即可在其输出字符串的开头输出一个额外的“ 0”。是非可计算的,因为计算需要决定哪些以“1”开始在琴弦组; 这是不可能的,因为B是不可计算的。ABABB


问题2相当棘手,但实际上存在一些不可争议的决策问题,这些问题并非NP难的(假设P NP)。尤瓦尔的好答案明确地构造了这样的决策问题。(有关在房间里,任何“科恩任何可计算理论家Π 0 1Π01 -generic”会做的伎俩,也是如此。)我会打破为什么直觉“NP难的问题是很难的,非可计算的问题更难“ 是错的。

NP硬度和不可计算性都表示一个问题在很一般的意义上是“困难的”,但是它们是非常不同的,不应将其归为同一类现象。具体地说,NP硬度是“正性”属性:从某种意义上说,NP难题A很难解决,只要获得A的备忘单,就可以解决一类难题AA。在另一方面,非可计算为“负面”属性:非可计算的问题,一个硬的感觉,你可以不解决一个给定的资源类的AA

(“强制”的方式,是用于生产“科恩的技术Π 0 1通用的”我提到。要非常非常模糊,迫使是制作东西的一般方式是“通用的”,因为它们具有没有积极的性质,也没有任何消极的性质。这就是为什么强迫会直接产生一个既不可计算又难于解决NP问题的问题。)Π01


2
您不能通过对角线化来构建不难理解的不确定语言吗?对角线针对所有决策者和SAT的所有多时减少。
Yuval Filmus

1
@YuvalFilmus可能有效,是的。我认为写出为什么对角线消除SAT可能减少的时间的细节类似于显示强制起作用的味道,所以我没有考虑这些术语。

1
@YuvalFilmus我刚才也添加了一个澄清,即您必须假设P NP:我的证明中肯定有一个步骤显示为“在NP中有问题但在P中没有问题”。

1
@aelguindy我不确定最容易证明的方法是什么。我提到了强制技术,该技术非常通用且功能强大。我是从人们那里学到的,而不是从教科书上学到的,所以我个人并不知道有关强迫的大量参考资料。然而,正如尤瓦尔指出的那样,强迫可能是过大的杀伤力:一些涉及对角化的更直接的论点可能行得通。Soare的“递归枚举集和度”是一本教科书,如果您想熟悉它,可以涵盖很多这样的论点风格。再次强调,大部分可能是矫over过正。...

1
@aelguindy另外,如果您将一系列决策问题视为一个拓扑空间,则可能可以推敲Baire类别定理以产生证明。该定理与强迫有密切关系,但是它更老,更直接。

11

不。NP-Hard表示它比最难的NP问题同样困难。凭直觉,无法计算将使它比NP困难得多。

维基百科:

存在NP难但NP不完全的决策问题,例如停止问题。

每个人都知道这是不可计算的


4
请注意,尽管某些不可计算的问题(例如暂停问题)是NP难题,但这并不意味着所有不可计算的问题都是NP难题。请参阅我对jmite答案的评论。NP硬度是一个积极特性:它表示您的问题的答案可以帮助解决NP问题。保持NP硬性意味着该问题在一定程度上是困难的。并非所有困难的问题都是NP难题。

@MikeHaskel:拥有暂停问题的解决方案,可以将所有问题减少到P *暂停问题的难度。–
Joshua

1
@约书亚:那没有道理。这就像一个非证明的片段。对于一个在解决方案中具有有限位数的问题,您甚至意味着什么?为什么您认为这适用于所有无法解决的问题?“ P *停顿”是什么意思?“通过...的第n位减少”的其余部分是什么?
user2357112支持Monica 2016年

1
@Joshua:看来核心问题是您假设每个问题都与图灵机相对应。并非每个问题都与图灵机相对应。没有problem()可以调用的函数。
user2357112支持Monica

1
You should probably move this to chat or something
Destructible Lemon

9

For completeness, let us prove the following theorem:

There exists an uncomputable language which is not NP-hard if and only if PNP.

If P=NP then any non-trivial language (one which differs from ,{0,1},{0,1}) is NP-hard (exercise), and in particular any uncomputable language is NP-hard.

Now suppose that PNP. Let TiTi be some enumeration of all Turing machines. We will construct the required language LL in stages. At each stage we will keep a {0,1,?}{0,1,?} coloring of {0,1}{0,1} which we also denote by LL; here 00 means that we have decided that the string is not in LL, 11 means that we have decided that the string is in LL, and ?? means that we haven't decided yet. All but finitely many strings will be colored ??.

In step 2i2i, we think of TiTi as a machine which either accepts its input, rejects it, or never halts. If TiTi doesn't always halt then we don't do anything. If TiTi always halts then we find a string xx such that L(x)=?L(x)=?, and set L(x):=0L(x):=0 if Ti(x)Ti(x) accepts and L(x):=1L(x):=1 if Ti(x)Ti(x) rejects.

In step 2i+12i+1, we think of TiTi as a machine computing a (possibly) partial function on its input. If TiTi isn't total, or if it is total but doesn't run in polynomial time, or if it is total but its range is finite, we don't do anything. If TiTi is total, runs in polynomial time, and has infinite range, then we find a string xx such that L(Ti(x))=?L(Ti(x))=?. If xSATxSAT (that is, if xx encodes a satisfiable CNF) then we set L(x):=0L(x):=0, and otherwise we set L(x):=1L(x):=1.

After infinitely many steps, we get a {0,1,?}{0,1,?} coloring of {0,1}{0,1} which we complete to an actual language in an arbitrary way.

The resulting language LL isn't computable: step 2i2i ensures that TiTi doesn't compute it. It also isn't NP-hard, but here the reasoning is a bit more delicate. Suppose that TiTi is a polytime reduction from SAT to LL. If the range of TiTi is finite then we can turn TiTi into a polytime machine deciding SAT, by listing the truth table of LL on the range of TiTi. This is impossible by the assumption PNP. Thus TiTi has infinite range, but then step 2i+12i+1 rules out its being a reduction from SAT to LL.


3

A language LL is NP-hard if for every LNPLNP we have that LL is polynomial-time reducible to LL. The acceptance problem for nondeterministic Turing machines

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

is undecidable and is NP-hard. For consider an LNPLNP. LL is decided by some nondeterministic Turing machine MM with polynomial time complexity. A poly-time reduction ff from LL to ANTMANTM is given by

f(x)=M,x

f(x)=M,x

3

I think what causes people to think there is no uncomputable NP-hard problem is that they miss the point that NP-hardness is a lower bound on the hardness of a problem, not an upper bound on their hardness like P or NP.

A language L being NP-hard means that it is above language in NP and that is. Now if you understand this what need is to show that there are arbitrary harder problem.

Let AA be a language. Consider algorithms augmented with a black-box that they can use to deciding membership in A. Let's denote them by CA. It is easy to see that the halting problem for CA, HaltCA is not in CA.

In computablity theory this is called jump of A and is denoted by A. So A<A strictly. And nothing stops us from repeating this: A<A<A<A<...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.