为什么我们需要数学
買菜的大媽可能很難理解數(shù)學(xué)的好處,只要簡(jiǎn)單的加減乘除就可以了,為什么還要讓自家娃學(xué)習(xí)那么復(fù)雜的數(shù)學(xué)!三角函數(shù),二元一次方程,微積分,數(shù)論,這些到底能有什么用處啊?!以前我也不理解這個(gè)問題,后來上學(xué)直到后來工作,才逐漸發(fā)現(xiàn),數(shù)學(xué)實(shí)在是太有用了。?
因?yàn)橛腥齻€(gè)魔鬼,所以怎么都無法脫離數(shù)學(xué)。本來看著挺簡(jiǎn)單的事情,遇到這三個(gè)魔鬼,難度立刻指數(shù)形式增長(zhǎng)。一個(gè)叫自動(dòng)化,另外一個(gè)叫優(yōu)化,還有一個(gè)是終極boss:證明。
自動(dòng)化
讓人類區(qū)分蘋果和西紅柿,那簡(jiǎn)單的不得了。但是讓機(jī)器去處理,就變得異常復(fù)雜。即使能夠準(zhǔn)確的采集兩種水果的圖片信息,但還要確定選擇哪些較好的特征,確定特征后還要建立模型,判斷先驗(yàn)概率和條件概率的形式,以及對(duì)應(yīng)的參數(shù),還要計(jì)算錯(cuò)誤代價(jià)。最后最好能建立反饋,修改參數(shù),調(diào)整分類器設(shè)計(jì)。這每一步,都需要驚人復(fù)雜的概率論知識(shí),公式推導(dǎo)讓人眼花繚亂。?
網(wǎng)頁(yè)爬蟲做起來并不復(fù)雜,是程序員入門編程時(shí)的有趣課題。可是,讓計(jì)算機(jī)發(fā)現(xiàn)網(wǎng)頁(yè)中“有用的數(shù)據(jù)”,并將其分割抓取下來就變得異常復(fù)雜了。這里需要分析數(shù)據(jù)的格式,出現(xiàn)的模式,如何翻頁(yè),如何防反爬蟲,如何去廣告,復(fù)雜極了。?
乃至于發(fā)現(xiàn)ABCABCABC這樣的規(guī)律,人眼一眼就看出來了。但機(jī)器卻做不到。更何況那個(gè)經(jīng)典的例子:讓機(jī)器的手去抓雞蛋。最難的可能并不是開發(fā)一個(gè)程序讓機(jī)器抓雞蛋,而是如何讓機(jī)器學(xué)習(xí)抓雞蛋的方法...
優(yōu)化
另外一個(gè)魔鬼叫優(yōu)化。本來給出一個(gè)問題的解答并不復(fù)雜,然而更好的解答卻需要成倍的努力。比如想去七個(gè)國(guó)家旅游,不同時(shí)間段內(nèi)的機(jī)票價(jià)格都不一樣,起飛時(shí)間,景點(diǎn)門票價(jià)格都會(huì)有波動(dòng),想找出一條最好的方案,那會(huì)是幾十個(gè)參數(shù)同時(shí)優(yōu)化的復(fù)雜問題。?
一個(gè)倉(cāng)庫(kù)存多少貨,倉(cāng)儲(chǔ)成本比較低,能夠較快響應(yīng)調(diào)貨需求,這都容易解決。但如果是分布在全國(guó)的不同倉(cāng)庫(kù),物流,存儲(chǔ)成本,不同地域的價(jià)格差,消費(fèi)者需求量,想找到一個(gè)盡可能好的方案需要大量的計(jì)算。?
即使是最簡(jiǎn)單的例子,一個(gè)老農(nóng)想讓自己的收益最大化,到底該怎么分配西紅柿和黃瓜的種植比例,都需要二元線性規(guī)劃。?
優(yōu)化是個(gè)無底洞,做過代碼優(yōu)化的人都知道,最難的不在于找到最優(yōu)解,而是最優(yōu)解只是多個(gè)因素權(quán)衡之后的結(jié)果,合理的策略和洞見,比數(shù)值的計(jì)算更重要。
證明
如果前面兩者已經(jīng)讓你退卻了,那最終的boss更是難以撼動(dòng),證明!在面試時(shí)給出一個(gè)方案,似乎挺完美,但面試官提出一個(gè)問題,你如何證明它是最優(yōu)的?馬上頭上就沁出滴滴汗珠。?
證明要給出嚴(yán)謹(jǐn)?shù)耐茖?dǎo),或者構(gòu)造巧妙的結(jié)構(gòu),或者有趣的反證,或是逐步推進(jìn)的數(shù)學(xué)歸納。如何證明1+1=2? 如何證明nlogn是排序的性能上界?如何證明某種魔方旋轉(zhuǎn)方法是步驟最少的?讓我暈一會(huì)。
結(jié)語
從上面的討論,我們能到的兩個(gè)有益的啟發(fā)。解決問題并不難,難的是更好的解決問題。其中的區(qū)別,很大程度的區(qū)別來自于數(shù)學(xué)和思維能力。所以有機(jī)會(huì)還是多看看數(shù)學(xué)吧。?
從另外一個(gè)角度,如果想把產(chǎn)品推向市場(chǎng),雖然“做到極致”是很多人的口頭禪,但是這也會(huì)付出上百倍的代價(jià)。如何在最短時(shí)間內(nèi)給出一個(gè)近似完美的方案,這也是一個(gè)有趣的“優(yōu)化”問題,不要讓自己的精力浪費(fèi)在確實(shí)復(fù)雜但對(duì)最終結(jié)果幫助不大的因素上。?
推薦程序員看《具體數(shù)學(xué)》,直接看英文版,啃下來之后,編程功力提升兩個(gè)檔次。
?
總結(jié)
- 上一篇: asp:HyperLink vs asp
- 下一篇: 开源 java CMS - FreeCM