为什么NP完全问题很重要?
**非确定性多项式 (NP) 问题** 理解起来稍微困难一些。在解决NP问题方面,运行时间不可能是多项式的。它可能是 O(n!) 或更大的东西。
但是,对于这类问题,给定一个特定的解决方案,检查该解决方案将具有多项式运行时间。
例如,数独游戏。
NP难问题
如果一个问题的求解算法可以转化为解决任何NP问题,则称该问题为NP难问题。然后我们可以说,这个问题至少与任何NP问题一样难,但它可能更难或更复杂。
NP完全问题
NP完全 (NPC) 问题是指同时存在于NP和NP难类中的问题。也就是说,NP完全问题可以在多项式时间内验证,并且任何NP问题都可以多项式时间内规约到这个问题。
如果一个问题属于NP类并且与NP类中任何问题一样难,则该问题属于NPC类。如果NP类中的所有问题都可以在多项式时间内规约到它,即使它本身可能不在NP类中,则该问题是NP难问题。
如果对于这些问题中的任何一个存在多项式时间算法,则NP中的所有问题都将可以多项式时间求解。这些问题称为NP完全问题。NP完全现象在理论和实践上都具有重要意义。
NP完全语言很重要
NP完全语言很重要,因为所有NP完全语言都被认为具有相似的难度,因为解决其中一个意味着其他问题也被解决了。
如果一些NP完全语言被证明属于P类,那么所有NP都被证明属于P类。因为,请注意,任何NP语言都可以规约到一个NP完全语言。使用此规约和给定NP完全问题的算法来解决NP中的任何问题。因此,它们都将具有多项式时间解决方案。
如果某个NP完全语言不属于P类,则意味着该语言属于NP类但不属于P类,因此这证明了P类和NP类不相等。
因此,如果某个NP完全问题被证明属于P类或不属于P类,则可以解决P与NP问题。
广告