你好,我很难理解P,NP和多项式时间缩减的主题。 我试图在网上搜索并问我的一些朋友,但我没有得到任何好的答案。
我想问一个关于这个主题的一般性问题:
让p,B中的A,B成为语言(或一组问题) 让C,D成为NP中的语言 接下来哪一个必然是真的(可能超过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=SAT
和A
是问题P,让M_A
成为解决A的多项式时间算法。
我们将证明我们可以在多项式时间内解决SAT(但由于我们假设P!= NP,这是不可能的 - 矛盾,所以f
不存在。)
给定SAT w
的实例,运行w'=f(w)
。运行M_A(w'),并回答相同的问题。
上面显然是多项式的,它总是正确的答案 - 从多项式约简的定义 - f(w)
在A
中,当且仅当w
在C
时1}}。
因此 - 上述算法在多项式时间 - 矛盾中解决了SAT。
(4)也是错误的,因为案例(3)包含在内。