我正在学习如何证明某些东西是NP。在托马斯科尔曼的算法书介绍中,如果给出某个问题的解决方案,他会说NP就是NP,你可以在多项式时间内验证它是正确的。
说问题是2x + 9 = 55,让我假装我不知道找到正确的x值需要多长时间,但是解决问题的算法返回了解决方案23.然后显示它是NP ,我是否只需要在等式中插入23,并查看是否需要多项式时间并给我55?感谢。
答案 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中存在问题。
决策问题:您可以将问题变成决策问题吗?在方程问题的情况下,决策问题将是“是否存在x使得2x + 9 = 55?” ?
证书:您能否确定决策问题的答案?同样,在方程问题的情况下,答案可能是x = 23
验证:您可以在多项式时间内验证证书吗?通过多项式时间验证,您知道问题不是NP-Hard。一些验证步骤可能是:x是数字吗? X等于55-9的一半吗?
这就是您所知道的问题完全在NP中的原因。