一点一点前进...

0%

可能与不可能的边界:P NP问题趣史 | 读书笔记

三月,过完年从家中回北京,Kindle上下载了这本书,每晚都读一些,记点笔记。现总结成电子版。

开篇用金券、手(超级灵活,无法使用计算机模拟)、旅行问题、划分两个数组的事例,给大家一个直观的概念:P问题容易解决,NP问题不容易解决。若能证明P=NP,一切很美好;若不能,带来什么呢?长路漫漫,作者提出了很多问题,期待他能在后面一一解决。

作者假想了一个场景,经过一系列努力(这里面还YY了清华大学),人类解决了P=NP问题,并写出了能够生成代码解决NP问题的程序。有了这个程序,分析DNA易如反掌,战胜了癌症等各种现在开起来是绝症、疑难杂症;棒球比赛除了规则,一切都变了,计分、处理画面、安排赛事、训练等等,都可以快速的由计算机辅助完成;计算机程序能够创作小说、音乐、电影、游戏等等;不好的方面也有,比如RSA一瞬间就被破解了;人们没有隐私可言;很多很多人都要失业了。回到2012年(应该是作者写书的年代),不管怎样,有些问题终将被攻破,P是否等于NP呢?继续前进。

作者又假想了一个二万人组成的国家,来阐述NP问题。通过几个小问题告诉人们算法的重要性。P问题,多项式时间复杂度(也称为算术复杂度)就能解决的问题,是简单问题;NP问题,不确定性多项式时间,不知道有没有多项式时间复杂度的解,但是给出一个解,可以在多项式时间判断正误。但是遗憾的是,至今没能证明P=NP,但是不代表没有。P=NP证明不出来,P!=NP貌似更难证明,哈哈。

一个计算机科学家提出了P/NP问题,获得了图灵奖;一个计算机科学家归纳了NP问题,也获得了图灵奖;就连这个名字,也是赫赫有名的高德纳先生取的。

西方的美国人和东方的俄罗斯人,独立地发现了P/NP问题,可见其是自然孕育的事物,蕴含在生活之中。

不管P是否等于NP,即使等于,在找到P算法之前,我们仍然活在一个NP的世界。我们采用蛮力法来解决小规模问题,启发算法、近似算法等找一个可接受的解,亦或者,放弃解决某个问题,开心的玩去吧,因为目前为止,既没有证明P=NP,也没有证明P!=NP,且二者都很难。

计算机科学家试图去解决这些NP问题,比较重大的成果就是量子计算机。量子计算机能解决部分NP问题,比如RSA,很容易的分解很大很大的因数,世界显然就没有那么美妙了。当然,量子计算机也带来了量子加密算法以平衡这个世界,使之回归完美。