【问题标题】:NP-Complete VS NP-HardNP-完全 VS NP-困难
【发布时间】:2013-12-11 15:46:35
【问题描述】:

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

以下是我的理解

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

上面的定义正确吗?如果是这样,那么问题不是在 NP 中而是在 NP-Hard 中呢?他们不会比 NP-Complete 问题更难,说他们只能在指数时间内解决和验证吗?

【问题讨论】:

  • NP完全问题能否在多项式时间内解决是未知的(价值100万美元)。

标签: algorithm computer-science np-complete np np-hard


【解决方案1】:

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

NP-complete 问题是一个决策问题,所有NP 问题都可以在多项式时间内简化。它们是全班最难的问题NP。

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

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

【讨论】:

    【解决方案2】:

    让我把它简单化。

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

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

    教授很欣赏他们,但说,“任务还没有结束”,并要求他们使用系统实际解决它。

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

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

    然后另一位学生对其进行了数学运算,发现系统需要 2100 / 109 秒来解决它.大约 240 年。

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

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

    【讨论】:

    • 谢谢!想要一个这样的简单解释!
    【解决方案3】:

    您对 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中,这给了我们一个矛盾!

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 不知何故你没有解释什么是NP-hard,但是你将NPC定义为NP-hard和NP之间的交集?那里肯定缺少一些东西
      【解决方案5】:

      你的定义只对 NP-complete 是正确的。

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

      对于 NP-hard,它意味着决策问题 X 具有以下性质:给定解决问题的图灵机,可以将 NP 中的任何问题实例重构(图灵归约)为多项式中 X 的实例时间。通俗地说,这意味着 NP-hard 问题是“至少与 NP 一样难”的问题,或者 X 的解决方案可以应用于 NP 中的每个问题。请注意,问题不必在多项式时间内可以验证,或者根本不需要实际验证。 NP-hard 也包括不可判定和不可识别的问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-09
        • 2014-03-30
        • 1970-01-01
        • 2017-09-19
        • 2016-09-29
        • 2011-09-09
        相关资源
        最近更新 更多