P問題,NP問題,NPC問題,以及三者之間的關係

一、以下是從百度知道上轉載來的關於P問題,NP問題,NPC問題的解釋
1、P問題
     P是一個判定問題類,這些問題可以用一個確定性算法在多項式時間內判定或解出。如果一個判定性問題的複雜度是該問題的一個實例的規模n的多項式函數,則我們說這種可以在多項式時間內解決的判定性問題屬於P類問題。P類問題就是所有複雜度爲多項式時間的問題的集合。

NP是一個判定問題類,這些問題可以用一個確定算法在多項式時間內檢查或驗證出它們的解;P事實上很直觀,我們通常在編程中求解的問題大多都是P類問題.比如說排序,找最短路徑等.
2、NP問題

    然而有些問題很難找到多項式時間的算法(或許根本不存在),比如找出無向圖中的哈米爾頓迴路問題,但是我們發現如果給了我們該問題的一個答案,我們可以在多項式時間內判斷這個答案是否正確。比如說對於哈米爾頓迴路問題,給一個任意的迴路,我們很容易判斷他是否是哈米爾頓迴路(只要看是不是所有的頂點都在迴路中就可以了)。這種可以在多項式時間內驗證一個解是否正確的問題稱爲NP問題。顯然,所有的P類問題都是屬於NP問題的,但是現在的問題是,P是否等於NP?這個問題至今還未解決。
NP這個類事實上也很有趣,它並不要求給出一個算法來求解問題本身,而只是要求給出一個確定性算法在多項式時間內驗證它的解.
 
3、NP完全問題

    此外請注意,NP問題不一定都是難解的問題,比如,簡單的數組排序問題是P類問題,但是P屬於NP,所以也是NP問題,你能說他很難解麼?剛纔說了,現在還不知道是否有P=NP或者P<>NP,但是後來人們發現還有一系列的特殊NP問題,這類問題的特殊性質使得很多人相信P<>NP,只不過現在還無法證明。這類特殊的NP問題就是NP完全問題(NPC問題,C代表complete)。
NP完全問題是求NP中判定問題的一個子類.NPC問題存在着一個令人驚訝的性質,即如果一個NPC問題存在多項式時間的算法,則所有的NP問題都可以在多項式時間內求解,即P=NP成立!!這是因爲,每一個NPC問題可以在多項式時間內轉化成任何一個NP問題。比如前面說的哈米爾頓迴路問題就是一個NPC問題。NPC問題的歷史並不久,cook在1971年找到了第一個NPC問題,此後人們又陸續發現很多NPC問題,現在可能已經有3000多個了。所以,我們一般認爲NPC問題是難解的問題,因爲他不太可能存在一個多項式時間的算法(如果存在則所有的NP問題都存在多項式時間算法,這太不可思議了,但是也不是不可能)。類似哈米爾頓迴路/路徑問題,貨郎擔問題,集團問題,最小邊覆蓋問題(注意和路徑覆蓋的區別),等等很多問題都是NPC問題,所以都是難解的問題。

二、這是在學習密碼學時得來的解釋——P,NP,NP-hard,NP-complete
1、非確定機:考慮另一種“計算機”,它可以“猜”。它的執行方式近乎神奇:它總是按照最好的情況“猜”。例如用它解決n皇后問題,只需要讓它連續猜n次,就猜出了每個皇后的位置。非確定機的特點是:只要有一種猜法能滿足要求,它一定能猜到。現在使用的計算機爲確定機。目前這還只是一種虛構的機器,沒有發現真實的機器可以達到這個要求。

2、P類問題和NP問題:如果一個問題可以在多項式時間內被確定機解決,則它屬於P類問題;如果它可以在多項式時間內被非確定機解決,則它屬於NP類問題。顯然P是NP的子集。那麼是否存在在NP中卻不在P中的問題呢?目前還沒有人知道——它是計算理論最著名的難題之一,雖然無數跡象表明P很可能不等於NP。

3、NP-hard有這樣一種問題,所有NP 問題都可以歸約到這種問題,我們稱之爲 NP-hard問題。

4、NP-complete如果一個問題既是 NP 問題又是 NP-Hard 問題,則它是 NP-Complete問題。可滿足性問題就是一個 NP 完全問題,此外著名的給圖染色、哈密爾頓環、揹包、貨郎問題都是 NP 完全問題。 


兩種解釋基本差不多,可以幫助理解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章