在书中写道 - “如果问题A是NP完全,则存在一个非确定性多项式时间算法来解决A”。但到目前为止,我知道'是' - NP完全问题的解决方案可以在多项式时间内“验证”。我真的很困惑。可以使用非确定性多项式时间算法“解决”NP完全问题吗?
答案 0 :(得分:5)
这两件事情基本相同,并且基于两种不同但相当的NP定义。
NP中的每个问题(语言)必须是:
M
)由于NP-Complete的定义 - 如果它是NP-Hard AND并且在NP中是NP完全问题,则每个NP-Complete问题也是NP - 并且两者都是正确的。
请注意,这两个声明基本上基于NP的两个等效定义:
L
中的x
L
中有z
字|z|
,|x|
是M
中的多项式并且存在一些在多项式时间x
中运行的确定性图灵机 - 对于每个z
及其匹配的M(x,z) = true if and only if x is in L
,L
M(x) = true if and only if x is in L
答案 1 :(得分:3)
查找 NP-complete问题的解决方案可以在非确定性图灵机上的多项式时间内完成。给定NP完全问题的候选解,可以在确定性图灵机上的多项式时间内验证它是否确实是一个解,即检查。
所以区别在于找到解决方案并检查解决方案。前者通常需要对NP完全问题进行某种搜索,而后者只是验证变量的赋值。