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