NP完全
(NP-Complete,縮寫為NP-C或NPC),是計算複雜度理論中,決定性問題的等級之一。NP完备是NP与NP困难問題的交集,是NP中最難的決定性問題,所有NP問題都可以在多項式時間內被歸約(reduce to)為NP完備問題。倘若任何NP完備問題得到多項式時間內的解法,則該解法就可應用在所有NP問題上,亦可證明NP問題等於P問題,然而目前為止並未發現任何能在多項式時間內解決NP完備問題的方法。
正式定義
假設P ≠ NP的複雜度類的圖解。若P = NP則三類別相同。
一個決定性問題C若是為NPC(NP完備),則代表它對NP是完備的,這表示:
- 它是一個NP問題
- 它是一個NP困難問題
- 其他屬於NP的問題都可在多項式時間內归约(reduce to)成它。
可歸約(reducible)在此意指對每個問題L,總有一個多項式時間多對一變換,即一個決定性的演算法可以將實例l ∈ L轉化成實例c ∈ C,並讓c回答Yes此答案對l也是Yes。為了證明某個NP問題A實際上是NP完備問題,證明者必須找出一個已知的NP完備問題可以歸約成A。
本定義得到一個結論,就是若上述的C有一個多項式時間可解的演算法,則我們可以將所有的NP問題降到P之中。若欲證明一個問題是NPC,最簡單的方法是先證明它屬於NP,然後將「某個已知是NPC的問題」歸約成它。
歷史
前述定義是史提芬·古克所提出。雖然NPC這個詞並沒有出現在這篇論文上任何地方。在這個資訊科學會議上,資訊科學家激動地討論NPC問題是否可以在一個確定型圖靈機上以多項式時間求解。John Hopcroft總結與會眾人的共識,認為由於沒有人能對某一命題提出駁倒對方的證明,此問題不會於現在解決。此命題就是知名的
P和NP相等嗎?。尚未有人能提出證明,說明NPC問題是否能在多項式時間中解決,使