algorithm - 什么是计算机科学中的 NP-complete?

标签 algorithm language-agnostic mathematical-optimization theory np-complete

<分区>

什么是 NP 完全问题?为什么它在计算机科学中如此重要?

最佳答案

什么是NP

NP 是所有 decision problems 的集合(带有是或否答案的问题)"is"答案可以在多项式时间内验证 (O(nk) 其中 n 是问题大小,k 是常数)由 deterministic Turing machine .多项式时间有时被用作快速快速的定义。

什么是P

P 是所有决策问题的集合,确定性图灵机可以在多项式时间内解决。由于它们可以在多项式时间内求解,因此它们也可以在多项式时间内得到验证。因此P是NP的子集。

什么是NP-Complete

NP 中的问题 x 也属于 NP-Complete 当且仅当 NP 中的所有其他问题都可以快速(即在多项式时间内)转换为 x。

换句话说:

  1. x 在 NP 中,并且
  2. NP 中的每个问题都是 reducible到x

所以,NP-Complete 如此有趣的原因在于,如果要快速解决任何一个 NP-Complete 问题,那么所有 NP 问题都可以解决很快。

另见帖子 What's "P=NP?", and why is it such a famous question?

什么是NP-Hard

NP-Hard 是至少与 NP 中最难的问题一样难的问题。请注意,NP-Complete 问题也是 NP-hard 问题。然而,尽管以 NP 作为前缀,但并非所有 NP-hard 问题都是 NP(甚至是决策问题)。也就是说 NP-hard 中的 NP 并不意味着非确定性多项式时间。是的,这令人困惑,但它的用法是根深蒂固的,不太可能改变。

关于algorithm - 什么是计算机科学中的 NP-complete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/210829/

相关文章:

python - 四舍五入到最接近的因素?

python - 根据集合修剪组合列表

python - 如何根据不同的索引对 python 列表进行排序?

c - 根据每个元素的频率对数组元素进行排序

algorithm - 二叉树 : Advantages of pre-order , 二叉树中的后序遍历?

language-agnostic - 什么是优先队列,它有什么用

classification - 如何找到分隔两个区域的最佳直线,这些区域具有 2 个不同属性的点

language-agnostic - 软件需求分析

python - 使用已知函数 numpy 进行曲线拟合

python - 如何在cvxpy中写几个约束?