1、规约(Reduction):将一个问题,等价转换成另一个问题的子问题的方式。
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
来源:https://www.cnblogs.com/cpsmile/p/8393990.html