真的..我这周二将进行毕业考试的最后一次测试,这是我从未能理解的事情之一。我知道一个 NP 问题的解可以在多项式时间内验证。但是确定性与此有什么关系呢?
如果你能解释一下 NP 完全问题和 NP 难问题得名的由来,那就太好了(我相当确定我理解它们的含义,只是不明白它们的名称与其实际含义有什么关系)。
如果这很简单,那我很抱歉,我就是看不懂 (-:
感谢大家!
真的..我这周二将进行毕业考试的最后一次测试,这是我从未能理解的事情之一。我知道一个 NP 问题的解可以在多项式时间内验证。但是确定性与此有什么关系呢?
如果你能解释一下 NP 完全问题和 NP 难问题得名的由来,那就太好了(我相当确定我理解它们的含义,只是不明白它们的名称与其实际含义有什么关系)。
如果这很简单,那我很抱歉,我就是看不懂 (-:
感谢大家!
一类可以由确定性图灵机在多项式时间内解决的问题。
一类可以由非确定性图灵机在多项式时间内解决的问题(也可以由确定性图灵机在多项式时间内验证解答)。
一类问题是“至少与NP中最难的问题一样难”。严格来说,一个问题在NP-Hard中当且仅当有一个NP完全问题可以在多项式时间内通过图灵可约归到它;(同样:如果可以通过具有该问题的oracle的oracle机器在多项式时间内解决)。这个名字的来源相当明显。
既属于NP又属于NP-Hard的问题集合。关于这个命名,“连维基百科”也不确定它为什么被命名为这样。
我们从“非确定性”开始。一个确定性机器一次只能处于一个状态。我们可以制造它们。非确定性机器是一个理论构造,可以同时处于多个状态。(这里有类似于量子计算的相似之处,但对我们来说可能会误导,不予考虑。)
如果我们想用确定性机器解决一个问题,我们启动它,然后通过一系列步骤尝试找到一个问题的解。如果我们使用非确定性机器模型,它可以同时进行所有可能的步骤。
我们将涉及的问题集合称为决策问题:给定一个问题陈述,或者有解或者没有解。找到一个解或报告不存在。例如,假设您有一组逻辑语句:A或非B,B或C或D,非D或A或B,...。针对任意一个集合,您能够找到所有变量的真值,使得所有语句都为真吗?
现在,让我们考虑P 。假设我们通过n来表示问题的规模。规模可以是旅行商问题中的城市数量,在上面的问题中是逻辑语句的数量,等等。 针对特定的n,该问题需要特定的资源才能在给定系统上解决。 现在,如果我们加倍资源或计算能力,那么我们能够解决的问题规模会怎样变化?如果问题具有多项式复杂度,也就是说在P中,问题规模会增加一定比例。它可能加倍,或者增加40%,或10%。相反,如果它具有指数复杂度,问题规模会增加一定数量。我们通常认为P问题是可解的,指数问题是不可解的,因为随着问题规模的增大,这些问题变得非常困难,尽管这是一个简化。从非正式的角度来看,多项式复杂度是顺序地解决问题,而指数复杂度则必须查看所有可能的组合。
假设我们可以在确定性计算机上用多项式时间解决问题,则该问题属于P类问题。假设我们可以在非确定性计算机上用多项式时间解决它,这与能够在确定性计算机上多项式时间验证建议的解决方案是一回事。那么该问题属于NP类问题。关键在于,我们无法制造真正的非确定性计算机,因此一个问题属于NP类并不意味着解决它是实际可行的。NP问题被称为NP(非确定性多项式时间)是因为它可以通过非确定性图灵机在多项式时间内解决。