您对 NP-Hard 的定义不正确,它看起来更像(不完全正确)复杂性类 NP 的定义。
什么是复杂度类 NP?
一个计算问题p 属于复杂性类别 NP,如果它可以有效地验证。在复杂性理论中,我们认为采用 多项式时间 的计算是有效的。所以正式的p ∈ NP 如果p 是多项式时间可验证。
在您的定义中,您提到了 多项式时间可解的概念,它对应于复杂性类 P。NP 完全问题是 多项式时间可解,如果并且仅当 P = NP 时。请注意,著名的P vs NP 是计算机科学中最大的开放问题之一,因此目前没有人知道 P = NP 还是 P ⊊ NP,并且说 NP 问题不是多项式时间可解的(尽管它普遍相信确实如此)。
什么是 NP-Hard 问题?
直观地说,NP-Hard 问题是计算问题,至少与 NP 中的问题一样困难。当我们说一个计算问题p 至少和另一个问题q 一样难时,我们实际上是反过来想的——如果我们能在时间T 内解决p,那么我们也可以在时间T 内解决q em>与 T 大致相同(例如,相差一个多项式因子)。
更准确地说,如果存在从q 到p 的polynomial-time reduction,我们说p 至少与另一个问题q 一样难。粗略地说,多项式时间缩减意味着给定一个算法A 解决了p,我们可以通过将A 用作黑盒来构造一个多项式时间算法B(即我们将@ 的时间复杂度视为987654338@ as O(1)) 解决q。
在我们的 NP-Hard 问题中,如果一个 NP-Hard 问题可以在多项式时间中解决,那么 ALL NP 问题可以在中解决>多项式时间(因此 P = NP!)。因此,人们普遍相信 NP-hard 问题不是多项式时间可解的。
什么是 NP 完全问题?
正如您在问题中正确陈述的那样,如果计算问题 p 是 NP-Hard 和 p ∈ NP,则它是 NP-Complete。
不属于 NP 的 NP-Hard 问题?
如果存在一个不属于 NP 的 NP-Hard 问题(据我所知,目前还没有证明此类问题属于此类),则此类问题 比NP-完全问题。
证明:假设我们的主张不正确。让p 成为一个 NP-Complete 问题,至少与另一个问题 q 是 NP-Hard 但不是 NP。因为p 至少和q 一样难,所以我们有一个多项式时间缩减(假设它及时运行P(n))从q 到p。由于p在NP中,因此可以通过某种算法A及时验证T(n),其中T是一个多项式。
现在给定q 的任何实例r,我们可以构造一个算法B,首先将其简化为p 的实例s,然后调用A 来验证s。注意B验证q及时T(P(n)),这是n中的多项式,因此q在NP中,这给了我们一个矛盾!