据我了解,所有 NP 完全问题都是 NP 难题,但已知一些 NP 难题不是 NP 完全问题,并且 NP 难题至少与 NP 完全问题一样难。
这是否意味着不是 NP 完全的 NP 难题更难?以及如何更难?
据我了解,所有 NP 完全问题都是 NP 难题,但已知一些 NP 难题不是 NP 完全问题,并且 NP 难题至少与 NP 完全问题一样难。
这是否意味着不是 NP 完全的 NP 难题更难?以及如何更难?
要回答这个问题,首先需要了解哪些 NP-hard 问题也是 NP-complete。如果一个 NP-hard 问题属于集合 NP,那么它是 NP-complete。要属于集合 NP,需要有一个问题
(i) 一个决策问题,
(ii) 问题的解决方案的数量应该是有限的,并且每个解决方案都应该是多项式长度,以及
(iii) 给定一个多项式长度的解决方案,我们应该能够说出问题的答案是否问题是/否
现在,很容易看出可能存在许多不属于集合 NP 且更难解决的 NP 难题。作为一个直观的例子,我们需要找到实际时间表的旅行商的优化版本比我们只需要确定长度 <= k 的时间表是否存在的旅行商的决策版本更难。
图灵机停止问题在图灵机和 NP-hard 上是不可判定的,但不是 NPC。显然它更难;)
图灵停机问题是不可判定的,属于 NP-Hard 集。对于图灵停止问题,我们没有任何决定器,因为它是一种 RE 语言。所以我们没有任何算法来解决它。因此很明显,无法解决的问题也在 NP-Hard 集中。因此 NP-Hard 集还包含我们没有任何算法要解决的语言或问题。
来自http://en.wikipedia.org/wiki/NP-hard#Examples
还有一些决策问题是 NP 难但不是 NP 完全的,例如停机问题。这就是询问“给定程序及其输入,它会永远运行吗?”的问题。这是一个是/否的问题,所以这是一个决策问题。很容易证明停机问题是 NP-hard 但不是 NP-complete。