NP,P问题的概念思考

版权声明:转载请注明出处https://blog.csdn.net/hhmy77 https://blog.csdn.net/hhmy77/article/details/85273581

长久以来一直听说NP=?P问题,自己又不清楚之间的联系,而且听说研究生复试有可能问到这个,就查了一下。
这里必须贴Matrix67大神的文章,连我这么笨都能看得明白
http://www.matrix67.com/blog/archives/105

这里我用自己的语言总结一下,可能有错误,详细的科普请看上面的文章:
多项式级的复杂度:O(1) O(logn) O(n^a)
P(Polynomial)问题:能找到一个算法,在多项式时间内解决这个问题.
NP(Non-deterministic Polynomial)问题:对于这类算法,求解这个问题很难,但是验证一个解很简单
比如:
在一个周六的晚上,你参加了一个盛大的晚会。由于感到局促不安,你想知道这一大厅中是否有你已经认识的人。你的主人向你提议说,你一定认识那位正在甜点盘附近角落的女士罗丝。不费一秒钟,你就能向那里扫视,并且发现你的主人是正确的。然而,如果没有这样的暗示,你就必须环顾整个大厅,一个个地审视每一个人,看是否有你认识的人。
非NP问题:对这类问题,连验证一个解都很难,我们不会指望它有一个多项式级的算法能解决它
一些结论:
所有的P类问题都是NP类问题,能用多项式方法解决一个问题,必能用多项式方法去验证它。
那么就有一个疑惑,是否所有的NP问题都是P类问题? 如果P属于NP,同时NP属于P,那么NP=P就得证。

NP问题一直都是信息学的巅峰。巅峰,意即很引人注目但难以解决。在信息学研究中,这是一个耗费了很多时间和精力也没有解决的终极问题,好比物理学中的大统一和数学中的歌德巴赫猜想等。
目前为止这个问题还“啃不动”。但是,一个总的趋势、一个大方向是有的。人们普遍认为,P=NP不成立,也就是说,多数人相信,存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的,就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在,使人们相信P≠NP。

约化:一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。

通过对某些问题的不断约化,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题,联想起约化的传递性,自然地,我们会想问,如果不断地约化上去,不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题,那么最后是否有可能找到一个时间复杂度最高,并且能“通吃”所有的 NP问题的这样一个超级NP问题?答案居然是肯定的。也就是说,存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。这种问题的存在难以置信,并且更加不可思议的是,这种问题不只一个,它有很多个,它是一类问题。这一类问题就是传说中的NPC 问题,也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信,NPC问题是最复杂的问题。再次回到全文开头,我们可以看到,人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。

PS:上面描述的超级问题有点像科幻小说的情节了哈哈,如果真的有科技爆炸的外星人,它们可能目前人类的这些难题有深刻而简单的证明吧。

NPC问题:1.首先它是一个NP问题。2.所有NP问题都能约化成它。
NPH问题:所有NP问题都能约化成它。 但是NPH可能不是一个NP问题,所以人们不去研究它
第一个NPC问题文章中介绍了是逻辑电路,感兴趣可以去看一下。
下面这种图片是我们目前为NP问题的认知
在这里插入图片描述
现在我们在重点研究NPC问题,如果NPC问题我们能找到任何一个多项式算法去解决它,NP=P问题自然也能证明了,同时正因为NPC的问题存在,人们难以找到一个方法去解决它,所以人们坚信NP!=P。
如果将来能证明或者有所突破,毫无疑问我们的科技将会突破到另一个境界,虽然自己是个普通人,但是想想仍然为止振奋。这些问题的研究是给天才做的,我这种普通人做好自己的事就行了,按部就班就是伟大。

猜你喜欢

转载自blog.csdn.net/hhmy77/article/details/85273581