NP中语言(问题)和P语言(问题)之间的多项式时间减少

时间:2014-06-16 06:31:31

标签: algorithm complexity-theory reduction

你好,我很难理解P,NP和多项式时间缩减的主题。 我试图在网上搜索并问我的一些朋友,但我没有得到任何好的答案。

我想问一个关于这个主题的一般性问题:

让p,B中的A,B成为语言(或一组问题) 让C,D成为NP中的语言 接下来哪一个必然是真的(可能超过1)

  1. 从A到B的多项式时间减少
  2. 从A到C的多项式时间减少
  3. 从C到A的多项式时间减少
  4. 从C到D的多项式时间减少
  5. 提前感谢您的回答。

1 个答案:

答案 0 :(得分:4)

(1)为真(B={}B={all words}除外),以下多项式减少:

Let w_t be some word such that B(w_t)=true, and w_f be some word such that B(w_f)=false.
Given a word w: Run A(w). If A(w)=true, return w_t - otherwise, return w_f

以上是多项式减少,因为所有操作都是多项式的,当且仅当B(f(w))=true时,减少的输出才会产生A(w)=true

(2)再次为真,同样减少(同样,如果你可以假设有一个w_t和一个w_f,如上所述。)

(3)这是错误的,假设P!= NP。

假设存在这种减少,并将其设为f:Sigma*->Sigma*
检查问题C=SATA是问题P,让M_A成为解决A的多项式时间算法。

我们将证明我们可以在多项式时间内解决SAT(但由于我们假设P!= NP,这是不可能的 - 矛盾,所以f不存在。)

给定SAT w的实例,运行w'=f(w)。运行M_A(w'),并回答相同的问题。
上面显然是多项式的,它总是正确的答案 - 从多项式约简的定义 - f(w)A中,当且仅当wC时1}}。
因此 - 上述算法在多项式时间 - 矛盾中解决了SAT。

(4)也是错误的,因为案例(3)包含在内。