通俗易懂的P vs NP問題解釋 -@AlejandroPiad
在整個電腦科學中最重要的問題:P是否等於NP?
關於這個問題的正確的答案是什麼?我們仍然不知道,但是大多數電腦科學家認為P不等於NP。原因主要是哲學上的,但也有證據表明,如果P等於NP,則會發生很多奇怪的事情。
P對NP問題是Steve Cook於1971年首次提出的。“P/NP問題”的P指多項式時間(Polynomial),一個複雜問題如果能在多項式時間內解決,那麼它便被稱為P問題,這意味著計算機可以在有限時間內完成計算; NP指非確定性多項式時間(nondeterministic polynomial),一個複雜問題不能確定在多項式時間內解決,假如NP問題能找到演算法使其在多項式時間內解決,也就是證得了P=NP - 百度百科 |
電腦科學就是尋找解決難題的巧妙方法。我們為其中的一些演算法找到了巧妙的演算法:對事物進行排序,找到最短路徑,求解方程式,模擬事務...。
但是有些問題似乎太難了,一個例子是旅行問題。
查詢從您的家鄉城市出發的自駕車之旅,希望訪問您所在國家/地區的所有主要城市,但是必須以最低的燃油費用返回家中。
這是我們希望計算機輕鬆解決的問題,對嗎?那就是計算機的用途!
好吧,非常聰明的人已經嘗試過了,沒有人想出一種總是比簡單地嘗試所有可能的迴圈更好的演算法。
問題在於,迴圈數的增長速度總是快於城市的增長速度!
讓我們更加輕鬆一些,如果我簡單地問:
是否可以旅行所有燃料費少於X美元的城市?
尚無人知道一種演算法,可以精確地針對任何X值回答該問題,而無需嘗試所有迴圈,而這又是指數級的。
那麼,我們是否很愚蠢?還是這個問題太複雜了,以至於在一般情況下不可能找到一個聰明的演算法來解決它?這是所有電腦科學中最重要的問題的根源:P vs NP。
回答這個問題比看起來要困難得多,您會看到,CS中的大多數問題都與事物有關:如何排序,如何比較,如何處理...
但這是一個元問題:
關於是否存在本質上很難解決的事物問題?
斯蒂芬·庫克(Stephen Cook)在電腦科學的早期試圖回答這個問題。他提出了以下定義:
假設我們有一個形式的問題:
是否存在具有指定屬性Q的物件X?
現在來看看這個問題的回答難度。以下是這種型別的簡單問題的一個示例:
給定一個由N個元素組成的陣列,是否有一個元素小於X?
回答這個問題很容易。逐個檢視每個元素,然後將其與X進行比較。對於任何可能的陣列,該過程最多需要N個步驟。
這是P中問題的一個示例。P在這裡表示“多項式時間複雜度”。直觀地講,如果存在一種演算法可以在多項式時間內計算出正確的答案,那麼它屬於P問題。
現在回到旅行推銷員,假設我給您一個答案:
是的,這是一個燃料成本小於X的迴圈。
您如何驗證答案的正確性?您只需累計迴圈中所有邊/路線的成本。這會再次需要N步計算才能得到答案。
下面這是NP問題的一個例子。此處的NP表示“不確定的多項式-時間複雜度”。直觀上,如果存在一種演算法可以驗證多項式時間的正確答案,則屬於NP問題。
P問題很容易解決。NP問題,我們尚不知道,但至少它們很容易驗證,這是關鍵的。
請注意,P問題也是NP。
現在,P與NP問題正式是這樣的:
NP中是否存在P中沒有的問題?
P vs NP基本上是在問:是否存在天生難於解決的問題,而與我們未來的聰明程度無關。
正確的答案是什麼?我們仍然不知道,但是大多數電腦科學家認為P不等於NP。
原因主要是哲學上的,但也有證據表明,如果P等於NP,則會發生很多奇怪的事情。
這個問題是電腦科學的核心,因為它討論了計算的本質及其固有的侷限性,無論技術如何改進。
相關文章
- 博基計劃(3)---P問題、NP問題、NPC問題、NP-hard問題
- 什麼是P問題、NP問題和NPC問題
- [轉載]什麼是P問題、NP問題和NPC問題
- AI數學基礎之:P、NP、NPC問題AI
- P、NP、NPC和NP-Hard相關概念的圖形和解釋
- NP完全問題
- NP-完全問題
- NP-Hard問題
- NP難問題求解綜述
- 通俗易懂的解釋:什麼是APIAPI
- CAP理論—最通俗易懂的解釋
- 洛谷P2404 自然數的拆分問題——題解
- P2404 自然數的拆分問題c++題解C++
- 讀人工智慧全傳04NP完全問題人工智慧
- VS2019配置Opencv遇到的部分問題及解決方案OpenCV
- P9373的題解
- P5951的題解
- 多執行緒問題解釋執行緒
- C10M問題解釋
- 兩個考研政治很多人問題但是解釋通的問題
- 通俗易懂解釋Rust所有權和借用概念Rust
- 洛谷 p1605 迷宮問題 詳解
- 機器學習梯度下降法,最通俗易懂的解釋機器學習梯度
- 解決Eclipse中文註釋部分亂碼的問題Eclipse
- [題解]P6374 「StOI-1」樹上詢問
- P2404 自然數的拆分問題
- P10717 題解
- P5324 題解
- P9007 題解
- 幽默meme:如何提問題 Vs. 樂觀答題 Vs. 悲觀答題
- 釋出新聞稿必須瞭解的幾個問題
- VS2019中scanf返回值被忽略的問題及其解決方法
- edk2+VS2008配置問題
- P1106 刪數問題
- 通俗易懂解釋什麼是PCIA(主成分分析) - stackexchange
- P6156 簡單題 題解
- P4093 序列 題解
- P3735 字串 題解字串