趙莉莉
1.中國(guó)算法的歷史背景
中國(guó)傳統(tǒng)數(shù)學(xué)經(jīng)歷了由古代直到19世紀(jì)初大約兩三千年的悠久歷史,中國(guó)傳統(tǒng)數(shù)學(xué)的社會(huì)性首先表現(xiàn)為它的實(shí)用性[1]。實(shí)用性的特征,決定了它的發(fā)展以解決實(shí)際應(yīng)用問(wèn)題和提高計(jì)算技術(shù)為其主要目標(biāo)。這就使得“以算為主,使用算器,建立一套算法體系”成為中國(guó)傳統(tǒng)數(shù)學(xué)的顯著特色。
以算為主,決定了中國(guó)傳統(tǒng)數(shù)學(xué)的成果表現(xiàn)為算法的形式,而數(shù)學(xué)問(wèn)題的模式化和以籌為算具,便帶來(lái)了計(jì)算方法程序化的特征。有人曾將中國(guó)傳統(tǒng)數(shù)學(xué)與今天的計(jì)算機(jī)技術(shù)對(duì)比,認(rèn)為算籌可以看作是電子計(jì)算機(jī)的“硬件”而中國(guó)古代的算術(shù)可以比作電子計(jì)算機(jī)的“程序設(shè)計(jì)”,是一種軟件的思想。這種看法是很有道理的。中國(guó)的籌算不用運(yùn)算符號(hào),無(wú)須保留運(yùn)算的中間過(guò)程,只要求通過(guò)籌式的逐步變換而最終獲得問(wèn)題的解答,因此中國(guó)古代數(shù)學(xué)著作中的“術(shù)”,都是用一套一套的“程序語(yǔ)言”所描寫(xiě)的程序化算法。各種不同的籌法都有其基本的變換法則和固定的演算程序。例如,“方程”這一籌式以遍乘、直除(累減)為基本變換,而“方程術(shù)”便是反復(fù)施行這兩種基本變換而逐個(gè)消元求解的演算程序。中算家善于運(yùn)用演算的對(duì)稱性、循環(huán)性等特點(diǎn),將演算程序設(shè)計(jì)得十分簡(jiǎn)潔而巧妙,如開(kāi)方術(shù)、增乘開(kāi)方術(shù)、大衍求一術(shù)等在籌算程序的設(shè)計(jì)方面都達(dá)到很高的水平。如果說(shuō)古希臘的數(shù)學(xué)家以發(fā)現(xiàn)數(shù)學(xué)的定理為樂(lè)趣,那么中算家們則以創(chuàng)造精致的算法為己任[2]。
從漢代以來(lái),中國(guó)數(shù)學(xué)家創(chuàng)造了解多元一次方程組的“遍乘直除”算法,計(jì)算圓周率的割圓術(shù)算法以及解三次方程正根的“開(kāi)帶從立方”算法;隋唐天算家創(chuàng)造了內(nèi)插公式“招差術(shù)”算法;以及秦九韶創(chuàng)造了解一次同余組的“大衍求一術(shù)”和求高次方程數(shù)值解的“正負(fù)開(kāi)方術(shù)”算法等。這些算法所表達(dá)的數(shù)學(xué)真理有些在歐洲要到18世紀(jì)以后運(yùn)用近代數(shù)學(xué)工具才能重新獲得。至于這些算法的結(jié)構(gòu),其復(fù)雜程度也是驚人的。如秦九韶“大衍求一術(shù)”和“正負(fù)開(kāi)方術(shù)”的分析表明,這些算法的計(jì)算程序具有很高的機(jī)械化程度,并包含了現(xiàn)代計(jì)算機(jī)語(yǔ)言中構(gòu)造算法的基本要素和基本結(jié)構(gòu)[3]。
2.西方算法的歷史背景
古埃及人最基本的算術(shù)運(yùn)算是加法,乘法運(yùn)算通過(guò)逐次加倍的程序來(lái)實(shí)現(xiàn),除法運(yùn)算中,加倍程序被倒過(guò)來(lái)執(zhí)行。至于分?jǐn)?shù)計(jì)算他們則習(xí)慣用單位分?jǐn)?shù)計(jì)算。古代美索不達(dá)米亞數(shù)學(xué)與埃及數(shù)學(xué)一樣,處于原始算法的積累時(shí)期。埃及紙草書(shū)和巴比倫泥版文書(shū)中匯集的各種幾何圖形面積、體積的計(jì)算法則,本質(zhì)上屬于算數(shù)的應(yīng)用。
古希臘人重“理”輕“算”,所以形成了具有初步邏輯結(jié)構(gòu)的論證數(shù)學(xué)體系。
阿拉伯?dāng)?shù)學(xué)家花拉子米的《代數(shù)書(shū)》更注重探討問(wèn)題的一般性解法。意大利數(shù)學(xué)家猆波那契所著的《算術(shù)書(shū)》有條理地介紹了各種計(jì)算方法,包括指算法,運(yùn)用印度——阿拉伯?dāng)?shù)碼的算法。
算法精神在文藝復(fù)興之前就通過(guò)阿拉伯人傳播到歐洲,被歐洲學(xué)者吸收,并結(jié)出豐碩的成果——微積分。從微積分的歷史可以知道,微積分的產(chǎn)生是尋找一系列實(shí)際問(wèn)題的普遍算法的結(jié)果。這些問(wèn)題包括:求極值、求曲線的切線、面積與體積計(jì)算、曲線求長(zhǎng)等。牛頓與萊布尼茨的成績(jī)是在于將這些特殊的算法統(tǒng)一成兩類基本運(yùn)算——微分與積分,并進(jìn)一步指出了它們的互逆關(guān)系。無(wú)論是牛頓的先驅(qū)者還是牛頓本人,他們所使用的算法都是不嚴(yán)格的,都沒(méi)有認(rèn)真的演繹推導(dǎo)。開(kāi)普勒的積分學(xué),實(shí)際上是作為測(cè)量酒桶容積的求積術(shù)。在這里,開(kāi)普勒為了尋求體積算法,可以說(shuō)是回到了非公理化的經(jīng)驗(yàn)幾何學(xué),并且是自覺(jué)的。眾所周知牛頓的流數(shù)術(shù)在邏輯上存在瑕癖。對(duì)當(dāng)時(shí)學(xué)者來(lái)說(shuō),首要的是找到行之有效的算法,而不是算法的證明。這種傾向一直延續(xù)到18世紀(jì)。18世紀(jì)的數(shù)學(xué)家往往不管微積分基礎(chǔ)方面的困難而大膽前進(jìn)。如泰勒公式,歐拉、伯努利甚至19世紀(jì)初傅里葉所發(fā)現(xiàn)的三角展開(kāi)等,都是在很長(zhǎng)時(shí)期內(nèi)缺乏嚴(yán)格的證明,但卻作為有效的算法而廣泛地被數(shù)學(xué)家們所采用,雖然中間充滿了爭(zhēng)論[4]。
綜上所述,作為近代數(shù)學(xué)發(fā)生標(biāo)志的解析幾何與微積分,從方法論角度看都不能說(shuō)是演繹傾向而是算法傾向的產(chǎn)物。17~18世紀(jì)的無(wú)窮小算法與中世紀(jì)算法相比決不可同日而語(yǔ),而是有了質(zhì)的飛躍。
至于說(shuō)20世紀(jì),至少是到前半個(gè)世紀(jì)為止,數(shù)字中演繹的傾向有增無(wú)減,數(shù)學(xué)已經(jīng)變成研究任意結(jié)構(gòu)的學(xué)問(wèn),在這里,演繹精神不僅是衡量數(shù)學(xué)純不純的標(biāo)準(zhǔn),而且也成為衡量數(shù)學(xué)美不美的標(biāo)準(zhǔn)。只是從40年代中開(kāi)始,局面已有所變化。這主要是由于電子計(jì)算機(jī)的發(fā)明與應(yīng)用而引起的。我們還遠(yuǎn)不能說(shuō)電子計(jì)算機(jī)已經(jīng)動(dòng)搖了演繹傾向在現(xiàn)代數(shù)學(xué)中的地位,但它肯定提高了算法傳統(tǒng)的地位。特別是人們正在加緊研究計(jì)算機(jī)來(lái)證明數(shù)學(xué)定理,為實(shí)現(xiàn)從萊布尼茨就開(kāi)始?jí)粝氲?、把科學(xué)家的演繹思維變成機(jī)械化的算法過(guò)程的目標(biāo)而奮斗。這可能預(yù)示著一個(gè)算法傾向的新時(shí)代。
參考文獻(xiàn)
[1]李繼閔.算法的源流——東方古典數(shù)學(xué)的特征.北京.科學(xué)出版社,2007
[2]李文林.數(shù)學(xué)的進(jìn)化——東西方數(shù)學(xué)史比較研究.北京.科學(xué)出版社,2005
[3]李文林.數(shù)學(xué)史概論.第二版.北京.高等教育出版社,2002
[4]梁宗巨.世界數(shù)學(xué)通史(上冊(cè)).沈陽(yáng).遼寧教育出版社,2001