1. 程式人生 > >P 問題和 NP 問題

P 問題和 NP 問題

P就是能在多項式時間內解決的問題,NP就是能在多項式時間驗證答案正確與否的問題。用大白話講大概就是這樣。所以P是否等於NP實質上就是在問,如果對於一個問題我能在多項式時間內驗證其答案的正確性,那麼我是否能在多項式時間內解決它?這個表述不太嚴謹,但通俗來講就是如此。

再說說NP-hardness和NP-completenes. 這裡涉及一個概念,不妨稱為問題之間的歸約。可以認為各個問題的難度是不同的,表現形式為,如果我可以把問題A中的一個例項轉化為問題B中的一個例項,然後通過解決問題B間接解決問題A,那麼就認為B比A更難。通過對歸約過程做出限制可以得到不同型別的歸約。複雜度理論裡經常用到的規約叫polynomial-time Karp' reduction。其要求是轉化問題的過程必須是多項式時間內可計算的。

到這為止NP-hardness和NP-completeness就很好理解了。稱問題L是NP-hard,如果任意一個NP的問題都可以多項式規約到L。如果一個NP-hard的問題L本身就是NP的,則稱L是NP-complete。這個定義可以推廣到所有複雜度類。所以compleness的直觀解釋就是,我能解決這個問題就相當於具備了用相同級別的計算資源解決這個複雜度類裡所有問題的能力。