📅  最后修改于: 2023-12-03 15:33:13.587000             🧑  作者: Mango
在计算复杂度理论中,NP(非确定性多项式时间)是指可以在多项式时间内验证解的问题集合,NP问题是寻找这些问题的解的问题。如果可以在多项式时间内解决NP问题,那么P=NP;否则,P≠NP。
NP硬问题是指在多项式时间内不能求解的问题,但可以用多项式时间的算法将任何一个NP问题约化为该问题。也就是说,NP问题可以被归约为NP硬问题,但NP硬问题不一定是NP问题。这意味着,任何一种用多项式时间解决的NP完整问题都可以通过一个多项式时间约化算法,转化成NP硬问题。
NP硬问题的典型例子是旅行商问题(TSP),即找到一个旅行商经过所有城市的最短路径。在该问题中,任何一个NP问题都可以归约到TSP。因此,TSP是一个NP硬问题。
NP完整问题是指在多项式时间内验证解的问题集合,并且可以将NP问题约化到该问题上。也就是说,如果能够在多项式时间内解决NP完整问题,那么就可以在多项式时间内解决所有NP问题。因此,NP完整问题是所有NP问题中最困难的。
NP完整问题的典型例子是SAT问题,即命题逻辑可满足性问题,给定一个命题逻辑公式,判断是否存在一组变量使该公式成立。在该问题中,我们可以把任何一个NP问题约化到SAT问题上。因此,SAT问题是一个NP完整问题。
从定义上来说,NP硬问题和NP完整问题都是NP问题的子集。但是它们之间有一个显著的区别:任何一种NP完整问题都可以通过一个多项式时间约化算法,转化成其它NP完整问题。而对于NP硬问题,只有NP问题可以被约化成NP硬问题。
换句话说,NP完整问题是NP问题集合中最难的问题,而NP硬问题则是除NP完整问题以外最难的问题。一般情况下,我们使用NP完整问题作为实际应用中的难点问题,而NP硬问题更多的是作为算法研究的对象。
NP硬问题是一个比NP问题更难的集合,任何一个NP问题都可以归约到NP硬问题上;而NP完整问题是NP问题中最难的问题,所有NP问题都可以归约到NP完整问题上。在实际应用中,我们通常使用NP完整问题作为难度参考。