P類(lei)問題(ti):所有可以在多(duo)項式時間內(nei)求解的(de)判(pan)定問題(ti)構成P類(lei)問題(ti)。判(pan)定問題(ti):判(pan)斷是(shi)否(fou)有一種(zhong)能(neng)(neng)夠解決(jue)某一類(lei)問題(ti)的(de)能(neng)(neng)行(xing)算(suan)法的(de)研(yan)究課題(ti)。
NP類問(wen)(wen)題(ti):所有(you)的(de)(de)(de)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性多項(xiang)(xiang)式(shi)(shi)時間(jian)(jian)可(ke)(ke)解的(de)(de)(de)判定(ding)(ding)問(wen)(wen)題(ti)構成(cheng)NP類問(wen)(wen)題(ti)。非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性算(suan)(suan)(suan)法(fa)(fa):非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性算(suan)(suan)(suan)法(fa)(fa)將問(wen)(wen)題(ti)分解成(cheng)猜(cai)測(ce)和驗(yan)(yan)證兩個(ge)(ge)階段(duan)。算(suan)(suan)(suan)法(fa)(fa)的(de)(de)(de)猜(cai)測(ce)階段(duan)是(shi)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性的(de)(de)(de),算(suan)(suan)(suan)法(fa)(fa)的(de)(de)(de)驗(yan)(yan)證階段(duan)是(shi)確(que)(que)(que)定(ding)(ding)性的(de)(de)(de),它驗(yan)(yan)證猜(cai)測(ce)階段(duan)給(gei)出解的(de)(de)(de)正(zheng)確(que)(que)(que)性。設算(suan)(suan)(suan)法(fa)(fa)A是(shi)解一(yi)(yi)個(ge)(ge)判定(ding)(ding)問(wen)(wen)題(ti)Q的(de)(de)(de)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性算(suan)(suan)(suan)法(fa)(fa),如果(guo)A的(de)(de)(de)驗(yan)(yan)證階段(duan)能(neng)在多項(xiang)(xiang)式(shi)(shi)時間(jian)(jian)內完成(cheng),則稱A是(shi)一(yi)(yi)個(ge)(ge)多項(xiang)(xiang)式(shi)(shi)時間(jian)(jian)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性算(suan)(suan)(suan)法(fa)(fa)。有(you)些(xie)計(ji)(ji)算(suan)(suan)(suan)問(wen)(wen)題(ti)是(shi)確(que)(que)(que)定(ding)(ding)性的(de)(de)(de),例如加減乘除(chu),只要按(an)照公式(shi)(shi)推導,按(an)部就(jiu)班一(yi)(yi)步(bu)步(bu)來(lai)(lai),就(jiu)可(ke)(ke)以得到結果(guo)。但(dan)是(shi),有(you)些(xie)問(wen)(wen)題(ti)是(shi)無法(fa)(fa)按(an)部就(jiu)班直接(jie)地計(ji)(ji)算(suan)(suan)(suan)出來(lai)(lai)。比如,找大質數的(de)(de)(de)問(wen)(wen)題(ti)。有(you)沒有(you)一(yi)(yi)個(ge)(ge)公式(shi)(shi)能(neng)推出下一(yi)(yi)個(ge)(ge)質數是(shi)多少呢?這種問(wen)(wen)題(ti)的(de)(de)(de)答(da)(da)案(an),是(shi)無法(fa)(fa)直接(jie)計(ji)(ji)算(suan)(suan)(suan)得到的(de)(de)(de),只能(neng)通過(guo)間(jian)(jian)接(jie)的(de)(de)(de)“猜(cai)算(suan)(suan)(suan)”來(lai)(lai)得到結果(guo)。這也(ye)就(jiu)是(shi)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性問(wen)(wen)題(ti)。而這些(xie)問(wen)(wen)題(ti)的(de)(de)(de)通常有(you)個(ge)(ge)算(suan)(suan)(suan)法(fa)(fa),它不能(neng)直接(jie)告(gao)(gao)訴你(ni)答(da)(da)案(an)是(shi)什么(me),但(dan)可(ke)(ke)以告(gao)(gao)訴你(ni),某個(ge)(ge)可(ke)(ke)能(neng)的(de)(de)(de)結果(guo)是(shi)正(zheng)確(que)(que)(que)的(de)(de)(de)答(da)(da)案(an)還是(shi)錯(cuo)誤(wu)的(de)(de)(de)。這個(ge)(ge)可(ke)(ke)以告(gao)(gao)訴你(ni)“猜(cai)算(suan)(suan)(suan)”的(de)(de)(de)答(da)(da)案(an)正(zheng)確(que)(que)(que)與(yu)否的(de)(de)(de)算(suan)(suan)(suan)法(fa)(fa),假如可(ke)(ke)以在多項(xiang)(xiang)式(shi)(shi)(polynomial)時間(jian)(jian)內算(suan)(suan)(suan)出來(lai)(lai),就(jiu)叫做多項(xiang)(xiang)式(shi)(shi)非(fei)(fei)(fei)(fei)確(que)(que)(que)定(ding)(ding)性問(wen)(wen)題(ti)。
NPC問(wen)(wen)題(ti):NP中(zhong)的(de)某些(xie)問(wen)(wen)題(ti)的(de)復雜性(xing)與整個(ge)(ge)類的(de)復雜性(xing)相關聯.這些(xie)問(wen)(wen)題(ti)中(zhong)任何(he)一(yi)個(ge)(ge)如果存在多項式(shi)時(shi)間的(de)算法(fa),那么(me)所有NP問(wen)(wen)題(ti)都是多項式(shi)時(shi)間可解的(de).這些(xie)問(wen)(wen)題(ti)被稱為NP-完(wan)全問(wen)(wen)題(ti)(NPC問(wen)(wen)題(ti))。
在一(yi)個(ge)周六的晚上,你參加了(le)一(yi)個(ge)盛大(da)的晚會(hui)。由于感到局(ju)促不安,你想(xiang)知(zhi)道這一(yi)大(da)廳(ting)中是(shi)否有(you)你已經認(ren)識的人(ren)(ren)。你的主人(ren)(ren)向你提(ti)議說,你一(yi)定認(ren)識那位正在甜點盤附(fu)近(jin)角(jiao)落的女士(shi)羅絲。不費一(yi)秒(miao)鐘,你就能(neng)向那里掃視(shi),并且發(fa)現你的主人(ren)(ren)是(shi)正確的。然而,如果沒有(you)這樣的暗(an)示,你就必(bi)須環顧整個(ge)大(da)廳(ting),一(yi)個(ge)個(ge)地審視(shi)每一(yi)個(ge)人(ren)(ren),看是(shi)否有(you)你認(ren)識的人(ren)(ren)。
生成(cheng)問(wen)(wen)題(ti)(ti)(ti)的(de)(de)(de)一個(ge)(ge)解(jie)通常比驗證(zheng)一個(ge)(ge)給定的(de)(de)(de)解(jie)時(shi)(shi)間(jian)花(hua)費(fei)要多(duo)得多(duo)。這是(shi)(shi)(shi)(shi)(shi)這種一般現象的(de)(de)(de)一個(ge)(ge)例子。與此類似的(de)(de)(de)是(shi)(shi)(shi)(shi)(shi),如(ru)果某人(ren)告(gao)訴(su)你(ni)(ni),數13,717,421可以(yi)寫成(cheng)兩個(ge)(ge)較小(xiao)的(de)(de)(de)數的(de)(de)(de)乘(cheng)積,你(ni)(ni)可能(neng)不知道是(shi)(shi)(shi)(shi)(shi)否(fou)(fou)應該相信(xin)他(ta),但是(shi)(shi)(shi)(shi)(shi)如(ru)果他(ta)告(gao)訴(su)你(ni)(ni)他(ta)可以(yi)因式(shi)分解(jie)為3607乘(cheng)上3803,那么(me)你(ni)(ni)就(jiu)(jiu)可以(yi)用(yong)一個(ge)(ge)袖珍計算(suan)(suan)(suan)器(qi)容(rong)易驗證(zheng)這是(shi)(shi)(shi)(shi)(shi)對(dui)的(de)(de)(de)。人(ren)們(men)(men)發現,所(suo)有的(de)(de)(de)完全多(duo)項式(shi)非確(que)定性問(wen)(wen)題(ti)(ti)(ti),都可以(yi)轉換為一類叫(jiao)做滿足性問(wen)(wen)題(ti)(ti)(ti)的(de)(de)(de)邏(luo)輯運算(suan)(suan)(suan)問(wen)(wen)題(ti)(ti)(ti)。既然這類問(wen)(wen)題(ti)(ti)(ti)的(de)(de)(de)所(suo)有可能(neng)答案(an)(an),都可以(yi)在多(duo)項式(shi)時(shi)(shi)間(jian)內計算(suan)(suan)(suan),人(ren)們(men)(men)于是(shi)(shi)(shi)(shi)(shi)就(jiu)(jiu)猜想(xiang),是(shi)(shi)(shi)(shi)(shi)否(fou)(fou)這類問(wen)(wen)題(ti)(ti)(ti),存在一個(ge)(ge)確(que)定性算(suan)(suan)(suan)法,可以(yi)在多(duo)項式(shi)時(shi)(shi)間(jian)內,直接算(suan)(suan)(suan)出或是(shi)(shi)(shi)(shi)(shi)搜尋出正確(que)的(de)(de)(de)答案(an)(an)呢?這就(jiu)(jiu)是(shi)(shi)(shi)(shi)(shi)著名的(de)(de)(de)NP=P?的(de)(de)(de)猜想(xiang)。 不管我們(men)(men)編(bian)寫程序是(shi)(shi)(shi)(shi)(shi)否(fou)(fou)靈巧,判定一個(ge)(ge)答案(an)(an)是(shi)(shi)(shi)(shi)(shi)可以(yi)很(hen)快利用(yong)內部知識來驗證(zheng),還是(shi)(shi)(shi)(shi)(shi)沒有這樣的(de)(de)(de)提示而(er)需要花(hua)費(fei)大量時(shi)(shi)間(jian)來求解(jie),被(bei)看作(zuo)邏(luo)輯和計算(suan)(suan)(suan)機(ji)科學中突出的(de)(de)(de)問(wen)(wen)題(ti)(ti)(ti)之一。它是(shi)(shi)(shi)(shi)(shi)斯蒂文·考克于1971年陳(chen)述的(de)(de)(de)。