演算法中的NP問題

2021-07-05 04:29:15 字數 2446 閱讀 1301

在乙個週六的晚上,你參加了乙個盛大的晚會。由於感到侷促不安,你想知道這一大廳中是否有你已經認識的人。你的主人向你提議說,你一定認識那位正在甜點盤附近角落的女士羅絲。不費一秒鐘,你就能向那裡掃視,並且發現你的主人是正確的。然而,如果沒有這樣的暗示,你就必須環顧整個大廳,乙個個地審視每乙個人,看是否有你認識的人。

生成問題的乙個解通常比驗證乙個給定的解時間花費要多得多。這是這種一般現象的乙個例子。與此類似的是,如果某人告訴你,數13,717,421可以寫成兩個較小的數的乘積,你可能不知道是否應該相信他,但是如果他告訴你他可以因式分解為3607乘上3803,那麼你就可以用乙個袖珍計算器容易驗證這是對的。人們發現,所有的完全多項式非確定性問題,都可以轉換為一類叫做滿足性問題的邏輯運算問題。既然這類問題的所有可能答案,都可以在多項式時間內計算,人們於是就猜想,是否這類問題,存在乙個確定性演算法,可以在多項式時間內,直接算出或是搜尋出正確的答案呢?這就是著名的np=p?的猜想。 不管我們編寫程式是否靈巧,判定乙個答案是可以很快利用內部知識來驗證,還是沒有這樣的提示而需要花費大量時間來求解,被看作邏輯和電腦科學中最突出的問題之一。它是斯蒂文·考克於2023年陳述的。

npc問題:np中的某些問題的複雜性與整個類的複雜性相關聯.這些問題中任何乙個如果存在多項式時間的演算法,那麼所有np問題都是多項式時間可解的.這些問題被稱為np-完全問題(npc問題)。

p類問題,np類問題,npc之間的關係可有下圖(此圖正確性有待證明)表示:

總結:p類問題是可以在多項式時間內解決的,polynomial problem。

np類問題,可以在多項式的時間裡驗證乙個解的問題,non deterministic polynomial

npc問題,最不可能轉換為p決定的問題的集合,np complete

一.np難問題及p類問題

為了解釋np難問題及p類問題,先介紹確定性演算法和非確定性演算法這兩個概念,設a是求解問題π的乙個演算法,如果在演算法的整個執行過程中,每一步只有乙個確定的選擇,則稱演算法a是確定性(determinism)演算法。設a是求解問題π的乙個演算法,如果演算法a以如下猜測並驗證的方式工作,就稱演算法a是非確定性(nondeterminism)演算法:(1)猜測階段:在這個階段,對問題的輸入例項產生乙個任意字串y,在演算法的每一次執行時,串y的值可能不同,因此,猜測以一種非確定的形式工作。(2)驗證階段:在這個階段,用乙個確定性演算法驗證:① 檢查在猜測階段產生的串y是否是合適的形式,如果不是,則演算法停下來並得到no;② 如果串y是合適的形式,則驗證它是否是問題的解,如果是,則演算法停下來並得到yes,否則演算法停下來並得到no。

什麼是np難問題,如果對於某個判定問題π,存在乙個非負整數k,對於輸入規模為n的例項,能夠以o(nk)的時間執行乙個非確定性演算法,得到yes或no的答案,則該判定問題π是乙個 np 類(nondeterministic polynomial)問題。

令π是乙個判定問題,如果對於np類問題中的每乙個問題π',都有π'∝pπ,則稱判定問題π是乙個np難問題。

什麼是p類問題,如果對於某個判定問題π,存在乙個非負整數k,對於輸入規模為n的例項,能夠以o(nk)的時間執行乙個確定性演算法,得到yes或no的答案,則該判定問題π是乙個 p 類(polynomial)問題。所有易解問題都是p類問題。

p類問題和np類問題的主要差別:p類問題可以用多項式時間的確定性演算法來進行判定或求解;np類問題可以用多項式時間的非確定性演算法來進行判定或求解。

二.常見的np類問題

上面介紹了什麼是np問題,下面我將介紹我查閱到的一些常見的np問題,他們同時也是著名的np問題。

①圖著色問題 :按圖中所示方式將16條邊著色,那麼不管你從**出發,按照「藍紅紅藍紅紅藍紅紅」的路線走9步,你最後一定達到黃色頂點。路線著色定理就是說在滿足一定條件的有向圖中,這樣的著色方式一定存在。嚴格的數學描述如下。我們首先來定義同步著色。g是乙個有限有向圖並且g的每個頂點的出度都是k。g的乙個同步著色滿足以下兩個條件:1)g的每個頂點有且只有一條出邊被染成了1到k之間的某種顏色;2)g的每個頂點都對應一種走法,不管你從**出發,按該走法走,最後都結束在該頂點。有向圖g存在同步著色的必要條件是g是強連通而且是非週期的。乙個有向圖是非週期的是指該圖中包含的所有環的長度沒有大於1的公約數。路線著色定理這兩個條件(強連通和是非週期)也是充分的。也就是說,有向圖g存在同步著色當且僅當g是強連通而且是非週期的。

參考文獻:

[1] 黃文奇 許如初. 《近世計算理論導引:np難度問題的背景、前景及其求解演算法研究》. 科學出版社.  2004.  87

[2] 陳志平 徐宗本. 《計算機數學:計算複雜性理論與npc、np難問題的求解》 科學出版社.  2001.  292



演算法中的P問題 NP問題 NP完全問題和NP難問題

在討論演算法的時候,常常會說到這個問題的求解是個p類問題,或者是np難問題等等,於是我特地搜了這方面的資料,自己總結了下,估計研究演算法的大家應該都知道,要是我總結的 不對,歡迎一起 在講p類問題之前先介紹兩個個概念 多項式,時間複雜度。知道這兩概念的可以自動跳過這部分 1 多項式 axn bxn ...

演算法中的P問題 NP問題 NP完全問題和NP難問題

在討論演算法的時候,常常會說到這個問題的求解是個p類問題,或者是np難問題等等,於是我特地搜了這方面的資料,自己總結了下,估計研究演算法的大家應該都知道,要是我總結的 不對,歡迎一起 在講p類問題之前先介紹兩個個概念 多項式,時間複雜度。知道這兩概念的可以自動跳過這部分 1 多項式 axn bxn ...

演算法 NP 難度和NP 完全的問題

演算法運算的結果都是唯一確定的,這樣的演算法叫做確定的演算法 deterministic algorithm 如加減乘除 允許演算法每種運算的結果不是唯一確定的,而是受限於某個特定的可能性集合。執行這些運算的機器可以根據終止條件選擇可能性集合中的乙個作為結果。這就引出了所謂不確定的演算法 nonde...