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