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