NP-Hard

来源:互联网 发布:js触发事件 自动 编辑:程序博客网 时间:2024/05/17 09:17

目前看到了很多文章中都提到了NP-Hard问题,于是就去网上查了一些基本概念:

(NP:non-deterministic polynomial,非确定性多项式)


1、首先要了解时间复杂度的问题:时间复杂度是指随着问题规模的扩大,程序解决问题所需时间增长的有多快。

问题规模:n   

多项式时间复杂度:O(nk)   

指数型时间复杂度:O(kn) 、O(n!)、或更大的时间复杂度

2、P:多项式问题,能用多项式时间算法得到结果的问题

指数型问题:所有绝对不可能用多项式时间求解的可解问题

(当然还有一些不可解的问题)

NP:得到一类问题的解,但需要验证解的正确性,验证所花的时间是多项式时间,至于求解所用时间不考虑长短,这类问题被称为NP问题

        简单来说,NP问题解的正确性很容易被检验出来,这里所说的检验是指存在一个多项式算法

3、约化(reducibility)

问题A可约化为问题B,说明B的时间复杂度高于A

(例:解一元一次方程问题可约化为解一元二次方程问题)

4、NPC(NP完全问题)问题定义:两个条件(1)是一个NP问题;(2)所有的NP问题都能约化到它

      NP-Hard问题:满足NPC问题的第二个条件,但不一定满足第一个条件(即比NPC问题范围广)