P和NP問題一直是計算機領域的老大難問題,那么在近50年間,人們對這個問題有什么深入的研究呢?讓我們在本文中深挖這個世紀難題。作者 | Lance Fortnow編譯 | Don編輯 | 青暮在1971年5月4日,偉大的計算機科學家和數學家Steve Cook就在他的論文《定理證明程序的復雜性 The Complexity of Theorem Proving Procedures》中首次向世界提出了P和NP的問題。在50年后的今天,世人仍然在試圖解決這個計算機領域中最著名的問題。其實在12年前(2009年),我也曾經就該問題進行了一些討論,大家可以看之前的《P與NP問題的現狀》綜述。文章地址:Fortnow, L. The status of the P versus NP problem. Commun. ACM 52, 9 (Sept. 2009), 78–86. https://doi.org/10.1145/1562164.1562186計算機理論在近些年并沒有得到很大的發展。從2009年那篇文章發表以來,P與NP問題及其背后的理論并沒有發生顯著的變化,但計算世界確實發生了變化。比如說云計算,就推動了社交網絡、智能手機、經濟、金融科技、空間計算、在線教育等領域的飛速發展。更重要的是,云計算還幫助了數據科學和機器學習的崛起。在2009年,世界前10大科技公司中出現了一家獨大的場面——微軟公司獨孤求敗。但是截至2020年9月,市值前七名的公司分別是蘋果、微軟、亞馬遜、Alphabet(谷歌)、阿里巴巴、Facebook和騰訊,彼此平分秋色。不光是大公司的變革明顯,計算機人才的需求量也是如此。據統計,在2009到2020年間,美國的計算機科學專業畢業生的數量增加了三倍有余,但這還是無法滿足市場上對該領域人才的需求量。P和NP的問題作為數學界和計算機界的一個難題來源已久,它被列入克萊數學研究所的千年難題之一。而且這個組織還為能夠攻克該問題的研究人員提供了上百萬美元的獎金懸賞。我會在文章的末尾用一些例子來解釋P和NP問題,這雖然沒能讓我們從本質上對其有更多的認識,但是也能看出來P和NP的很多思考和成果推動了這個領域的研究和發展。 1 P和NP問題如果有人問你,你能不能在微博上找到一些人,他們彼此之間都是朋友,這幫人的數量大概是300左右。你會怎么回答這個問題?假如你在一個社交平臺企業工作,而且可以訪問整個平臺的數據庫,也就是能看到每個人的好友列表,那你可以嘗試遍歷所有的300人群組,然后挨個兒看他們是否有相同的關注人群,如果是,則他們被稱為一個團(Clique )。但是這樣算法的計算量太大,數量也太多了,通常無法全部遍歷。你也可以耍耍小聰明,也就是從小的群組開始,然后慢慢的將這個小群組擴大,納入那些彼此之間都是好友的人。當然實際做起來可能也有難度。其實從理論上來說,這個問題沒有最好的解決方案,沒有人知道到底存不存在比挨個遍歷更好的解決方案。這個例子其實就是一個典型的P和NP的問題。NP代表了可以有效檢驗一個解的準確性的一類問題。比如當你知道有300個人可能構成一個團,你就可以快速的檢驗出由他們兩兩配對的44850對用戶到底是不是都是彼此的好友。成團問題(clique problem)是一個NP問題。P則代表了可以有效找到解的問題。我們不知道這300個目標人群的問題是否也是具有P的可解性質。實際上,令人驚訝的是,成團問題具有“NP完全”的性質。也就是說,當且僅當P=NP時,我們才可以快速有效地解決成團問題。許多其他問題都具有NP完全的性質,比如3 Coloring問題(是否可以僅使用三種顏色對地圖進行染色,然后讓相鄰的兩個地塊沒有相同的顏色)、旅行商問題(通過城市列表找到最短路徑,讓這個旅行者能夠在路徑所有城市之后回到出發城市),等等。形式上來說,P代表“確定性多項式時間”,也就是可以在輸入長度的多項式限定時間之內解決的一類問題。NP則代表“非確定性多項式時間”。在實際的算法開發中,我們最好可以換個角度看待P和NP的問題:我們可以將前者視為可有效計算,而將后者視為可有效檢查的問題。大家如果想更多的了解P和NP的問題,可以去看看2009年的綜述論文,或者一些其他的科普書籍自行了解。也有一些比較偏正式的介紹工作,比如Michael Garey 和 David Johnson在1979年出版的書籍,他們的這本書對于想了解NP完全問題的讀者來說一定不能錯過:Garey, M. and Johnson, D. Computers and Intractability. A Guide to the Theory of NP-Completeness.W.H. Freeman and Company, New York, (1979).
如果P=NP,我們能得到更好的計算機程序嗎?如果你有一個解決NP完全問題的快速算法,你就可以用它來找到匹配旅行商問題的最短路徑,但是你不會知道為什么這種方法有效。另一方面,我們都希望能夠得到可解釋的算法,因為能夠深入了解其屬性。在研討會中,我們都在研究可解釋的人工智能,比如ACM Fairness Accountability and Trust會議等。機器學習的局限性雖然機器學習在過去的幾十年間取得了令人矚目的進展,但是這些系統遠非完美。在大多數的應用中,它們還是會被人類碾壓。我們將繼續通過新的和優化的算法,收集更多的數據并研發更快的硬件來提高機器學習的能力。機器學習似乎確實有不少的局限。正如我們上面看到的,機器學習讓我們無限逼近P=NP,但是永遠無法達到這個程度。比如,機器學習在破解密碼方面的進展很慢,我們稍后對其進行討論。機器學習似乎也無法學習簡單的算術關系。比如總結大量的數字規律,以及大數相乘。人們可以想象將機器學習和符號數學工具結合起來,一定能得到很好的效果。雖然我們已經在定理的證明應用方面看到了一些進步,但是距離夢想中的功能還比較遙遠。我也正在寫一篇相關的論文。同樣的,P=NP將使這些任務變得更加容易,或者至少更加易于處理。機器學習在面對和訓練數據分布不同的樣本的時候,表現通常不好。這可能是由于低概率的邊緣情況,例如在訓練數據中沒有很好的包括所有人種的時候,對于一些國家或者種族的人的識別效果比較差。深度神經網絡算法可能有數百萬個參數,因此,它們可能無法達成良好的泛化分布。如果P=NP,那就可以生成最小尺寸的模型,并且能夠做出最好的泛化,但是如果我們無法進行實驗,我們永遠不知道這是不是P=NP問題。跟機器學習一樣,我們目前還沒有任何的工作能夠接近真正意義上的通用人工智能。這個通用人工智能是指對某個主題的真正理解,或者真正具有意識或者自我意識的人工系統。定義這些術語可能比較棘手,也具有一些爭議。就我個人而言,我目前還沒見過一個正式的通用人工智能的合理定義,我只是抓住了對它概念的知覺的理解并且總結。我懷疑我們永遠不會實現真正意義上的通用人工智能,即使P=NP。