algorithm - NP vs NP-Complete vs NP-Hard —说明什么?

  显示原文与译文双语对照的内容

vs NP-Complete vs NP-Hard的区别是什么?

我知道网络上的很多资源。 我想阅读你的解释,原因是它们可能不同,然后又出现了,或者它在那里,我不知道。

时间:

我假设你正在寻找直观的定义( 技术定义是技术性的,需要一些时间来理解) 。 让我们从定义NP开始。

决策问题:回答是或否的问题。

,一个可以在多项式时间内解决的决策问题。 也就是说,给定问题的一个实例,回答是或者否可以在多项式时间内决定。

用两种颜色,所以没有边是 monochromatic,: 给一个图连接 G 示例,它的顶点能被 colored. 算法:从一个任意顶点开始,将它的红色和它的所有相邻的蓝色并继续。 当你运行我们的顶点时停止,或者你被迫使它的两个端点的颜色相同。

在多项式 time, NP: 一个决策的问题,这个问题答案是肯定的有为它的样张的实例,可以在核实。 这意味着如果有人给我们一个问题的实例和一个证书( 有时称为见证见证) 作为回答是的,我们可以检查它在多项式时间内是否正确。

:整数因子分解是 NP 。 这就是给定整数 nm的问题,是否有一个整数 f1 <f <m 这样 f 就可以划分 n ( fn的一个小因素)? 这是一个决策问题,因为答案是是的或者没有的。 如果有人给我们一个问题的实例( 所以他们给了我们整数 nm ) 和一个整数 f1 <f <m 并声称 fn ( 证书)的一个因子,我们可以通过执行除法 n/f 来在多项式时间内检查答案。

NP-complete: 一个NP问题 X,它可以在多项式时间内减少任何其他NP问题 Y 。 直觉上这意味着我们可以快速解决 Y 如果我们知道如何快速地解决 X 精确, Y 简化为 X 如果存在一个多项式时间算法 f 变换实例 YYx = f(y) 实例的X 在多项式时间内的财产 Y的答案是是的,当且仅当 f(y)的答案是肯定的。

。: 3 -SAT 。 这是一个问题,我们得到了 3 -clause的析取( 例如,形式的语句)


(x_v11 or x_v21 or x_v31) and 
(x_v12 or x_v22 or x_v32) and 
... and 
(x_v1n or x_v2n or x_v3n)

其中每个 x_vij 是一个布尔变量,或者是来自有限预定义列表的变量的否定 (x_1, x_2,.. . x_n) 可以看出每个NP问题都可以缩减为 3 -SAT 。 证明是技术的,需要使用( 基于non-deterministic灵机和类似于)的技术定义。 这叫做烹饪定理。

NP-complete问题的重要问题是,如果一个确定的多项式时间算法可以求解其中一个问题,那么每个NP问题在多项式时间( 有一个问题要排除它们) 中都是可以解的。

NP-hard: 直观地这些问题比NP-complete更加困难的问题。 注意,NP-hard问题不必是 NP ( 他们不必是决策问题) 。 这里的精确定义是问题 X 是NP-hard如果存在NP-complete问题 Y,那么 Y 在多项式时间内是 reducible X 。 自NP-completeproblem任何目的,也没有任何其他第三十八条polynomial in due time NP-complete problem NP-complete problemscan,所有NP-hard任何降低用户polynomialtime状况。 如果在多项式时间内有一个NP-hard问题的解,那么多项式时间内的所有NP问题都有一个解。

停止问题是经典的NP-hard问题。 这是一个给定程序 P 和输入 I的问题,它会停止? 这是一个决策问题,但它不是在NP中。 很明显,任何NP-complete问题都可以减少到这个。

P = NP: 这是计算机科学中最著名的问题,也是数学科学中最重要的突出问题之一。 事实上,Clay学院为问题( 库克的stephen writeup粘土网站相当好) 提供了一百万美元的解决方案。 很明显,P 是NP的子集。 问题是NP问题是否有确定性多项式时间解。 人们认为他们并不是。 以下是关于最新( 而且重要的是) = NP问题的最新文章: 与NP问题问题的状态。

最好的书在这个问题上是电脑和棘手 Garey和约翰逊。 我最喜欢的NP-complete问题是扫雷问题

我一直在看,看到很多长的解释。 下面是一个对总结有用的小图表。 注意难度增加到底部的难度: 任何NP都可以缩减为 NP-Complete,任何NP-Complete都可以缩减为 NP-Hard,全部在P 时间。 如果你能在P 时间解决一个更困难的问题,那就意味着你发现了如何在( 例如证明P = NP如果你想办法解决NP-Complete时间内的任何问题) 时间内解决所有更容易的问题。

____________________________________________________________
| Problem Type | Verifiable in P time | Solvable in P time | Increasing Difficulty
___________________________________________________________| |
| P | Yes | Yes | |
| NP | Yes | Yes or No * | |
| NP-Complete | Yes | Unknown | |
| NP-Hard | Yes or No ** | Unknown *** | |
____________________________________________________________ V

'是或否'条目的说明:

  • *的一个NP问题,也可以在P 时间求解。
  • ** 一个NP-Hard问题( 也是 NP-Complete ) 在P 时间是可验证的。
  • *** NP-Complete问题( 所有这些都构成了NP-hard的子集) 可能是。 NP困难(NP-Hard)的其余部分不是。

我还发现这个图表非常有用,看看所有这些类型是如何对应于彼此的( 注意图表的左半边) 。

这是对问题的一个非常不正式的回答。

3233是否可以写成其他两个大于 1的乘积的乘积? 这些是共享共同特性的问题示例。 可能不清楚如何有效地确定答案,但是如果答案是'是是',那么就有一个简短快速的检查证明。 在第一种情况下,non-trivial分解为 51 ;在第二种情况下,在第二。

在一个 parameter, 决策问题是一种集合的问题来是或否答案多少而不断改变盘算。 说出问题 composite={"是 n 复合": n 是一个integer}或者 eulerpath={"图 G 是否有一个欧拉径":? G 是一个有限的graph} 。

现在,一些决策问题会使它们变得高效,如果不是明显的算法。

另一方面,对于许多决策问题来说,如何得到答案是不明显的,但是如果你知道一些额外的信息,那么很明显,如何证明你得到了正确的答案。 复合是这样的:试除法是一个明显的算法,而且它很慢: 要考虑一个 10位数字,你必须尝试类似 100,000个可能的除数。 但是,如果有人告诉你 61是 3233的除数,那么简单的长除法是看到它们正确的一种有效方法。

复杂性类 NP 是该类决策问题的'是是'答案中哪里有短到状态,可以快速检查校样。 就像复合的一样,一个重要的一点是这个定义并没有说明问题是多么的硬。 如果你有一个正确的,有效的方法来解决一个决策问题,仅仅写下解决方案中的步骤就足够了。

算法研究继续进行,而新的智能算法总是创建。 今天你可能不知道的一个问题可能会得到一个高效的( 如果不明显) 解决方案。 事实上,研究人员一直在使用 2002 来找到一个有效的复合解决方案 ! 随着所有这些进步,一个真正的需要: 这是不是有点简单的证明? 也许每个决策问题,有助于有效的证明一个有效的解决方案? 没有人知道

也许这个领域的最大贡献是发现了一个独特的NP问题类别。 通过与电路模型计算玩耍,斯蒂芬·库克发现了决策问题的np不同一样困难或困难比其他每个np问题。 布尔可满足性问题的有效的解决方案可以用来创建一个有效的解决方案其他np问题。 不久之后,Richard Karp展示了许多其他的决策问题可以起到同样的作用。 这些问题,在某种意义上是"最难的"中的问题,被称为 NP-complete 问题。

当然,NP只是一个决策问题。 许多问题并不是以这种方式自然陈述的: "找到n","找到最短路径的因素图g中访问每个顶点","给一组变量赋值,使下面的布尔表达式正确"。 虽然一个"在np中"非正式地讨论一些这样的问题,技术上不多大意义--他们不决策问题。 这些问题中的某些可能与NP-complete问题有同样的威力: 这些( non-decision ) 问题的有效解决方案将直接导致一个有效的解决任何NP问题的问题。 这样的问题叫做 NP-hard

我认为我们可以更简洁地回答它。 我回答了相关问题,并从那里复制我的答案

首先,NP-hard问题是一个问题,我们不能证明多项式时间解存在。 在多项式 time, NP-hardness一定"problem-p"通常被证明,通过将一个经过验证转换到NP-hard问题

要回答问题,你首先需要理解哪些NP-hard问题也是 NP-complete 。 如果NP-hard问题属于 set NP,那么它就是 NP-complete 。 要属于集 NP,问题需要是

( i ) 一个决策问题,
( 二) 关于多项式的方程的解的个数这个问题应该是有限,应将每个解决方案长度和
( 三) 在给定多项式长度的解决方案,我们应该能够说关于那个问题的答案是否为是/否

Now, it is easy to see that there could be many NP-hard problems that do not belong to set NP and are harder to solve. 作为一个直观的例子,旅行推销员的optimization-version,我们需要找到一个实际的时间表是比decision-version旅行推销员,我们只需要确定一个时间表与长度 <= k存在与否。

解释P v的最简单方法。 不涉及技术细节的NP是比较"单词问题"和"多重选择问题"。

当你试图解决一个"单词问题"时,你必须从头找到解决方案。 当你试图解决"多重选择问题"时,你有一个选择: 你可以像"单词问题"那样解决它,或者试着插入给你的每个答案,并挑选适合你的答案。

"多重选择问题"通常比相应的"单词问题"容易得多: 替换候选答案并检查它们是否适合,比从头找到正确答案需要更少的精力。

现在,如果我们同意多项式时间"轻松"的努力,那么类P 将由"轻松单词问题"组成,而类的NP将由"容易多选择问题"组成。

P的本质。 NP是个问题:"有没有简单的多选择问题,并不容易作为单词问题"? 也就是说,是否有问题可以很容易地验证一个给定答案的有效性,但从零开始寻找答案是困难的?

现在我们直观地理解了什么是 NP,我们必须挑战直觉。 事实证明,有"多重选择问题"在某种意义上是最困难的: 如果你能找到一个"最困难的是"问题的解决方案,你可以找到一个解决所有NP问题的方法 ! 当库克在 40年前发现这一点时,它完全出人意料。 这些"最困难的是"问题称为 NP-hard 。 如果你找到一个"word问题解决方案"其中一个就会自动找到"word问题解决方案"每个"容易多选择问题" !

最后,NP-complete问题是同时是NP和NP-hard的问题。 按照我们的类比,它们同时是"容易多选择问题"和"最困难的是单词问题"。

( 多项式时间): 顾名思义,这些问题可以在多项式时间内解决。

NP ( Non-deterministic-polynomial时间): 这些是可以在多项式时间内验证的决策问题。 这意味着,如果我声称有一个多项式时间的问题,你要求我证明它。 然后,我给你一个证明,你可以在多项式时间内轻松验证。 这些问题称为NP问题。 注意,这里我们没有讨论这个问题是否有多项式时间解决方案。 但是我们正在讨论如何在多项式时间内验证一个给定问题。

NP-Hard: 这些是最难的问题。 如果我们能在多项式时间内解决这些问题,我们可以解决任何可能存在的NP问题。 注意,这些问题不是NP问题。 也就是说,我们可以用多项式时间来验证这些问题的解决方案。

NP-Complete: 这些问题都是NP和 NP-Hard 。 这意味着,如果我们能解决这些问题,我们可以解决任何其他NP问题,这些问题的解决方案可以在多项式时间内得到验证。

NP-complete问题是那些既是NP-Hard又是复杂性类NP的问题。 因此,要显示任何给定的问题是 NP-complete,你需要表明问题都在NP中,并且它是 NP-hard 。

而是在 NP non-deterministically多项式时间的复杂度类可以解决和的问题中的一个问题的可能的解决方案( 例如,一个证书) 网络处理器可以在多项式时间中已经验证了准确性的。

k-clique non-deterministic解问题的一个例子是类似的:

1 ) 从图形中随机选择k 节点

2 ) 验证这些k 节点形成一个派系。

上述策略是输入图的多项式,因此k-clique问题在NP中。

注意,在多项式时间内肯定可以解的所有问题也在NP中。

显示一个问题是NP-hard通常需要使用多项式时间映射来减少一些其他NP-hard问题的问题: http://en.wikipedia.org/wiki/Reduction%5F%28complexity )

除了其他出色的答案之外,这里还有典型模式人们用来显示 NP,NP-Complete和NP-Hard之间的区别:

enter image description here

对于这个特定的问题,有很好的答案,所以没有必要写我自己的解释。 所以我将尝试为不同种类的计算复杂性提供一个优秀的资源。

对于那些认为计算复杂性仅仅是关于P 和NP的人来说,这里的是关于不同计算复杂性问题的最详尽的参考资料。 除了由OP提出的问题外,它还列出了大约 500类不同的计算问题,以及描述类的基本研究论文列表。

作为我的理解,一个 np-hard 问题不是比一个 "更难"np-complete 问题。 事实上,按照定义,每个np-complete问题都是:

  1. 在NP中
  2. np-hard

enter image description here

对算法由 Cormen,Leiserson ( 原书第2 和( second edition ) pg 1069 ( 3 ed ) --介绍文字。

...