什麼是P問題,NP問題和NPC問題?

2021-07-08 12:28:49 字數 820 閱讀 4544

先簡單的幾句話說一下時間複雜度。時間複雜度並不是計算機解決乙個問題需要花多長時間,而是當問題規模擴大後,而是當問題規模擴大後,程式需要的時間增長速度有多快。

不管程式資料有多大,程式處理花的時間總是那麼多的,那我們說這個這個程式很好,具有o(1)的複雜度,也就是常數級複雜度;

資料規模變得多大,花的時間也跟著變得有多長,那這個程式具有o(n)的複雜度,而像氣泡排序、插入排序,資料擴大兩倍,時間擴大四倍的,我們稱為具有o(n2)複雜度。以此類推,如此等等。

容易看出,複雜度主要分為兩種級別,其中後者的複雜度都遠遠大於前者:

一種是o(1),o(log n),o(n的a次方),我們把他們叫做多項式級別的複雜度,因為它們的規模n出現在底數的位置;

另一種是o(a的n次方),o(n!)型複雜度,它是非多項式的,其複雜度計算機往往不能承受。

當我們解決乙個問題時,選擇的複雜度往往是多項式級別的複雜度,非多項式級別的複雜度需要的時間太多,往往會超時,除非這個問題的規模非常小。

問題是:是不是所有的問題都可以找到多項式級別複雜度的演算法呢?答案是否定的。甚至有些問題根本不可能找出乙個正確的演算法來,這樣的問題成為之不可解問題。

p類問題:如果乙個問題可以找到乙個能在多項式的時間裡解決它的演算法,那麼這個問題就稱為p問題。p是多項式英文單詞的第乙個字母polinomial。

np問題:這裡強調,np問題不是非p類問題。np問題是指可以在多項式時間裡驗證乙個解的問題。np問題的另乙個定義是,可以在多項式時間裡猜出乙個解的問題。很顯然,所有的p類問題都是np問題。

npc問題:也稱為np完全問題,首先它是乙個np問題,另外一條是所有的np問題都可以約化得到它。

鏈結在這裡:

什麼是P問題,什麼是NP問題,什麼是NPC問題

參考 講的真好!非多項式級別 運算慢,巨大 o n o 多項式級的複雜度 運算快,比較小 o 1 o n o 該問題能夠找到乙個解決演算法,時間複雜度是o 1 o n o 多項式時間 的級別 找乙個解很困難,但驗證乙個解很容易。我們可能沒有乙個已知的快速的解決問題的方法,但是如果給我們乙個候選的答案...

演算法問題 什麼是P問題 NP問題和NPC問題zz

npc問題的定義非常簡單。同時滿足下面兩個條件的問題就是npc問題。首先,它得是乙個np問題 然後,所有的np問題都可以約化到它。證明乙個問題是 npc問題也很簡單。先證明它至少是乙個np問題,再證明其中乙個已知的npc問題能約化到它 由約化的傳遞性,則npc問題定義的第二條也得以滿足 至於第乙個n...

P問題 NP問題和NPC問題

p就是能在多項式時間內解決的問題 np就是能在多項式時間驗證答案正確與否的問題。p是否等於np實質上就是在問,如果對於乙個問題我能在多項式時間內驗證其答案的正確性,那麼我是否能在多項式時間內解決它?再說說np hardness和np completenes.這裡涉及乙個概念,不妨稱為問題之間的歸約。...