证明NP的复杂性

时间:2012-12-01 04:55:37

标签: algorithm proof np

我正在学习如何证明某些东西是NP。在托马斯科尔曼的算法书介绍中,如果给出某个问题的解决方案,他会说NP就是NP,你可以在多项式时间内验证它是正确的。

说问题是2x + 9 = 55,让我假装我不知道找到正确的x值需要多长时间,但是解决问题的算法返回了解决方案23.然后显示它是NP ,我是否只需要在等式中插入23,并查看是否需要多项式时间并给我55?感谢。

3 个答案:

答案 0 :(得分:4)

是;如果您可以在多项式时间内检查每个正确的 此问题的每个实例的每个错误答案的正确性那么问题出在NP。

答案 1 :(得分:2)

将信息添加到@Mehrdad回答:

请注意,NP代表非确定性多项式时间 - 这意味着根据定义 - 当且仅当它可以通过Non-deterministic Turing Machine多项式求解时,问题出现在NP中。

相当于说在标准计算模型(RAM机器/确定性图灵机)中 - 您可以在多项式时间内验证答案(如@Mehrdad回答)。 wikipedia page for equivalence of definitions

中描述了等价的证明

<强>加成:
“图灵机上的所有可验证的(多项式的)也是可以多项式求解的”问题“问题”是非确定性图灵机上可以解决的一切,也可以在多项式确定性图灵机上求解“也是当量。 答案尚不清楚,问题被称为P vs NP problem,这是计算机科学中最重要的开放性问题。

答案 2 :(得分:1)

虽然上面的问题涵盖了NP意识的最后一步,也许是最可识别的一步,但有3个基本步骤可以证明NP中存在问题。

  1. 决策问题:您可以将问题变成决策问题吗?在方程问题的情况下,决策问题将是“是否存在x使得2x + 9 = 55?” ?

  2. 证书:您能否确定决策问题的答案?同样,在方程问题的情况下,答案可能是x = 23

  3. 验证:您可以在多项式时间内验证证书吗?通过多项式时间验证,您知道问题不是NP-Hard。一些验证步骤可能是:x是数字吗? X等于55-9的一半吗?

这就是您所知道的问题完全在NP中的原因。