freeCodeCamp/guide/chinese/computer-science/np-completeness/index.md

1.5 KiB
Raw Blame History

title localeTitle
Np Completeness Np完整性

Np完整性

NP-Complete是某些类型问题的属性。如果问题是NP-Complete则意味着没有有效的多项式算法来快速找到解决方案。但是如果给我们一个解决方案我们可以快速在多项式时间内验证它是否正确。

更具体一点让我们检查一个已知的NP-Complete问题 - 子集和问题。假设我们有一组整数{-7-3-2,5,8}。我们想要找到这些整数的子集其元素总和为0.我们怎么能这样做?

一种方法是简单地枚举所有可能的子集并检查它们的元素是否总和为0.这将是指数级复杂的。

事实上没有更好的已知算法它可以改善指数时间限制。这就是为什么它被归类为NP-Complete问题。

除了已知为NP-Complete的子集和问题之外存在许多这样的已知问题。如果找到一个有效的算法则意味着我们可以为所有NP-Complete问题设计一个有效的算法。

如果你有一个可以被证明是NP完全的问题你应该停止尝试为它找到更有效的算法而是使用启发式方法来解决大多数测试用例的问题或者解决问题的近似版本。或者也许检查你正在解决的问题看看它是否不能简化为不完全NP的东西。

更多信息:

https://www.ics.uci.edu/~eppstein/161/960312.html https://stackoverflow.com/questions/210829/what-is-an-np-complete-in-computer-science