數(shù)學(xué)是科學(xué)之母。
不知哪位大師這么說過,總之,只要是從事自然科學(xué)或是工程領(lǐng)域的,都離不開數(shù)學(xué)。至于經(jīng)濟(jì)領(lǐng)域,數(shù)學(xué)的影子也隨處可見。歷屆諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)中,據(jù)統(tǒng)計(jì)僅一屆沒有數(shù)學(xué)家獲獎(jiǎng),就是說,幾乎每次都是數(shù)學(xué)家獲得這個(gè)經(jīng)濟(jì)學(xué)最高獎(jiǎng)勵(lì)。
而在計(jì)算機(jī)科學(xué)領(lǐng)域,數(shù)學(xué)的重要性也實(shí)在不必多言。拋開別的不談,就算法這個(gè)計(jì)算機(jī)科學(xué)的靈魂分支,我個(gè)人就感覺是利用數(shù)學(xué)來對(duì)計(jì)算進(jìn)行最佳規(guī)劃的方式。所以,一個(gè)真正的計(jì)算機(jī)高手,盡管未必是個(gè)數(shù)學(xué)天才,也一定是個(gè)數(shù)學(xué)強(qiáng)手。
先談?wù)劤S玫臄?shù)學(xué)吧。
既然是單獨(dú)的計(jì)算機(jī)科學(xué),那么就不是所有的數(shù)學(xué)知識(shí)都得掌握的爐火純青,既沒必要,更不現(xiàn)實(shí)。數(shù)學(xué)的魅力,在數(shù)學(xué)領(lǐng)域中是推理的嚴(yán)密,在其他的應(yīng)用領(lǐng)域中則是簡(jiǎn)潔而準(zhǔn)確的描述。因此,數(shù)學(xué)的單項(xiàng)強(qiáng)化才是重點(diǎn)。
貌似還有計(jì)算數(shù)學(xué)這個(gè)領(lǐng)域,聽說就是專門研究算法的分支。在常規(guī)的環(huán)節(jié),首先必須熟練掌握的數(shù)學(xué)知識(shí)有:
1.離散數(shù)學(xué)。其實(shí)這是幾個(gè)學(xué)科的合稱,包括數(shù)理邏輯、集合論、布爾代數(shù)、圖論、組合數(shù)學(xué)。其中組合數(shù)學(xué)是重中之重。
2.代數(shù)理論。古典線性代數(shù)理論應(yīng)該是必須的。而現(xiàn)代的矩陣論也在很多地方有著重要應(yīng)用。另外,近世代數(shù)還是可以了解下,近世代數(shù)的一些思想對(duì)于加深理解組合數(shù)學(xué)還是很有幫助的。
3.分析數(shù)學(xué)。數(shù)學(xué)分析和復(fù)變函數(shù)這兩個(gè)東西在整個(gè)IT領(lǐng)域中都是必要的。不過,就我本人感覺,這些東西在計(jì)算領(lǐng)域要看方向,比如圖形學(xué)對(duì)這里要求較高而數(shù)據(jù)庫(kù)就較低。另外,分析數(shù)學(xué)學(xué)的更多的是數(shù)學(xué)思想的提升而非解微積分題的正確率。畢竟,我們的最終目的是把算法思想變成一行行的代碼,這具體的計(jì)算過程其實(shí)不必太過計(jì)較。
4.數(shù)論。這是個(gè)相當(dāng)獨(dú)立的領(lǐng)域。數(shù)論是數(shù)學(xué)的皇后,數(shù)論和平面幾何證明是為數(shù)不多的老少皆宜的數(shù)學(xué)分支,入門極其容易。學(xué)習(xí)數(shù)論時(shí)更多的還是那種思想的訓(xùn)練,數(shù)論的證明五花八門,但變成程序一般較為簡(jiǎn)易。個(gè)人認(rèn)為,數(shù)論僅僅需要知道一些結(jié)論即可。
5.幾何。此幾何非考試的幾何題,而是計(jì)算幾何。幾何是很神奇的東西,人類的思維很直觀就能得到的結(jié)論往往會(huì)成為程序員的極大障礙。僅僅兩線段相交,為優(yōu)化算法,前前后后可以有不下3種辦法,而常見的跨立實(shí)驗(yàn)早已和最初的簡(jiǎn)單觀察相距甚遠(yuǎn)。現(xiàn)在的圖形學(xué)也是以幾何為基礎(chǔ)的,所以幾何尤其是計(jì)算幾何算法必須掌握。
前面已經(jīng)說過,數(shù)學(xué)是工具,它不會(huì)直接轉(zhuǎn)化為我們的代碼,不是個(gè)具有生產(chǎn)力的東西。數(shù)學(xué)的威力,永遠(yuǎn)是用在優(yōu)化中。不論是表述的數(shù)學(xué)化,還是算法的形成,以及最后的優(yōu)化,利用數(shù)學(xué)的論證以及已有結(jié)論是最佳手段。
在接下來的幾篇隨筆里,我將一些我做題中用到的數(shù)學(xué)知識(shí)以及算法簡(jiǎn)單的描述下。