算法設(shè)計(jì)與分析什么是P問題、NP問題和NPC問題_第1頁
算法設(shè)計(jì)與分析什么是P問題、NP問題和NPC問題_第2頁
算法設(shè)計(jì)與分析什么是P問題、NP問題和NPC問題_第3頁
算法設(shè)計(jì)與分析什么是P問題、NP問題和NPC問題_第4頁
算法設(shè)計(jì)與分析什么是P問題、NP問題和NPC問題_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

什么是P問題、NP問題和NPC問題

時(shí)間復(fù)雜度時(shí)間復(fù)雜度并不是表示一個(gè)程序解決問題需要花多少時(shí)間,而是當(dāng)問題規(guī)模擴(kuò)大后,程序需要的時(shí)間長(zhǎng)度增長(zhǎng)得有多快。也就是說,對(duì)于高速處理數(shù)據(jù)的計(jì)算機(jī)來說,處理某一個(gè)特定數(shù)據(jù)的效率不能衡量一個(gè)程序的好壞,而應(yīng)該看當(dāng)這個(gè)數(shù)據(jù)的規(guī)模變大到數(shù)百倍后,程序運(yùn)行時(shí)間是否還是一樣,或者也跟著慢了數(shù)百倍,或者變慢了數(shù)萬倍。不管數(shù)據(jù)有多大,程序處理花的時(shí)間始終是那么多的,我們就說這個(gè)程序很好,具有O(1)的時(shí)間復(fù)雜度,也稱常數(shù)級(jí)復(fù)雜度;時(shí)間復(fù)雜度數(shù)據(jù)規(guī)模變得有多大,花的時(shí)間也跟著變得有多長(zhǎng),這個(gè)程序的時(shí)間復(fù)雜度就是O(n),比如找n個(gè)數(shù)中的最大值;而像冒泡排序、插入排序等,數(shù)據(jù)擴(kuò)大2倍,時(shí)間變慢4倍的,屬于O(n^2)的復(fù)雜度。還有一些窮舉類的算法,所需時(shí)間長(zhǎng)度成幾何階數(shù)上漲,這就是O(a^n)的指數(shù)級(jí)復(fù)雜度,甚至O(n!)的階乘級(jí)復(fù)雜度。不會(huì)存在O(2*n^2)的復(fù)雜度,因?yàn)榍懊娴哪莻€(gè)“2”是系數(shù),根本不會(huì)影響到整個(gè)程序的時(shí)間增長(zhǎng)。時(shí)間復(fù)雜度同樣地,O(n^3+n^2)的復(fù)雜度也就是O(n^3)的復(fù)雜度。因此,我們會(huì)說,一個(gè)O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,盡管在n很小的時(shí)候,前者優(yōu)于后者,但后者時(shí)間隨數(shù)據(jù)規(guī)模增長(zhǎng)得慢,最終O(n^3)的復(fù)雜度將遠(yuǎn)遠(yuǎn)超過O(n^2)。我們也說,O(n^100)的復(fù)雜度小于O(1.01^n)的復(fù)雜度。時(shí)間復(fù)雜度容易看出,前面的幾類復(fù)雜度被分為兩種級(jí)別,其中后者的復(fù)雜度無論如何都遠(yuǎn)遠(yuǎn)大于前者:一種是O(1),O(log(n)),O(n^a)等,我們把它叫做多項(xiàng)式級(jí)的復(fù)雜度,因?yàn)樗囊?guī)模n出現(xiàn)在底數(shù)的位置;另一種是O(a^n)和O(n!)型復(fù)雜度,它是非多項(xiàng)式級(jí)的,其復(fù)雜度計(jì)算機(jī)往往不能承受。當(dāng)我們?cè)诮鉀Q一個(gè)問題時(shí),我們選擇的算法通常都需要是多項(xiàng)式級(jí)的復(fù)雜度,非多項(xiàng)式級(jí)的復(fù)雜度需要的時(shí)間太多,往往會(huì)超時(shí),除非是數(shù)據(jù)規(guī)模非常小。不可解問題

自然地,人們會(huì)想到一個(gè)問題:會(huì)不會(huì)所有的問題都可以找到復(fù)雜度為多項(xiàng)式級(jí)的算法呢?答案是否定的。有些問題甚至根本不可能找到一個(gè)正確的算法來,這稱之為“不可解問題”(UndecidableDecisionProblem)。例如:Hamilton回路。問題是這樣的:給你一個(gè)圖,問你能否找到一條經(jīng)過每個(gè)頂點(diǎn)一次且恰好一次(不遺漏也不重復(fù))最后又走回來的路(滿足這個(gè)條件的路徑叫做Hamilton回路)。這個(gè)問題現(xiàn)在還沒有找到多項(xiàng)式級(jí)的算法。事實(shí)上,這個(gè)問題就是我們后面要說的NPC問題。P問題定義如果一個(gè)問題可以找到一個(gè)能在多項(xiàng)式的時(shí)間里解決它的算法,那么這個(gè)問題就屬于P問題。P是英文單詞多項(xiàng)式的第一個(gè)字母。

NP問題定義在這里強(qiáng)調(diào),NP問題不是非P類問題。NP問題是指可以在多項(xiàng)式的時(shí)間里驗(yàn)證一個(gè)解的問題。NP問題的另一個(gè)定義是,可以在多項(xiàng)式的時(shí)間里猜出一個(gè)解的問題。

比方說,我RP很好,在程序中需要枚舉時(shí),我可以一猜一個(gè)準(zhǔn)?,F(xiàn)在某人拿到了一個(gè)求最短路徑的問題,問從起點(diǎn)到終點(diǎn)是否有一條小于100個(gè)單位長(zhǎng)度的路線。它根據(jù)數(shù)據(jù)畫好了圖,但怎么也算不出來,于是來問我:你看怎么選條路走得最少?NP問題我說,我RP(人品,運(yùn)氣)很好,肯定能隨便給你指條很短的路出來。然后我就胡亂畫了幾條線,說就這條吧。那人按我指的這條把權(quán)值加起來一看,嘿,神了,路徑長(zhǎng)度98,比100小。于是答案出來了,存在比100小的路徑。別人會(huì)問他這題怎么做出來的,他就可以說,因?yàn)槲艺业搅艘粋€(gè)比100小的解。在這個(gè)題中,找一個(gè)解很困難,但驗(yàn)證一個(gè)解很容易。驗(yàn)證一個(gè)解只需要O(n)的時(shí)間復(fù)雜度,也就是說我可以花O(n)的時(shí)間把我猜的路徑的長(zhǎng)度加出來。那么,只要我RP好,猜得準(zhǔn),我一定能在多項(xiàng)式的時(shí)間里解決這個(gè)問題。我猜到的方案總是最優(yōu)的,不滿足題意的方案也不會(huì)來騙我去選它。這就是NP問題。NP問題當(dāng)然有不是NP問題的問題,即你猜到了解但是沒用,因?yàn)槟悴荒茉诙囗?xiàng)式的時(shí)間里去驗(yàn)證它。一個(gè)經(jīng)典的例子,它指出了一個(gè)目前還沒有辦法在多項(xiàng)式的時(shí)間里驗(yàn)證一個(gè)解的問題。很顯然,前面所說的Hamilton回路是NP問題,因?yàn)轵?yàn)證一條路是否恰好經(jīng)過了每一個(gè)頂點(diǎn)非常容易。但我要把問題換成這樣:試問一個(gè)圖中是否不存在Hamilton回路。這樣問題就沒法在多項(xiàng)式的時(shí)間里進(jìn)行驗(yàn)證了,因?yàn)槌悄阍囘^所有的路,否則你不敢斷定它“沒有Hamilton回路”。NP問題之所以要定義NP問題,是因?yàn)橥ǔV挥蠳P問題才可能找到多項(xiàng)式的算法。我們不會(huì)指望一個(gè)連多項(xiàng)式地驗(yàn)證一個(gè)解都不行的問題存在一個(gè)解決它的多項(xiàng)式級(jí)的算法。很顯然,所有的P類問題都是NP問題。也就是說,能多項(xiàng)式地解決一個(gè)問題,必然能多項(xiàng)式地驗(yàn)證一個(gè)問題的解——既然正解都出來了,驗(yàn)證任意給定的解也只需要比較一下就可以了。NP問題關(guān)鍵是,人們想知道,是否所有的NP問題都是P類問題。

所有對(duì)NP問題的研究都集中在一個(gè)問題上,即究竟是否有P=NP?

目前為止這個(gè)問題還“啃不動(dòng)”。但是,一個(gè)總的趨勢(shì)、一個(gè)大方向是有的。人們普遍認(rèn)為,P=NP不成立,也就是說,多數(shù)人相信,存在至少一個(gè)不可能有多項(xiàng)式級(jí)復(fù)雜度的算法的NP問題。

NPC問題人們?nèi)绱藞?jiān)信P≠NP是有原因的,就是在研究NP問題的過程中找出了一類非常特殊的NP問題叫做NP-完全問題,也即所謂的NPC問題。C是英文單詞“完全”的第一個(gè)字母。正是NPC問題的存在,使人們相信P≠NP。為了說明NPC問題,我們先引入一個(gè)概念——約化(Reducibility,有的資料上叫“歸約”)約化一個(gè)問題A可以約化為問題B的含義即是,可以用問題B的解法解決問題A,或者說,問題A可以“變成”問題B。

“問題A可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論