@rebirth1120
2019-08-20T17:21:18.000000Z
字数 865
阅读 1887
小知识
参考资料 : [Styx]P问题,NP问题,NP-hard问题,NPC问题,傻傻分不清楚?
多项式时间复杂度 : 如 .
非多项式时间复杂度 : 如 这一类 数据规模 在指数位置的复杂度.
定义
能够在多项式时间复杂度内解决的问题, 称为 P问题(Polynomial problem).
首先注意, NP问题并不是所有不是N问题的问题 (有点绕).
因为现在没有多项式解法的问题, 在未来不一定没有多项式解法, 所以除了那些已经被证明了不存在多项式解法的问题, 其他问题在未来都可能变为P问题.
而一个问题没有多项式解法的条件是 : 不能在多项式复杂度内检验它的一个解.
定义
它的一个解能在多项式复杂度内检验的问题, 称为 NP问题(Non-Deterministic Polynomial Problems).
其中 "Non-Deterministic" 是 "非确定性" 的意思.
所以, NP问题实际上是无法判断它不是 P问题的问题.
而对于一个P问题, 它既然能在多项式复杂度内解决, 那也一定能在多项式复杂度内检验它的一个解, 所以我们可以得到
归约指的是将A问题进行归约后可以用B问题的解决方法解决,也就是把A问题变成B问题解决.
如果有一个问题可以使所有NP问题在多项式复杂度内归约到它,那么它就是NP-hard问题
例如 停机问题
如果有一个NP问题可以是所有NP问题在多项式复杂度内归约到它, 那么它就是NPC问题
其中 "C" 表示 "Complete", 所以NPC问题也被称为 "NP完全问题".
由它们的定义, 我们可以知道, NP-hard问题是不一定有解的, 例如上面的"停机问题",
但NPC问题是有可能有多项式解法的, 所以, 只要解决了一个NPC问题, 就可以解决所有的NP问题, 也就可以解决世纪难题 : "P=NP?".
常见的NPC问题有3-SAT问题,旅行商问题等等.