NP完全問題是不確定性圖靈機在P時間內能解決的問題,是
世界七大數學難題之一。
NP完全問題排在百萬美元大獎的首位,足見他的顯赫地位和無窮魅力。
數學上著名的NP問題,完整的叫法是NP完全問題,也即“NP COMPLETE”問題,簡單的寫法,是 NP=P?的問題。問題就在這個問號上,到底是NP等於P,還是NP不等於P。證明其中之一,便可以拿百萬美元大獎。
這個獎還沒有人拿到,也就是說,NP問題到底是Polynomial(意思是多項式的),還是Non-Polynomial,尚無定論。
NP裡面的N,不是Non-Polynomial的N,是Non-Deterministic(意思是非確定性),P代表Polynomial倒是對的。NP就是Non-deterministic Polynomial的問題,也即是多項式複雜程度的非確定性問題。
什麼是非確定性問題呢?有些計算問題是確定性,比如加減乘除之類,你只要按照公式推導,按部就班一步步來,就可以得到結果。但是,有些問題是無法按部就班直接地計算出來。比如,找大質數的問題。有沒有一個公式,你一套公式,就可以一步步推算出來,下一個質數應該是多少呢?這樣的公式是沒有的。再比如,大的合數分解質因數的問題,有沒有一個公式,把合數代進去,就直接可以算出,它的因子各自是多少?也沒有這樣的公式。
這種問題的答案,是無法直接計算得到的,只能通過間接的“猜算”來得到結果。這也就是非確定性問題。而這些問題的通常有個演算法,它不能直接告訴你答案是什麼,但可以告訴你,某個可能的結果是正確的答案還是錯誤的。這個可以告訴你“猜算”的答案正確與否的演算法,假如可以在多項式時間內算出來,就叫做多項式非確定性問題。而如果這個問題的所有可能答案,都是可以在多項式時間內進行正確與否的驗算的話,就叫完全多項式非確定問題。
完全多項式非確定性問題可以用窮舉法得到答案,一個個檢驗下去,最終便能得到結果。但是這樣演算法的複雜程度,是指數關係,因此計算的時間隨問題的複雜程度成指數的增長,很快便變得不可計算了。
人們發現,所有的完全多項式非確定性問題,都可以轉換為一類叫做滿足性問題的邏輯運算問題。既然這類問題的所有可能答案,都可以在多項式時間內計算,人們於是就猜想,是否這類問題,存在一個確定性演算法,可以在指數時間內,直接算出或是搜尋出正確的答案呢?這就是著名的NP=P?的猜想。
解決這個猜想,無非兩種可能,一種是找到一個這樣的演算法,只要針對某個特定NP完全問題找到一個演算法,所有這類問題都可以迎刃而解了,因為他們可以轉化為同一個問題。另外的一種可能,就是這樣的演算法是不存在的。那麼就要從數學理論上證明它為什麼不存在。
前段時間轟動世界的一個數學成果,是幾個印度人提出了一個新演算法,可以在多項式時間內,證明某個數是或者不是質數,而在這之前,人們認為質數的證明,是個非多項式問題。可見,有些看來好象是非多項式的問題,其實是多項式問題,只是人們一時還不知道它的多項式解而已。
如果判定問題π∈NP,並且對所有其他判定問題 π∈NP,都有π'多項式變換到π(記為π'∞π),則稱判定問題π 是NP完全的。
對P類,NP類及NP完全問題的研究推動 了計算複雜性理論的發展,產生了許多新概念,提出了許多新方法。但是還有許多難題至今沒有解決,P=NP?就是其中之一。許多學者猜想P≠NP,但無法證明。