【轉】NP的一些相關概念和認識

【嚴格定義請參考相關教材性讀物,此文儘量從通俗易懂入手】

1.先來幾個基礎的概念:

  • P問題:多項式時間內可解的判定問題
  • NP問題:多項式時間內可驗證(結果是0或者1)的問題
  • co-NP問題:NP的補問題
  • NPC問題:【NP-Complete】NP問題中最難的問題
  • NP-Hard問題:比所有NP問題還難的問題,但不要求一定是NP問題

2.關係分析:

  • 所謂驗證就是在提供一個證據的情況下,判斷一個目標是否可以達到,相比起來:判定就要找到一組具體的變量來滿足一定的目標條件,如達到最優解的一組變量值,而驗證是提供了某一組變量的值,看是否滿足目標條件。相對而言:

    驗證要比判定簡單。舉個簡單的例子:驗證就是給你一組數字,讓你看它是否是某個方程組的解,而判定則要求你求出所有解。毫無疑問,驗證是簡單的。(這裏只是舉例說明,不考慮精確性,儘管在中文中,這兩個詞的意思是如此接近,這裏的名詞也僅是常用的詞彙的翻譯,誰讓老外先研究我們再翻譯呢)

  • Co-NP是NP的補問題,舉例來講,如果我們說某一個某一個NP問題是:是否滿足條件的解,那麼Co-NP就是是否不存在這樣的解滿足條件?那麼Co-NP問題是NP問題麼,不一定。
  • 不要誤解爲NP就是P問題的反義(從字面上看),至少到目前爲止,還沒有人能證明P,NP,co-NP的絕對包含關係,我們的認知只是從一般感覺上出發【廣告:誰要是能解決這個包含問題,圖靈獎探囊取物】。當前研究者傾向於:

 

圖上很清晰,我就不解釋了。

  • NPC,俗稱NP完全問題,是號稱NP問題中最難的問題集合,據說目前已經找到1k多的NPC問題,它們都是最難的?yes,或者說是一樣難的,只要你能證明其中一個是可以多項式時間內找到解的,那麼你就證明了p=NP了。試想:最難的都是P的了,其它的就更不用說了。重複:圖靈獎也是你的了。

 

  • 常見的NPC問題有:
    • CIRCUIT-SAT 布爾組合電路:找到讓電路可滿足的布爾輸入值指定
    • SAT 布爾邏輯:找到讓布爾公式滿足的值指定
    • 2-CNF-SAT 三文字合取範式:找到讓三文字合範式最後輸出值滿足的值指定
    • Clique 完全子圖:在一個圖中,找到最大的頂點集合,要求這幾個頂點之間全連接
    • Vertex-cover 頂點覆蓋:在一個圖中,找到最小的頂點集合,要求這幾個頂點所相連接的邊覆蓋全圖
    • Ham-Cycle 哈密頓圈:要求尋找一條環遊路線使得經過每個定點恰好一次
    • TSP 旅行商問題:如何找到在拜訪每個地點一次後再回到起點的最短路徑,也就是最優哈密頓圈問題
    • Subset-sum 子集和:找到一個子集,讓其和滿足一定條件
  • NP-hard不一定是NP問題,如果我們希望證明一個問題是NPC問題,往往先證明其是一個NP問題,然後是NP-hard問題,那麼其就是一個NPC問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章