繁体   English   中英

NP-Complete VS NP-Hard

[英]NP-Complete VS NP-Hard

我试图理解NP-Complete和NP-Hard之间的区别。

以下是我的理解

NP-Hard问题是在多项式时间内无法解决的问题,但可以在多项式时间内验证。
NP-Complete问题是NP中的问题,也是NP-Hard问题。

以上定义是否正确? 如果是这样,那么问题不是NP而是NP-Hard。 难道它们不会比NP完全问题更难,说它们只能在指数时间内得到解决和验证吗?

NP问题(不是NP-Hard问题)是一个可以在多项式时间内验证的决策问题 也许它们在多项式时间内是可解的,因为P中的所有问题也都在NP

NP-complete问题是一个决策问题 ,所有NP问题都可以在多项式时间内减少。 它们是NP级中最难的问题。

NP-hard类是至少与NP-complete问题一样难的问题。 它们不一定是决策问题。 鉴于我们不知道NP = P与否,我们很难说我们是否可以在多项式时间内验证NP-hard问题。

例如,最大集团的决策问题(给图表G一个整数K ,以判断是否存在具有至少K个顶点的完整图表)是NP问题。 它也是NP-completeNP-hard 但是,最大团问题(在给定图中找到最大团)不是NPNP-complete ,因为它不是决策问题。 我们可以说它是NP-hard ,因为它至少与最大集团问题的决策版本一样难。

NP-Hard是问题的下限。 不可能的问题也是NP-Hard。 NP-Complete意味着它是NP-Hard并且同时是NP-Solvable。

可以在多项式时间内验证的问题是NP中问题的定义之一。

你对NP-Hard的定义是不正确的,它看起来更像是复杂性类NP的(不是精确正确的)定义。


什么是复杂性类NP?

如果可以有效地验证,则计算问题p在复杂度类NP中。 在复杂性理论中,我们认为计算需要多项式时间才能有效。 所以正式p ∈ NP如果p多项式时间验证

在你的定义中,你提到了概念多项式时间可解 ,它对应于复杂性类P.当且仅当P = NP 时, NP-Complete问题是多项式时间可解的 请注意,着名的P vs NP是计算机科学中最大的开放性问题之一,因此目前没有人知道P = NP还是P⊊NP,并且不能说NP问题不是多项式时间可解的(尽管它人们普遍认为是这样的。


什么是NP-Hard问题?

直观地说,NP-Hard问题是计算问题, 至少与 NP中的问题一样难 当我们说计算问题p至少与另一个问题q一样困难时,我们实际上反过来考虑它 - 如果我们能够在时间T中求解p ,那么我们也可以在时间上解决q T 大致相同 (比如,不同)通过多项式因子)。

更确切地说,我们说p至少是很难,因为另一个问题q如果有一个多项式时间减少qp 粗略地说,多项式时间减少意味着给定一个求解p的算法A ,我们可以通过使用A作为黑盒来构造多项式时间算法B (即我们将A的时间复杂度视为O(1) )来解决q

在NP-Hard问题的情况下,如果NP-Hard问题可以在多项式时间内求解,那么所有 NP问题都可以在多项式时间内求解(因此P = NP!)。 因此,人们普遍认为 NP难问题不是多项式时间可解的。


什么是NP完全问题?

正如您在问题中正确指出的那样,如果计算问题是NP-Hard p ∈ NP ,则计算问题p是NP-Complete。


NP中没有的NP难问题?

如果存在不在NP中的NP-Hard问题(据我所知,在这个时刻没有证明这类问题属于这一类),这样的问题比NP-Complete问题更难

证明:假设我们的主张不正确。 p是NP-Complete问题, 至少与 NP-Hard的另一个问题q 一样难,但在NP中则不然。 由于p至少与q一样硬,因此我们从qp有多项式时间减少(比如它在时间P(n) )。 由于p在NP中,因此可以通过一些算法A在时间T(n)中验证,其中T是多项式。

现在给出q任何实例r ,我们可以通过首先将其减少到p的实例s来构造算法B ,然后调用A来验证s 注意, B在时间T(P(n))验证q ,这是n的多项式,它遵循q在NP中,这给我们一个矛盾!

您的定义仅适用于NP-complete。

从底部开始:P是多项式时间内某些确定性图灵机可以解决的问题类。 NP是一类问题,可以通过一些非确定性图灵机在多项式时间内解决(或者其解可以通过确定性图灵机在多项式时间内验证)。

至于NP-hard,它意味着具有以下属性的决策问题X:给定一个解决问题的图灵机,可以将NP中问题的任何实例重构(图灵减少)到多项式时间的X实例。 非正式地,这意味着NP难问题是“至少和NP一样难”的问题,或者X的解决方案可以应用于NP中的每个问题。 请注意,问题不必在多项式时间内可验证,或者实际上可以验证。 NP-hard也包括不可判断和无法识别的问题。

我们不知道NP-hard是否包含可以在多项式时间内解决的问题(P?= NP问题)。 目前,还没有找到针对NP难问题的单一多项式时间解决方案,但也没有证明这种解决方案不存在。 如果找到某个NP难问题X的解决方案,则意味着P = NP,因为NP中任何问题的任何实例都可以在多项式时间内转换为X的实例(因为NP-hard的图灵减少属性)问题)然后通过X的多项式时间解在多项式时间内求解。

让我简单一点。

教授给他的学生一个问题,并要求他们提供一个有效的算法。

第二天,他的一些聪明的学生已经破解了算法来解决它。 它的复杂度为O(2 n 现在,所有人都很高兴他们有算法来获得解决方案。 一切都很好看。

教授对此表示赞赏,但他们说, “任务尚未结束” ,并挑战他们实际使用系统解决问题。

因此,他们立即尝试在系统中模拟它。 一名学生说,他的系统具有1 GIPS(每秒1000,000,000条指令)的极佳速度,并且可以在几分之一秒内解决问题。 因此,他们编写算法并尝试执行它。

然后他们从数据集的100个输入开始,然后运行它。 他们惊讶地发现程序运行并运行并运行并且不会停止。

然后另外一个学生做就可以了数学和揣摩的是,该系统将采取2 十分之百 9秒解决它。 大约2 40左右。

第二天,当程序仍在运行时,教授说: “很好。亲爱的学生们,这就是我们所谓的NP-Hard 。系统可能会给出解决方案一天,但我担心我们不会在那里看到它“

但是,同样的问题,一旦它产生一个解决方案,如果我们能够在实际时间内验证NP-Hard问题的解决方案,那么它就被称为NP-Complete 例如,子集的总和是NP-Hard问题。 但是,一旦我们得到子集解,我们就可以在多项式时间内轻松检查它。 所以它变成了NP-Complete。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM