很显然,方法1简单多的,我们只要找到一个现成的 NP-Complete问题就可以了,然而,这个世界上,总得有第一个NP-Complete问题才能够用这个方法,这第一个NP-Complete问题的证明,注定了只能用方法2,那就是要证明所有NP问题都可以reduced到这个问题上,而万幸的是这第一个NP-Complete问题在40年前被找到了,它就是著名的SAT...
3. NP-Hard problem(Non-deterministic Polynomial hard problem(NPH))NP难问题,非多项式问题(无法解决,可以给出近似解) 如果说np-complete还是在多项式解决一个问题的范畴,np-hard问题会涉及到非多项式的问题。 NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要...
NP-Complete问题:如果一个问题已经被证明是一个NP-Hard问题,并且可以证明该问题是一个NP问题,那么该问题是NPC问题。 即已知一个NPC问题L',如果我们可以把L'归约为L,且L可以在多项式时间内被验证,那么L是一个NPC问题。 其中,P, NP, NP-Hard, NP-Complete是不同的复杂性类,用于将所有的算法问题进行分类,以...
因此一般初学算法的人都会问这样一个问题:NP-Hard和NP-Complete有什么不同?简单的回答是根据定义,如果所有NP问题都可以多项式归约到问题A,那么问题A就是 NP-Hard;如果问题A既是NP-Hard又是NP,那么它就是NP-Complete。从定义我们很容易看出,NP-Hard问题类包含了NP- Complete类。但进一步的我们会问,是否有属于NP-...
从定义我们很容易看出,NP-Hard问题类包含了NP-Complete类。但进⼀步的我们会问,是否有属于NP-Hard但不属于NP-Complete的问题呢?答案是肯定的。例如停机问题,也即给出⼀个程序和输⼊,判定它的运⾏是否会终⽌。停机问题是不可判的,那它当然也不是NP问题。但对于SAT这样的NP-Complete问题,却可以...
其中,P, NP, NP-Hard, NP-Complete是不同的复杂性类,用于将所有的算法问题进行分类,以确定当前算法的难度。多项式时间可解的问题 :如果对于某个确定的常数k,存在一个能在O(n k )时间内求解出某具体问题的算法,就说该具体问题是一个多项式时间可解问题。多项式时间内可被验证的问题 :是一...
如果问题A既是NP-Hard又是NP,那么它就是NP-Complete。 从定义我们很容易看出,NP-Hard问题类包含了NP- Complete类(NP完全的定义更严格) 但进一步的我们会问,是否有属于NP-Hard但不属于NP-Complete的问题呢?答案是肯定的。 例如停机问题,也即给出一个程序和输入,判定它的运行是否会终止。 停机问题是不可判的,...
NP-hard vs NP-Complete 判断一个问题是不是NP-Complete有两个步骤: 判断是否NP,就是算法结果的正确性能不能在多项式时间内验证 判断是否NP-hard,要判断NP-hard,我们可以使用一个叫Reduction的技巧。直观来说,如果你能用你的问题的求解器来求解另一个已知是NP-hard问题,那么你的问题也是NP-Hard的。
所以,NP-Complete问题的形式化定义是: L是NP-Complete问题,当其满足如下两个条件: L∈ NP 任意L1 ∈ NP, L1 可以归约到 L 对于只满足条件2,不管满不满足条件1的问题,我们称为NP-hard问题, 即非常难,且不能在多项式时间内验证解是否正确的问题。(感谢luse兄的指正) ...
如果X是已知的NP-hard或NP-complete问题,那么Y与X具有相同的困难度,即Y也是NP-hard或NP-complete。这是证明问题Y为NP-hard或NP-complete的关键思路,只需找到一个已知的NP-hard或NP-complete问题X,证明它可以转化为Y。NP-hard问题是指在所有NP问题中,存在一些问题特别难以求解,而NP-complete问题...