數(shù)學對于計算機算法編程來說非常重要。我主要從下面兩個方面來說明它為何這么重要 一. 培養(yǎng)邏輯思維能力數(shù)學和算法編程都需要較強的邏輯思維能力,程序代碼的邏輯結(jié)構(gòu)、前后聯(lián)系及處理方式都需要較強的邏輯思維能力,而數(shù)學學得好,邏輯思維能力強,通常算法編程領(lǐng)悟也會更深。 二. 數(shù)學應(yīng)用于算法編程這一點應(yīng)該是數(shù)學與算法編程比較相關(guān)的重要原因,無論是計算機的底層還是非底層,數(shù)學知識到處都有體現(xiàn)。例如計算機底層的二進制、機器學習和深度學習的梯度推導、SVD分解、張量分解、PCA求特征值、優(yōu)化問題、密碼學的大數(shù)分解、概率圖模型等等都是與數(shù)學特別相關(guān)。下面我隨便舉兩個例子,可以自己體會 例1: 給定一個數(shù)x,開平方并取倒數(shù)。 代碼實現(xiàn)如下 這是當年的經(jīng)典游戲雷神之錘3里面的代碼,經(jīng)測試這段代碼比(float)(1.0/sqrt(x))快4倍,計算性能有質(zhì)的飛躍。為此還專門有一篇論文《Fast Inverse Square Root》講解這個代碼的數(shù)學原理,感興趣的同學可以找一下這篇文章研究一下。 例2:給定一個數(shù)n,n可能非常大,比如10的18次方這么大,求x^2+y^2=n的解。 如果不用數(shù)學知識,直接暴力搜索,時間復雜度為O(n),效率低下,而且按目前的計算機水平也很難算出來。如果了解Brahmagupta–Fibonacci identity、Pollard-rho分解法、二次同余方程的解、歐幾里德輾轉(zhuǎn)相除等數(shù)學知識,那么求解這個問題的時間復雜度大大降低,保證0.2秒內(nèi)出結(jié)果。 如果工作是算法崗位,數(shù)學更加特別重要,因為機器學習、數(shù)據(jù)挖掘、NLP等方向的底層原理基本都與數(shù)學脫離不開關(guān)系。 |
|
來自: 星光閃亮圖書館 > 《機器學習與人工智能》