現定義三類問題
P類問題:所有可以在多項式時間內求解的判定問題構成P類問題。判定問題:判斷是否有一種能夠解決某一類問題的能行演算法的研究課題。
NP類問題:所有的非確定性多項式時間可解的判定問題構成NP類問題。非確定性演算法:非確定性演算法將問題分解成猜測和驗證兩個階段。演算法的猜測階段是非確定性的,演算法的驗證階段是確定性的,它驗證猜測階段給出解的正確性。設演算法A是解一個判定問題Q的非確定性演算法,如果A的驗證階段能在多項式時間內完成,則稱A是一個多項式時間非確定性演算法。有些計算問題是確定性的,例如加減乘除,只要按照公式推導,按部就班一步步來,就可以得到結果。但是,有些問題是無法按部就班直接地計算出來。比如,找大質數的問題。有沒有一個公式能推出下一個質數是多少呢?這種問題的答案,是無法直接計算得到的,只能通過間接的「猜算」來得到結果。這也就是非確定性問題。而這些問題的通常有個演算法,它不能直接告訴你答案是什麼,但可以告訴你,某個可能的結果是正確的答案還是錯誤的。這個可以告訴你「猜算」的答案正確與否的演算法,假如可以在多項式(polynomial)時間內算出來,就叫做多項式非確定性問題。
NPC問題:NP中的某些問題的複雜性與整個類的複雜性相關聯.這些問題中任何一個如果存在多項式時間的演算法,那麼所有NP問題都是多項式時間可解的.這些問題被稱為NP-完全問題(NPC問題)。
試問:
那麼P問題與NP問題能相互轉換嗎?