『壹』 p=NP是什麼意思
P對NP問題是克雷數學研究所高額懸賞的七個千禧年難題之一,同時也是計算機科學領域的最大難題,關繫到計算機完成一項任務的速度到底有多快。
1、簡介
P對NP問題是Steve Cook於1971年首次提出。"P/NP問題",這里的P指在多項式時間(Polynomial)里,一個復雜問題如果能在多項式時間內解決,那麼它便被稱為P問題,這意味著計算機可以在有限時間內完成計算;NP指非確定性多項式時間(nondeterministic polynomial),一個復雜問題不能確定在多項式時間內解決,假如NP問題能找到演算法使其在多項式時間內解決,也就是證得了P=NP。比NP問題更難的則是NP完全和NP-hard,如圍棋便是一個NP-hard問題。2010年8月7日,來自惠普實驗室的科學家Vinay Deolalikar聲稱已經解決了"P/NP問題" ,並公開了證明文件。
2、排序問題
如果我們只能通過元素間的相互比較來確定元素間的相互位置,而沒有其他的附加可用信息,則排序問題的復雜性是O(nlgn),但是排序演算法有很多,冒泡法是O(n^2),快速排序平均情況下是O(nlgn)等等,排序問題的復雜性是指在所有的解決該問題的演算法中最好演算法的復雜性。問題的復雜性不可能通過枚舉各種可能演算法來得到,一般都是預先估計一個值,然後從理論上證明。
3、定義
為了研究問題的復雜性,我們必須將問題抽象,為了簡化問題,我們只考慮一類簡單的問題,判定性問題,即提出一個問題,只需要回答yes或者 no的問題。任何一般的最優化問題都可以轉化為一系列判定性問題,比如求從A到B的最短路徑,可以轉化成:從A到B是否有長度為1的路徑?從A到B是否有長度為2的路徑?。。。從A到B是否有長度為k的路徑?如果問到了k的時候回答了yes,則停止發問,我們可以說從A到B的最短路徑就是k。如果一個判定性問題的復雜度是該問題的一個實例的規模n的多項式函數,則我們說這種可以在多項式時間內解決的判定性問題屬於P類問題。P類問題就是所有復雜度為多項式時間的問題的集合。然而有些問題很難找到多項式時間的演算法(或許根本不存在),比如找出無向圖的哈米爾頓迴路問題,但是我們發現如果給了我們該問題的一個答案,我們可以在多項式時間內判斷這個答案是否正確。比如說對於哈米爾頓迴路問題,給一個任意的迴路,我們很容易判斷他是否是哈米爾頓迴路(只要看是不是所有的頂點都在迴路中就可以了)。這種可以在多項式時間內驗證一個解是否正確的問題稱為NP問題。顯然,所有的P類問題都是屬於NP問題的,但是現在的問題是,P是否等於NP?這個問題至今還未解決。這就是P對NP問題。
4、P≠NP論證
如果P=NP,那麼每個答案很容易得到驗證的問題也同樣可以輕松求解。這將對計算機安全構成巨大威脅,目前加密系統的破解就相當於要將一個整數分解為幾個因數的乘積,正是其求解過程的繁瑣,才能杜絕黑客的入侵。
而現在,美國惠普實驗室的數學家維奈·迪奧拉里卡圍繞一個眾所周知的NP問題進行論證,給出了P≠NP的答案。這就是布爾可滿足性問題(Boolean Satisfiability Problem),即詢問一組邏輯陳述是否能同時成立或者互相矛盾。迪奧拉里卡聲稱,他已經證明,任何程序都無法迅速解答這個問題,因此,它不是一個P問題。
如果迪奧拉里卡的答案成立,說明P問題和NP問題是不同的兩類問題,這也意味著計算機處理問題的能力有限,很多任務的復雜性從根本上來說也許是無法簡化的。
對於有些NP問題,包括因數分解,P≠NP的結果並沒有明確表示它們是不能被快速解答的;但對於其子集NP完全問題,卻註定了其無法很快得到解決。其中一個著名的例子就是旅行商問題(Travelling Salesman Problem),即尋找從一個城市到另一個城市的最短路線,答案非常容易驗證,不過,如果P≠NP,就沒有計算機程序可以迅速給出這個答案。
迪奧拉里卡的論文草稿已經得到了復雜性理論家的認可,但隨後公布的論文終稿還將接受嚴格的審查。