NP完全 - 在非确定性多项式时间内可解

时间:2013-12-17 15:31:22

标签: algorithm time-complexity np-complete

在书中写道 - “如果问题A是NP完全,则存在一个非确定性多项式时间算法来解决A”。但到目前为止,我知道'是' - NP完全问题的解决方案可以在多项式时间内“验证”。我真的很困惑。可以使用非确定性多项式时间算法“解决”NP完全问题吗?

2 个答案:

答案 0 :(得分:5)

这两件事情基本相同,并且基于两种不同但相当的NP定义。

NP中的每个问题(语言)必须是:

  1. 通过确定性图灵机在多项式时间内验证。 (如果问题和'验证',您可以回答验证是否在多项式时间内对问题是正确的)。
    示例:给定一个图表,并且您想要检查其中是否存在哈密尔顿路径 - 验证者可以是路径。一旦你拥有它,你可以很容易地检查路径是否确实是哈密尔顿。
  2. 通过非确定性图灵机在多项式时间内求解。 (存在可以多项式解决问题的非确定性图灵机M
  3. 由于NP-Complete的定义 - 如果它是NP-Hard AND并且在NP中是NP完全问题,则每个NP-Complete问题也是NP - 并且两者都是正确的。


    请注意,这两个声明基本上基于NP的两个等效定义:

    1. 如果L中的x L中有z|z||x|M中的多项式并且存在一些在多项式时间x中运行的确定性图灵机 - 对于每个z及其匹配的M(x,z) = true if and only if x is in LL
    2. 如果存在可以解决多项式时间问题的非确定性图灵机,则NP存在问题。形式上,如果存在非确定性图灵机,M(x) = true if and only if x is in L
    3. ,则语言{{1}}在NP中

答案 1 :(得分:3)

查找 NP-complete问题的解决方案可以在非确定性图灵机上的多项式时间内完成。给定NP完全问题的候选解,可以在确定性图灵机上的多项式时间内验证它是否确实是一个解,即检查

所以区别在于找到解决方案并检查解决方案。前者通常需要对NP完全问题进行某种搜索,而后者只是验证变量的赋值。