浅谈PvsNP

Preface

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


算法与时间复杂度

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

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

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

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

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


P与NP的定义

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

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

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

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

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

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


P vs NP

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

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

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

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

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


NPC与NP-Hard

要攻克\(P\ vs NP\),人们需要找到一些重点问题进行突破。

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

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

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

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

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

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

而如果一个\(NP-Hard\)的问题本身就\(NP\)的,由定义知它一定是\(NPC\)的。

用直观的语言表述就是:\(NP-Hard\)的特征是至少和\(NP\)问题一样难


P vs NP的未来

时至今日,大部分科学家倾向于\(P\ne NP\),我个人的看法也同样如此。

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

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

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

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

posted @ 2023-05-04 21:34  空気力学の詩  阅读(70)  评论(0编辑  收藏  举报