(這章大家就當學霸文來看,如果看不懂就當主角裝比好啦,這一章是為今后生物基因工程做鋪墊,大家看完就知道了,后面的更新就不會出現(xiàn)這種勸退類的章節(jié)了,定都定好含著淚也要寫完……o(╥﹏╥)o)
——
葉華望著幾位學生微笑:“作為千禧年數(shù)學七大難題之首的「P=NP?」問題到現(xiàn)在也沒有人能證明或證偽,如果你們有誰將來能解決這個問題就可以立馬去美國克雷數(shù)學研究所領取100萬美元的賞金,這份懸賞至千禧年宣布至今仍然有效?!?br/>
“它既是世界七大數(shù)學難題之首,但同時它又是七個問題中最容易理解的一個數(shù)學問題,其實就是一個做數(shù)獨的問題,這個問題誕生于1971年,是理論計算機領域誕生的一個數(shù)學問題?!?br/>
教學是一門授業(yè)解惑的學問,而葉華可以說是一個無證教師,不過這并不妨礙他成為一名合格的講師。
“同學們,在生活中,你們是怎么去衡量一個問題的?它是簡單還是復雜?或者說容易還是困難?”葉華在課堂上踱步而走,時而用余光掃視幾名學生是否在認真聽講,什么小動作都逃不過葉校長的法眼,上課的時候這幾個學生還算乖巧,包括平常愛搞事的柳玲雙。
片刻便自問自答:“這好像沒有一個具體的量化標準,而且問題還會因人而異。但是計算機不一樣,計算機的計算效率是一個定值,也沒有智力商數(shù)?!?br/>
“比如兩個問題,一臺計算機從1顯示到10,和從1顯示到1000,顯然后面的問題要用到100倍的時間,相對前面的問題就困難?!?br/>
“對于一臺計算機來說,衡量一個問題的簡單或困難,看解決問題的時間或者步驟多少,因為效率在一定的情況下,時間和步數(shù)是等價的,給個定義就叫時間復雜度,時間復雜度越小、越少問題越簡單。但實際情況還得考慮什么?”
說完葉華看向了他們幾個,不一會兒,柳玲雙便道:“還得考慮計算機所占用的空間。”
“回答完全正確?!?br/>
黑客少女被表揚的暗喜,計算機可是本女俠的拿手好戲。
葉華對她投去了一個表揚的目光,算是獎勵了,然后說道:“空間問題就放一邊,我們今天講時間問題,舉個例子……”
再也沒有什么比經(jīng)典的“舉個栗子”容易理解了。
“一道題,現(xiàn)在我給你出n個數(shù),要求選出其中最大的一個數(shù),需要多少步?誰知道?”
話音剛落,最小的寧杰便飛速應答:“n-1步?!?br/>
“回答正確!”
葉華點點頭,數(shù)學小天才寧杰這么快答出來是在他的意料之中,調(diào)出浮空屏幕羅列一串數(shù)字:“方法其實很簡單,先比較前兩個,取其中最大的數(shù)與第三個數(shù)進行比較,然后取其中最大的數(shù)再與第四個比較,以此類推,取n個數(shù)就比較n-1次?!?br/>
“第二道題,還是給出n個數(shù),但這道題是要求把n個數(shù)從大到小依次排序,那又需要多少步呢?”
寧杰再次不假思索的道:“需要n(n-1)/2步?!?br/>
葉華再次點頭:“回答正確。寧杰同學你可以和其他的同學介紹一下計算的過程么?”
寧杰立馬回答:“用剛才的辦法先選出最大數(shù)需要用到n-1步,然后選出剩下的所有數(shù)中最大的數(shù)用n-2步,類推下去就是(n-1)+(n-2)+(n-3)+……一直加到最后的答案就是n(n-1)/2?!?br/>
柳玲雙一看很快就看明白了,這不就是計算機編程里面的“冒泡法”嘛,黑客少女自然一看就懂,其實這些都是簡單問題,在場的八個學生都能快速理解。
葉華接著講道:“顯然,隨著n的增加,排序問題的難度就比之前選最大數(shù)的難度高了。n-1當這個n很大的時候,-1可以省略了,有沒有無影響,數(shù)量級就是由n來決定的,第二個問題時間的數(shù)量級是由n^2決定,別的也可以省略,包括系數(shù)?!?br/>
說到這里葉華調(diào)出一塊模擬黑板的浮空大屏幕,用手指替代粉筆,在色板上點了一下白色,然后在面板上羅列式子:“用漸進符號O表示,第一個問題的計算量表示為O(n),第二個問題表示為O(n^2)。兩個問題一對比就發(fā)現(xiàn)隨著n的增加O(n^2)更難一些,這很好理解,因為n^2比n大。”
葉華繼續(xù)邊寫邊說:“n、n^2、n^3等等或者它們的組合就叫多項式,這類問題就是「P=NP?問題」中的P類問題。那有沒有更難的問題?當然有,比如質(zhì)數(shù)問題。”
說著葉華回頭看向?qū)W生們:“一個自然數(shù)a是不是質(zhì)數(shù)?解決它需要多少步?笨方法就是挨個的除,從1開始除到√a,所以最多用到√a步,完整的描述就是:一個n位數(shù)的自然數(shù)a是不是質(zhì)數(shù)?”
完全代入講師角色的葉華旋即轉(zhuǎn)身在浮空屏幕上繼續(xù)羅列式子:“n位數(shù)的十進制數(shù)可以表示:10^n-10^(n-1),那顯然質(zhì)數(shù)問題就是:O(√10^2),就算是二進制數(shù)也是:O(√2^n),同學們看,隨著位數(shù)n的增加質(zhì)數(shù)問題是不是已經(jīng)呈現(xiàn)指數(shù)上升了?這是很恐怖的上升趨勢?!?br/>
“以上說的所有問題都有一個共同點,不管難不難,只要給一個答案去驗證,就會顯得容易很多,比如說:某個a不是質(zhì)數(shù),因為它可以被這個數(shù)b整除,那驗算它就行了,可以在多項式時間內(nèi)進行驗證。那么所有這類問題就是NP類問題?!?br/>
葉華環(huán)顧八個學生,看到他們的眼神中沒有任何疑惑不解,顯然都理解了,對于他們的表現(xiàn)很滿意。
“N代表非確定,P和NP的標準定義和圖靈機有關,P可以在多項式時間內(nèi)解決問題,而NP不管難不難但可以在多項式時間內(nèi)驗證,這是他們兩者的區(qū)別,要注意。那是不是說NP問題要比P類問題更難?答案否,因為P類問題是屬于NP類問題,這一點也要注意?!?br/>
葉華又在學生們面前踱步而走,有條不紊的講道:“在數(shù)學上亦或者計算機領域,對于一個問題的困難與否,很大程度取決于計算方式,計算機就是算法,算法是計算機的靈魂。即便做數(shù)學題目也一樣,同一題有的方法簡單快速,可能就是差一條輔助線的問題?!?br/>
“前面講的都是死方法,達到目的就行了。在計算機里的術語叫‘冒泡法’,其復雜度就是O(n^2),開發(fā)優(yōu)越算法可以把復雜度降低,比如快速排序法的復雜度就是O(nlogn),顯然要比n^2小,所以在計算機領域?qū)τ谝粋€問題的難易看它的算法優(yōu)越與否?!?br/>
“那么就不難理解了,人們研究每一個計算機的算法,目的就是把NP類問題降到P類問題。可問題那么多,要找到猴年馬月?那么,既然NP問題是有一個共同點的,即,它們都可以在多項式時間內(nèi)驗證,會不會有另一個共同點?”
葉華自問自答:
“所以我們假設存在一種‘萬能算法’,它能把所有的NP問題降到P類問題,這就是「P=NP?」問題。甚至都可以不用算出這個‘萬能算法’是什么,只要能夠證明或證偽,就可以拿百萬大獎?!?br/>
旋即看向了學生們:“同時我們會發(fā)現(xiàn),在NP問題中有那么一小類問題,它們是明顯要比P類問題難好多好多,在感覺上這些問題是最不可能成為P類問題的,而且這些問題也有一個共同點,一旦證明其中任何一個問題有一個優(yōu)越算法能降到P類問題,那其它的問題也都能降到P類問題,換句話說只要證明了其中一個屬于P,就是P=NP。那么這一小類問題簡稱NP-C,也就是NP完全問題?!?br/>
葉華講解到這里的時候大家都能很好的理解,但接下來的問題對于他們來說就是不那么友好了。
“NPC明顯就比P類問題難,還是舉個例子,貼近我們生活的,比如一個美團外賣小哥,他的家住在A點,要去n個地方送外賣,n個地點的兩兩距離都是已知的。那請問這個外賣小哥如何走遍每一個地點最后回到家里,保證他所走的路程是最短的呢?”
說到這里,葉華停頓了下來,拿起水杯喝上一口潤潤嗓子,八個學生皺眉思考,其中數(shù)學天賦最好的寧杰也狐疑不斷。
過了一段時間都沒有人主動回答,意料之中的,葉華便說道:“這個題目在于,外賣小哥他首先就要面臨有多少種行走路線的可能,怎么用數(shù)學描述?”
學生們都看向了葉華,后者道:“那顯然,最終的結果就是n的階乘O(n!)。所以就會看到,這復雜度可比之前講述到的問題大太多太多了,因為O(n!)≈√2π(n/e)^n,這個數(shù)比以常數(shù)為底的指數(shù)大太多了?!?br/>
葉華旋即轉(zhuǎn)身在浮空屏幕模擬的黑板上滑動:“列如19的階乘,看上去感覺這個數(shù)不大,但是,列個式子:19!≈1.21×10^17,這個數(shù)大到就算是用現(xiàn)在最牛的經(jīng)典計算機假設他每秒可以排100萬次也要排個三千年左右。所以,外賣小哥每天送那么多貨,理論上他光是想要找到一條最佳的路線怕是不可能了?!?br/>
“但是同學們注意,這里的困難和簡單代表的是一種趨勢,當n很小的時候,人腦的計算量也能快速計算出來,比如數(shù)獨吧,3×3的數(shù)獨那小學生都會算,但是同學們我給你一個100×100試試看?比如100×100的方格子,給出幾個1~100的數(shù)字為線索,然后要求把剩下的各自全填滿并保證橫豎都是1~100,這個問題就算用當今世界最牛的計算機也不能快速求出來?!?br/>
“那么顯然,這道題也是NPC問題,都玩過掃雷、俄羅斯方塊這些小游戲沒有?它們也是NPC問題?!闭f到這里,這一知識點也講解的差不多了,葉華最后道:
“所以如果能夠證明P=NP,那對全人類的貢獻可就大了,比如說人體內(nèi)的蛋白折疊復雜度就是NPC問題,一旦要是證明了它是個P……笑什么笑?”
看到柳玲雙噗嗤一笑,葉華故作板臉的瞪了她一眼,這個小妮子,他算是看出來了,八個學生里面就屬她最皮。
輕咳了下,接著前面的話題說道:“……所以只要證明了它是P類問題,那很多疾病都能迎刃而解,癌癥、艾滋病這些也都不在話下。但是想要證明P=NP是相當?shù)牟蝗菀?,因為首先「證明P=NP」它就是一道題對吧?那么問題來了,它本身就是一道NPC問題……”
仿佛感受到了這個問題帶來深深地惡意和滿滿的敵意,這個問題果然是秀,不愧是至今都讓全世界的數(shù)學家束手無策的世界七大數(shù)學難題之首。
……
,