我正在研究计算复杂性,我想知道为什么NP-Complete(NPC)问题根本上是一门重要的课。我发现很明显,为什么我们有兴趣展示给定的NP问题是NP难题。
我也理解NPC的定义,并且知道给定的决策问题在NP中是很困难的,知道它在NP中就是NPC的意思。
但是,我不明白的是:为什么这个概念如此重要?当然,如果我们发现这在时间P运行(不论是否是在NP)任何NP-硬算法,我们已经表明,。
为什么这个概念如此重要?
我正在研究计算复杂性,我想知道为什么NP-Complete(NPC)问题根本上是一门重要的课。我发现很明显,为什么我们有兴趣展示给定的NP问题是NP难题。
我也理解NPC的定义,并且知道给定的决策问题在NP中是很困难的,知道它在NP中就是NPC的意思。
但是,我不明白的是:为什么这个概念如此重要?当然,如果我们发现这在时间P运行(不论是否是在NP)任何NP-硬算法,我们已经表明,。
为什么这个概念如此重要?
Answers:
NPC有趣的原因至少有几个:
从某人为谋生编写代码的角度来看,对NP完整性有很好的了解对于以下方面很重要:
NP完全问题是NP困难问题中最简单的问题,但是据我们所知,解决此类决策问题需要花费与输入量成指数关系的时间。因此,实际上,如果您可以证明您要解决的问题是NP难题的(通常是通过显示一个有效的解决方案也可以为某些NP完全问题提供有效的解决方案),则您知道通常,您可以停止寻找有效的算法来准确解决它。取而代之的是,您可以从已知的算法中进行选择,这些算法可以很好地解决NP困难的优化问题,并继续进行项目的其余部分。
由于计算机通常用于攻击NP难题,因此已经开发出可以有效解决某些 NP难题实例的专用求解器。认识到您的问题是NP完全的,这是找到现有工具(SAT,ILP,SMT,CSP等)的第一步,该工具在某些情况下可能会帮助您找到确切的解决方案,而在这些情况下,您本来必须解决一个问题。近似。