浅谈PvsNP
1|0Preface
学校的计算理论初探课程要求写篇关于这个的小论文, 写完后发现也算是有所收获,遂扔到博客里水一下。
2|0算法与时间复杂度
算法构成了计算机解决问题的基本单元,每个算法的执行都需要时间和空间。通常的,输入规模越大,往往需要的时间和空间越多。
虽然算法的实际运行效率会受到诸如硬件条件之类的影响,但是输入规模和时间的增长关系总是很定不变的。
如果输入规模用表示,那么我们可以引入表示它的时间频度,以此来度量算法的运行效率。
比较常见的算法复杂度有等,不同的复杂度的算法在增长时所消耗的时间的增长速度是大不相同的。
而随着算法的发展,人们发现很多问题的有效算法的最优复杂度都是指数级别的,而这类复杂度的规模-时间增长太快,我们是没有信心去解决的。 因为时间增长的速度,远远超过了我们计算能力增长的速度。
3|0P与NP的定义
由此我们引出了问题的定义,所有能用多项式时间算法计算得到结果的问题,称为多项式问题。
而的定义,如果你只是如字面上看起来那样去理解,指不能用多项式时间算法计算得到结果的问题,那就大错特错了
的真正定义是指,存在多项式算法能够验证的非决定性问题。
简单来说,对于某个问题如果我给你一个解,只要能在多项式时间内判断这个解是否正确,我们就把他归类为问题
而对于某个问题,验证一个解是否合法和找出解之间的复杂度差异可能会很大。
比如我们很难在多项式时间内给出一个数独的合法解,但如果给你一个填好了数的棋盘让你验证的话问题就非常容易了。
4|0P vs NP
回到的定义,我们不难发现问题一定属于问题的范畴,因为既然我都能用多项式时间求解了,大不了就再算一遍就行了呗。
那么我们就很容易想到,那是否存在一个问题属于的范畴而不属于的范畴呢?
换句话说,比如对于数独问题,它到底能不能在多项式时间内给出一个解呢?这个我们到目前为止还是不得而知。
因此对于的本质的讨论其实就是在讨论或者。
2000年,克雷顿数学研究所,发布了7个数学难题(Millennium Prize Problems),每个奖励100万美金,其中就有问题
5|0NPC与NP-Hard
要攻克,人们需要找到一些重点问题进行突破。
像诸如排序问题,最短路问题这类早就被提出了多项式复杂度算法的问题显然对攻克没有什么帮助,我们要关心的是最难的那些问题。
因此就引出了的定义,一个属于NP类的问题,但目前为止没办法在P时间内解决(也就是说目前只能在P时间内判断解的正确性)。
由科学家们证明并公认的问题有很多,诸如、最大团问题、独立集问题、点覆盖问题等。
而问题还有一大性质就是它们可以在多项式时间内相互规约,比如与最大团问题的相互规约、独立集问题与点覆盖问题的相互规约,这里的篇幅有限就不展开讨论了。
根据上面的讨论,我们发现如果,那么所有的问题都应该被单独归为一类,与划分开来,正如下图所表示的那样:
除了外,我们还引入了一种新的定义,如果所有问题都可以多项式时间归约到某个问题,则称该问题为。
而如果一个的问题本身就的,由定义知它一定是的。
用直观的语言表述就是:的特征是至少和问题一样难。
6|0P vs NP的未来
时至今日,大部分科学家倾向于,我个人的看法也同样如此。
因为一旦,就会产生很多有意思的问题,因为此时当我们提出一个问题的验证方法后,我们就获得了这个问题的解。
换句话说,以下这些有趣的现象会发生:
- 求解数独、TSP(旅行商问题)等传统算法难题变得轻而易举。
- RSA公钥体系失效,因为做大数的质因数分解就和做乘法一样简单。
- 如果可以验证一个数学公式是否正确,则我们可以让计算机得出推导过程,因此直接导致数学家集体失业。
- 真正意义上的人工智能将会产生,因为计算机在可以判断一些问题的基础上(例如文章是否有意义、音乐是否好听),转手创造出新的作品。
不管怎么说,有关已经困扰了科学家们许久,而攀登这个计算机科学的巅峰是我们这一代的终极目标,我们还有很长的路要走。
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/17372599.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下