隐藏页面特效

浅谈PvsNP

1|0Preface


学校的计算理论初探课程要求写篇关于这个的小论文, 写完后发现也算是有所收获,遂扔到博客里水一下。


2|0算法与时间复杂度


算法构成了计算机解决问题的基本单元,每个算法的执行都需要时间和空间。通常的,输入规模越大,往往需要的时间和空间越多。

虽然算法的实际运行效率会受到诸如硬件条件之类的影响,但是输入规模和时间的增长关系总是很定不变的。

如果输入规模用n表示,那么我们可以引入O(f(x))表示它的时间频度,以此来度量算法的运行效率。

比较常见的算法复杂度有O(n),O(nc),O(2n),O(n!)等,不同的复杂度的算法在n增长时所消耗的时间的增长速度是大不相同的。

而随着算法的发展,人们发现很多问题的有效算法的最优复杂度都是指数级别的,而这类复杂度的规模-时间增长太快,我们是没有信心去解决的。 因为时间增长的速度,远远超过了我们计算能力增长的速度。


3|0P与NP的定义


由此我们引出了P问题的定义,所有能用多项式时间算法计算得到结果的问题,称为多项式问题。

NP的定义,如果你只是如字面上看起来那样去理解,指不能用多项式时间算法计算得到结果的问题,那就大错特错了

NP的真正定义是指,存在多项式算法能够验证的非决定性问题。

简单来说,对于某个问题如果我给你一个解,只要能在多项式时间内判断这个解是否正确,我们就把他归类为NP问题

而对于某个问题,验证一个解是否合法和找出解之间的复杂度差异可能会很大。

比如我们很难在多项式时间内给出一个数独的合法解,但如果给你一个填好了数的棋盘让你验证的话问题就非常容易了。


4|0P vs NP


回到NP的定义,我们不难发现P问题一定属于NP问题的范畴,因为既然我都能用多项式时间求解了,大不了就再算一遍就行了呗。

那么我们就很容易想到,那是否存在一个问题属于NP的范畴而不属于P的范畴呢?

换句话说,比如对于数独问题,它到底能不能在多项式时间内给出一个解呢?这个我们到目前为止还是不得而知。

因此对于P vs NP的本质的讨论其实就是在讨论P=NP或者PNP

2000年,克雷顿数学研究所,发布了7个数学难题(Millennium Prize Problems),每个奖励100万美金,其中就有P vs NP问题


5|0NPC与NP-Hard


要攻克P vsNP,人们需要找到一些重点问题进行突破。

像诸如排序问题,最短路问题这类早就被提出了多项式复杂度算法的问题显然对攻克P vsNP没有什么帮助,我们要关心的是最难的那些NP问题。

因此就引出了NPC的定义,一个属于NP类的问题,但目前为止没办法在P时间内解决(也就是说目前只能在P时间内判断解的正确性)。

由科学家们证明并公认的NPC问题有很多,诸如3SAT、最大团问题、独立集问题、点覆盖问题等。

NPC问题还有一大性质就是它们可以在多项式时间内相互规约,比如3SAT与最大团问题的相互规约、独立集问题与点覆盖问题的相互规约,这里的篇幅有限就不展开讨论了。

根据上面的讨论,我们发现如果PNP,那么所有的NPC问题都应该被单独归为一类,与P划分开来,正如下图所表示的那样:

除了NPC外,我们还引入了一种新的定义NPHard,如果所有NP问题都可以多项式时间归约到某个问题,则称该问题为NPHard

而如果一个NPHard的问题本身就NP的,由定义知它一定是NPC的。

用直观的语言表述就是:NPHard的特征是至少和NP问题一样难


6|0P vs NP的未来


时至今日,大部分科学家倾向于PNP,我个人的看法也同样如此。

因为一旦P=NP,就会产生很多有意思的问题,因为此时当我们提出一个问题的验证方法后,我们就获得了这个问题的解。

换句话说,以下这些有趣的现象会发生:

  • 求解数独、TSP(旅行商问题)等传统算法难题变得轻而易举。
  • RSA公钥体系失效,因为做大数的质因数分解就和做乘法一样简单。
  • 如果可以验证一个数学公式是否正确,则我们可以让计算机得出推导过程,因此直接导致数学家集体失业。
  • 真正意义上的人工智能将会产生,因为计算机在可以判断一些问题的基础上(例如文章是否有意义、音乐是否好听),转手创造出新的作品。

不管怎么说,有关P vs NP已经困扰了科学家们许久,而攀登这个计算机科学的巅峰是我们这一代的终极目标,我们还有很长的路要走。


__EOF__

本文作者hl666
本文链接https://www.cnblogs.com/cjjsb/p/17372599.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
posted @   空気力学の詩  阅读(174)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示