P問題 NP問題 NPC問題和NPH問題

2021-10-08 06:47:22 字數 1150 閱讀 7044

理解p問題需要了解的知識:多項式、時間複雜度。

多項式:ax^n-bx^n-1+c,就是在數學上經常見到的式子。

時間複雜度:指執行演算法所需要的計算工作量,它定性描述該演算法的執行時間。時間複雜度常用大o表述,例如o(n^2),代表其時間複雜度為n^2。

p問題:存在多項式時間演算法的問題。(p:polynominal,多項式)。通俗來講,如果乙個問題可以找到乙個能在多項式的時間裡解決它的演算法,那麼這個問題就屬於p問題。例如,給定乙個陣列需要排序,可以使用排序演算法,常用的排序演算法有快速排序,氣泡排序。其中快排的時間複雜度為o(log(n),氣泡排序的時間複雜度為o(n^2)。

np問題:能在多項式時間內驗證得出乙個正確解的問題。(np:nondeterministic polynominal,非確定性多項式)。

比如hamilton迴路和tsp問題,對於這種問題,你要算出所有可能的話,只能使用窮舉法。但是這種o(a^n)和o(n!)型複雜度,它是非多項式級的,其複雜度計算機往往不能承受。

np問題是包含p問題的。也就是說,能多項式地解決乙個問題,必然能多項式地驗證乙個問題的解。很顯然,所有的p類問題都是np問題。但是不能說np=p,目前還沒有人證明出這個結論。

在p和np問題中,p的難度最低,np由於只對驗證答案的時間作了限定,從而有可能包含某些無法在多項式時間內找到答案的問題,即np是比p更困難的問題。

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

通俗來講npc問題就是用來解決np是否等於p,要證明npc問題的思路:先證明它至少是乙個np問題,再證明其中乙個已知的npc問題能約化到它。

nph:所有np問題都能在多項式時間複雜度內歸約到的問題。即所有的np問題都能約化到它,但是他不一定是乙個np問題。(nph:nondeterminism polynomial hard,難的非確定性多項式問題)。

它和npc問題的區別在於,這個問題可以不是np問題。

以上四個問題他們之間的關係可以用下圖來表示:

P問題 NP問題和NPC問題

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

NP問題和NPC問題

什麼叫做np問題,什麼叫做npc問題?首先說明一下問題的複雜性和演算法的複雜性的區別,下面只考慮時間複雜性。演算法的複雜性是指解決問題的乙個具體的演算法的執行時 間,這是演算法的性質 問題的複雜性是指這個問題本身的複雜程度,是問題的性質。比如對於排序問題,如果我們只能通過元素間的相互比較 來確定元素...

NP問題和NPC問題

什麼叫做np問題,什麼叫做npc問題?首先說明一下問題的複雜性和演算法的複雜性的區別,下面只考慮時間複雜性。演算法的複雜性是指解決問題的乙個具體的演算法的執行時 間,這是演算法的性質 問題的複雜性是指這個問題本身的複雜程度,是問題的性質。比如對於排序問題,如果我們只能通過元素間的相互比較 來確定元素...