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