为什么NP完全问题很重要?
在非确定多项式(NP)的问题都有些难于理解。在解决NP问题方面,运行时间不能是多项式的。它会像O(n!)或更大的东西。
但是,这类问题给出了特定的解决方案,并且检查解决方案将具有多项式运行时间。
例如,数独游戏。
NP难题
一个问题被称为NP-Hard,当用于解决NPHard的算法可以转化为解决任何NP问题时。那么我们可以说,这个问题至少和任何NP问题一样难,但它可能更难或更复杂。
NP完全问题
NP-Complete(NPC)问题是同时存在于NP和NP-Hard类中的问题。也就是说,NP-Complete问题可以在多项式时间内得到验证,任何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。