為什么我們需要數學


買菜的大媽可能很難理解數學的好處,只要簡單的加減乘除就可以了,為什么還要讓自家娃學習那么復雜的數學!三角函數,二元一次方程,微積分,數論,這些到底能有什么用處啊?!以前我也不理解這個問題,后來上學直到后來工作,才逐漸發現,數學實在是太有用了。 
因為有三個魔鬼,所以怎么都無法脫離數學。本來看着挺簡單的事情,遇到這三個魔鬼,難度立刻指數形式增長。一個叫自動化,另外一個叫優化,還有一個是終極boss:證明。

 

自動化

讓人類區分蘋果和西紅柿,那簡單的不得了。但是讓機器去處理,就變得異常復雜。即使能夠准確的采集兩種水果的圖片信息,但還要確定選擇哪些較好的特征,確定特征后還要建立模型,判斷先驗概率和條件概率的形式,以及對應的參數,還要計算錯誤代價。最后最好能建立反饋,修改參數,調整分類器設計。這每一步,都需要驚人復雜的概率論知識,公式推導讓人眼花繚亂。 
網頁爬蟲做起來並不復雜,是程序員入門編程時的有趣課題。可是,讓計算機發現網頁中“有用的數據”,並將其分割抓取下來就變得異常復雜了。這里需要分析數據的格式,出現的模式,如何翻頁,如何防反爬蟲,如何去廣告,復雜極了。 
乃至於發現ABCABCABC這樣的規律,人眼一眼就看出來了。但機器卻做不到。更何況那個經典的例子:讓機器的手去抓雞蛋。最難的可能並不是開發一個程序讓機器抓雞蛋,而是如何讓機器學習抓雞蛋的方法...

 

優化

另外一個魔鬼叫優化。本來給出一個問題的解答並不復雜,然而更好的解答卻需要成倍的努力。比如想去七個國家旅游,不同時間段內的機票價格都不一樣,起飛時間,景點門票價格都會有波動,想找出一條最好的方案,那會是幾十個參數同時優化的復雜問題。 
一個倉庫存多少貨,倉儲成本比較低,能夠較快響應調貨需求,這都容易解決。但如果是分布在全國的不同倉庫,物流,存儲成本,不同地域的價格差,消費者需求量,想找到一個盡可能好的方案需要大量的計算。 
即使是最簡單的例子,一個老農想讓自己的收益最大化,到底該怎么分配西紅柿和黃瓜的種植比例,都需要二元線性規划。 
優化是個無底洞,做過代碼優化的人都知道,最難的不在於找到最優解,而是最優解只是多個因素權衡之后的結果,合理的策略和洞見,比數值的計算更重要。

 

證明

如果前面兩者已經讓你退卻了,那最終的boss更是難以撼動,證明!在面試時給出一個方案,似乎挺完美,但面試官提出一個問題,你如何證明它是最優的?馬上頭上就沁出滴滴汗珠。 
證明要給出嚴謹的推導,或者構造巧妙的結構,或者有趣的反證,或是逐步推進的數學歸納。如何證明1+1=2? 如何證明nlogn是排序的性能上界?如何證明某種魔方旋轉方法是步驟最少的?讓我暈一會。

 

結語

從上面的討論,我們能到的兩個有益的啟發。解決問題並不難,難的是更好的解決問題。其中的區別,很大程度的區別來自於數學和思維能力。所以有機會還是多看看數學吧。 
從另外一個角度,如果想把產品推向市場,雖然“做到極致”是很多人的口頭禪,但是這也會付出上百倍的代價。如何在最短時間內給出一個近似完美的方案,這也是一個有趣的“優化”問題,不要讓自己的精力浪費在確實復雜但對最終結果幫助不大的因素上。 
推薦程序員看《具體數學》,直接看英文版,啃下來之后,編程功力提升兩個檔次。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM