在計算機領域,一般可以將問題分為可解問題和不可解問題。不可解問題也可以分為兩類:一類如停機問題,的確無解;另一類雖然有解,但時間複雜度很高,計算機往往不能承受。可解問題也分為多項式問題(polynomial problem,p問題)和非確定性多項式問題(nondeterministic polynomial problem,np問題)。
p問題:polynomial-time問題,可以在多項式時間內用演算法進行求解的問題。
np問題:非確定性多項式時間(nondeterministic polynomial-time)問題,所謂的非確定性是指,可用一定數量的運算去解決多項式時間內可解決的問題,不確定是否存在多項式時間求解演算法。可以在多項式時間內驗證乙個猜測解的正確性。
不可判定問題(undecidable problem):"不可能「解出的問題。
npc(np complete)np完全問題:np問題中最困難的問題
每乙個npc問題都可以在多項式時間內轉化成任何乙個np問題,如果乙個npc問題存在多項式時間演算法,那麼所有np問題都可以在多項式時間內求解,即p=np成立。只要任意乙個npc問題找到了乙個多項式演算法,那麼所有np問題都能用這個演算法解決,也就解決了np=p問題。但是給npc找乙個多項式演算法太不可想象了,而且也從未成功,因此科學家認為,正是npc問題的存在,使得人們相信p=np。
npc問題目前沒有多項式演算法,只能用窮舉法逐個檢驗,最終得到答案。但是窮舉法的計算時間隨問題的複雜程度呈指數增長,很快問題就會變得不可計算了。
圍棋或象棋的博弈問題、西洋棋的n皇后問題、密碼學中的大素數分解問題等,都屬於npc類問題。
多項式時間:
知乎裡面看到的乙個比較容易理解的解釋如下:
簡言之:
對於時間複雜度一種是o(1),o(log(n)),o(n^a)等,因為它的規模n出現在底數的位置,稱為多項式級的複雜度;o(a^n)和o(n!)型複雜度,它是非多項式級的,其複雜度計算機往往不能承受。
(以後遇到其他的再進行補充)
參考:
P問題 NP問題 NPC問題 NPH問題概述
如果乙個問題可以找到乙個能在多項式的時間裡解決該問題的演算法,這個問題就屬於p問題。可以在多項式的時間裡驗證乙個解的問題。所有的p問題都是np問題,即能在多項式時間內解決乙個問題,必然能在多項式時間裡驗證乙個問題的解。首先必須是乙個np問題,然後所有的np問題都可以約化到該問題。約化 問題a可以約化...
P問題 NP問題 NP完全問題和NP難問題
在講p類問題之前先介紹兩個個概念 多項式,時間複雜度。知道這兩概念的可以自動跳過這部分 1 多項式 axn bxn 1 c 恩.就是長這個樣子的,叫x最高次為n的多項式.咳咳,別嫌我囉嗦。有些人說不定還真忘了啥是多項式了。例如第一次看到的鄙人 2 時間複雜度 我們知道在計算機演算法求解問題當中,經常...
P問題 NP問題 NP完全問題和NP難問題概念梳理
正規的問題是讓程式解決乙個問題 很顯然,p類問題是np類問題,p類問題的驗證程式可以這樣設計,顯然驗證程式屬於o 多項式 驗證程式 猜測解 演算法程式 問題解 return 問題解 猜測解p np問題其實 的就是p類問題和np類問題的關係,由前面我們知道p類問題是np類問題,但是我們仍不知道np類問...