P、NP、NP-Complete、NP-Hard问题

人盡茶涼 提交于 2019-12-21 00:28:36
P、NP、NP-Complete、NP-Hard这些概念都是用来描述一个问题的难度的。即一个问题能否在以上时间内求解,或者验证一个解是否符合一个问题。 在下面的讨论中,我们假设问题的输入规模是n,那么问题的解决时间,或者验证时间都应该是n的一个函数,记为f(n).

    1、规约(Reduction):将一个问题,等价转换成另一个问题的子问题的方式。

    2、P问题:P即Polynomial time,多项式时间。f(n)=a0+a1*n1+a2*n2+a3*n3+…. 。意思是说给定一个问题,能在多项式时间内  找到  符合该问题的解。此时,问题的时间复杂度是O(nj)。

    3、NP问题(Non-deterministic problem):即非确定性多项式时间问题。 NP  就是指能在多项式时间内  验证  一个解是否满足的一类问题。

     什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。

    这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间(多项式时间: 运行时间最多是输入量的多项式函数)内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。

4、NP-Complete问题:NP中有  最难  的一类问题。这类问题就是  NP-Complete  问题。

最难,就意味着所有NP类的问题都能归约到这个问题上。该问题本身也是NP问题。

所以,NP-Complete问题的形式化定义是: L是NP-Complete问题,当其满足如下两个条件:

(1) L ∈ NP

(2)任意L1 ∈ NP, L1 可以归约到 L

5、NP-Hard问题:实际上是“at least as hard as an NP-complete problem”,即这个问题至少和NP完全问题一样难,所以不用满足上面的条件1.

 

总结:他们四者的关系,可以用下图描述:

总结来说:

P类:已有多项式时间算法的判定问题.

NP类:已有指数时间算法的判定问题,包括P类.

NPC类:是NP的一个子集,且其中每一个问题均能由NP中的任何问题在多项式时间内转化成.

NPH问题:若问题A不属于NP类,已知某一NPC问题可在多项式时间内转化为问题A,则称A为NPH.

 

from 

http://blog.sina.com.cn/s/blog_768df4d70102wdfz.html

https://www.cnblogs.com/sancyun/p/4250360.html

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!