algorithm - 为什么说NP完全问题就是NP呢?

标签 algorithm complexity-theory np

我已经浏览了关于这个主题的所有链接,但仍然困惑为什么我们认为 NP Complete 是 NP。是不是只能在多项式时间内验证我们说NP完全问题是NP,但是我们有一些NP问题也可以在多项式时间内解决但是NP完全问题不能在多项式时间内解决那么那么这不是与将 NP 完全问题称为 NP 的性质相矛盾吗?

最佳答案

确定性图灵机可以在多项式时间内解决决策问题集 P。

然后是可以在多项式时间内由非确定性图灵机解决的决策问题集合 NP,即那些在给定一些见证字符串的情况下可以在多项式时间内验证其解决方案的问题。

确定性图灵机可以模拟非确定性图灵机,所以我们知道有一个指数时间算法可以解决NP问题。然而,我们知道我们实际上是否没有 P = NP。

NP 完全问题是一个 NP 问题至少与任何其他 NP 问题一样难。例如,SAT 是 NP 完全的,因为它可以有效地编码一个非确定性图灵机,解决 SAT 意味着模拟该机器。您可以通过证明先前已知的 NP 完全问题 B 可以在多项式时间内简化为 A 来证明问题决策问题 A 的 NP 完全性。这意味着如果 A 可以在多项式时间内求解,那么 B 也可以在多项式时间内求解,因此在某种意义上 A 至少和 B 一样难。

but we have some NP problems which can be solved in polynomial time as well

没错,因为 P 是 NP 的子集。

NP complete problems can't be solved in polynomial time

我们不确定。

doesn't this contradict the property of calling NP complete problems to be NP

完全没有。是的,我们知道 NP 中的问题也存在于 P 中。这并不意味着 NP 中没有不存在于 P 中的问题。但我们当然不知道后者。甚至可能是每个 NP 完全问题都在 P 中,在 P = NP 的情况下。

关于algorithm - 为什么说NP完全问题就是NP呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404296/

相关文章:

javascript - 使用 JavaScript 检查元素是否在包含在对象内的数组内

java - 删除包含另一个文件中不存在的数据的文件行

算法反模式的命名

python - 找出两个数组之间可能的最小差异

python - 检查其他 Dataframe 上是否存在值

algorithm - 这是NP完全的吗?

algorithm - 证明不存在这样的算法

algorithm - 需要找到数组中每个元素的下一个更大的元素

python - 政治模拟优化选举人票……20万+种可能性,如何跑通?

algorithm - Dijkstra 算法的运行时间测量