陳凱
某次信息技術(shù)教學(xué)研討中,在討論到枚舉算法教學(xué)情境的時候,有位老師忽然說起,是不是應(yīng)該將常用的尋找水仙花數(shù)(又稱自冪數(shù))的問題換成其他例子。所謂水仙花數(shù),一般是指此數(shù)n位中各個數(shù)字的n次冪之和恰好等于該數(shù)本身,比如,153恰好等于其中各位的數(shù)字中1的三次方、5的三次方、3的三次方的和(若是四位數(shù),則先做四次方再求和,依此類推)。這位老師解釋說,尋找水仙花數(shù)的問題看上去沒有什么實際的用途,甚至連數(shù)學(xué)家也還不清楚水仙花數(shù)和哪些著名數(shù)學(xué)問題能扯上關(guān)系,學(xué)生在日常生活中也并不會真的遇到這樣的任務(wù)需求,很難算是一個真實的任務(wù)情境。由此引發(fā)出一番討論:一個解決數(shù)學(xué)問題的需求,并且是一個看似并不具有什么實際用途的數(shù)學(xué)問題的需求,是不是適合用來當(dāng)做信息技術(shù)教學(xué)的情境呢?
不妨想象這樣的虛擬場景:某學(xué)者伏案許久,用紙筆尋找某39位數(shù)的水仙花數(shù),在經(jīng)過了數(shù)年計算后,這位可憐的學(xué)者忽然拍案而起叫道:“不,我不干了,我實在算不下去了,誰來發(fā)明一個機(jī)器來幫我一一檢驗吧?!鼻?,這的確是一個可用于枚舉算法教學(xué)活動的情境,不可否認(rèn),這樣的場景距離實際生活十分遙遠(yuǎn),但另一方面,尋找水仙花數(shù)的問題本身簡潔有趣,含有某種對稱的美感,而且任務(wù)需求直截了當(dāng),對應(yīng)著枚舉算法的工作特征,不少老師仍然認(rèn)為這是一個好例子。慢慢地,爭論逐漸從尋找水仙花數(shù)的情境是否適用于教學(xué),逐漸擴(kuò)展到如何在課堂中把握好編程和數(shù)學(xué)兩者間的關(guān)系。要理清所討論問題的思路并不容易,筆者請求大家不妨先回看歷史,來了解一下萊布尼茨的夢想。
回到萊布尼茨之夢
萊布尼茨在年輕時就產(chǎn)生出一種在當(dāng)時看似瘋狂的想法,制造一種利用邏輯符號推導(dǎo)知識的機(jī)器,其大致想法是,人的頭腦思考問題實際是利用語言和符號進(jìn)行邏輯推演,那么用機(jī)器也應(yīng)該能模擬人腦所做的事情,或許將來某些爭論只要用機(jī)器計算一下就能得到結(jié)果。隨著思考的深入,后來他把制造這種機(jī)器的步驟明確了下來:先是構(gòu)建一種通用的語言符號系統(tǒng),比如借用當(dāng)時的數(shù)學(xué)符號系統(tǒng)(他還親自補(bǔ)充了許多符號,如當(dāng)今被廣泛使用的微積分符號);然后就是要創(chuàng)設(shè)一種演算規(guī)則,如果要做什么判斷,那么就先輸入符號,根據(jù)演算規(guī)則對輸入的符號進(jìn)行變換并得到結(jié)果。萊布尼茨的設(shè)想后來被簡稱為“萊布尼茨之夢”。
這個夢想中的一些要素,其實早已被人們思考和討論過。例如,稍早時霍布斯在《利維坦》中有這樣的觀點(diǎn):人類心智所做的一切本質(zhì)上都是計算,但霍布斯并沒有像萊布尼茨那樣系統(tǒng)地去思考如何用機(jī)器將這種計算實現(xiàn)出來;而早在中國先秦時代,《易經(jīng)》中提供了一整套的卦爻推演方法,其中就體現(xiàn)出利用符號來對應(yīng)現(xiàn)實世界中的信息并按演算規(guī)則進(jìn)行自動決策的思想的萌芽(雖然實際使用時現(xiàn)實狀況與卦爻符號兩者間的對應(yīng)比較勉強(qiáng),難免摻雜臆斷和附會)。
另外,萊布尼茨自稱是畢達(dá)哥拉斯學(xué)派的最后傳人,這個古老學(xué)派認(rèn)為數(shù)的系統(tǒng)正是世界的本質(zhì),而不僅僅是對于現(xiàn)實世界所做的映射和模擬。萊布尼茨關(guān)于世界組成的單子論學(xué)說,其思想中的一些要素可以追溯到畢達(dá)哥拉斯學(xué)派的觀點(diǎn),但他走得更遠(yuǎn),因為在單子論中,不僅僅是由單子之間相互作用組成了現(xiàn)實系統(tǒng),而且每個單子自身也是整個現(xiàn)實系統(tǒng)的映射。這其中所蘊(yùn)含著的分形系統(tǒng)和全息系統(tǒng)的思想,為何以一個機(jī)器能夠把握現(xiàn)實世界中的信息并進(jìn)行自動判斷提供了依據(jù)。
當(dāng)然,萊布尼茨沒能實現(xiàn)他的夢想,即使到今天,雖然計算機(jī)已經(jīng)能夠進(jìn)行邏輯推理,但要讓機(jī)器參與哲學(xué)爭論,尚難做到像人類那樣優(yōu)秀。在萊布尼茨的年代,很少有人能理解他的思想,因為他設(shè)想中的機(jī)器,離當(dāng)時人們的日常生活實在太遙遠(yuǎn)了,大概討論如何造一臺能自動種地的機(jī)器更能引發(fā)人們的興趣吧。
在數(shù)學(xué)和科學(xué)的發(fā)展歷程中,可以找到許多研究項目,它們與當(dāng)時人們的實際生活并無緊密的關(guān)系,歐幾里德幾何學(xué)的深刻性和系統(tǒng)性遠(yuǎn)遠(yuǎn)超出當(dāng)時所需要的實用需求;開普勒研究天體運(yùn)行軌道是為了證明世界的和諧;牛頓研究月亮上的重力當(dāng)然不是為了去月亮上生活;人類研究素數(shù)的歷史可以追溯到古希臘時代,但兩千多年以來,關(guān)于素數(shù)的絕大多數(shù)研究并未直接對應(yīng)什么實際用途,直到20世紀(jì)素數(shù)的運(yùn)算規(guī)律被大量用于網(wǎng)絡(luò)信息的加密。
這個世界科技的進(jìn)步,一部分當(dāng)然是由實用主義的需求出發(fā)的,而另一部分,也是極其重要的部分,是由純粹的好奇心以及對于世界終極問題的追問所驅(qū)動的。愛因斯坦說:“科學(xué)如果要繁榮,就不應(yīng)當(dāng)有實用的目的。作為一個普遍的規(guī)律,科學(xué)所創(chuàng)造的知識和方法只是間接地有助于實用的目的,而且在很多情況下,還要等到幾代以后才見效。”仔細(xì)想想,何以一種純粹的好奇可以引領(lǐng)某個毫無使用價值的研究持續(xù)數(shù)十年乃至跨越數(shù)千年之久?從系統(tǒng)論的視角看,當(dāng)代高度發(fā)達(dá)的科技文明成果,是內(nèi)置于人這種奇特生物的“對世界作終極追問”的基因相互作用持續(xù)發(fā)酵所產(chǎn)生的涌現(xiàn)現(xiàn)象。這些追問涉及許多不同的方面,大部分問題在當(dāng)時看并無實用價值卻有走火入魔的嫌疑,比如“我是誰?我從哪里來?要到哪里去?”“世界為什么發(fā)端?時間的盡頭會到來嗎?”“世界是真實的嗎?”或者像“能不能找到素數(shù)的分布規(guī)律?”“如何證明哥德巴赫猜想?”“所有考拉茲序列都能回到1嗎?”,或者也可以是關(guān)于水仙花數(shù)的有趣問題,如“存在最大的水仙花數(shù)嗎?如果存在,那么這個數(shù)字是什么?”只要承認(rèn)當(dāng)今世界科技文明的成果,那么這些追問哪怕沒有實用性,也必須承認(rèn)其重要的意義,因為這是科技文明涌現(xiàn)的組成部分。更何況,對這些“無用”問題的研究事實上推動了研究方法的進(jìn)步。
面對著萊布尼茨的夢想,隨著今天的孩子們噼里啪啦用鍵盤敲打各種符號和數(shù)字到某臺機(jī)器中,想象著半導(dǎo)體元件中信號如螢火蟲一樣明滅變化,剎那間,唯一的一個6位的水仙花數(shù)躍入眼簾,用一個自動運(yùn)行的機(jī)器解決一個計算的問題,這是多么有真實感的場景啊!而39位的水仙花數(shù),也就是最大的那兩個水仙花數(shù)業(yè)已被數(shù)學(xué)家找到,但孩子面前的機(jī)器卻要花上十分漫長的時間來完成任務(wù)。讓計算更快些吧!這當(dāng)然也是夢想的一部分。
依賴自動機(jī)器的數(shù)學(xué)
牛頓力學(xué)中,星星很簡單,每個星星都是一個質(zhì)點(diǎn),給予初始值,根據(jù)公式運(yùn)算即可得出運(yùn)動的結(jié)果。在氣象學(xué)家眼里,雖然大氣的每個粒子的行為都符合物理學(xué),但大氣的行為卻很難預(yù)測,因為天氣系統(tǒng)是一個反饋系統(tǒng),由因產(chǎn)生果,果又成為因,極微小的初始值的變化會引發(fā)結(jié)果上巨大的不同,這便是混沌。人類本來希望通過數(shù)學(xué)來對現(xiàn)實世界進(jìn)行刻畫并預(yù)測未來,但由于混沌的存在,預(yù)測似乎成為不可能。但還有一種辦法,就是將現(xiàn)實中的狀況盡可能轉(zhuǎn)化為數(shù)字和符號放置在變量中,然后創(chuàng)立一套包含反饋的演化規(guī)則,人工將這些變量值的變化一步一步持續(xù)運(yùn)算跟蹤下去,若初始狀態(tài)值足夠多和精細(xì),演化規(guī)則足夠接近自然變化規(guī)律,那么只要能趕在自然變化之前將跟蹤工作完成,就能實現(xiàn)所謂的“預(yù)測”了。
既然人的頭腦太慢,那就交給機(jī)器去做,從某種意義看,這像是泄露天機(jī),為了預(yù)測更加精確,或為了預(yù)測更加長遠(yuǎn),無疑需要更好的機(jī)器和更好的算法。
考慮這樣的場景,某島嶼上有一些繁殖力旺盛的兔子以及恒定產(chǎn)量的食物,兔子的繁殖率是固定的,但存活率卻和食物的相對充分程度有關(guān)。生物學(xué)家對兔子的生活狀況作短期觀察后,可歸納出每隔一定單位時間兔子數(shù)量迭代的規(guī)律。由于反饋的存在,如若迭代過程長時間進(jìn)行下去,結(jié)果的數(shù)據(jù)是非線性的,所以無法借助當(dāng)前少數(shù)幾天的數(shù)據(jù)直接猜測得到若干天以后的局面,除非將計算一直跟蹤到若干時間單位之后。如果生物學(xué)家在這個系統(tǒng)中還引入了捕食兔子的狼群,那么數(shù)據(jù)的變化就更加變幻莫測,他最好是編寫一段程序代碼來幫助自己進(jìn)行計算工作,這樣才能更有效地將那些由局部數(shù)據(jù)獲得的演化規(guī)律用于更宏觀的場景。除了通過觀察并得到演化規(guī)律,還可以反過來用“猜”的方法,比如借助多主體建模,在計算機(jī)中“養(yǎng)”上那么一群虛擬兔子,賦予它們一定的隨機(jī)活動的能力,賦予不同的參數(shù)比如胃口、耐饑程度等,由此得到不同參數(shù)下的演化數(shù)據(jù),并將這些數(shù)據(jù)與現(xiàn)實情況加以比較。
這個簡單的例子說明,可以結(jié)合使用數(shù)學(xué)和計算機(jī)模擬的方法對自然進(jìn)行探索,數(shù)學(xué)公式的作用是展現(xiàn)自然現(xiàn)象變化的規(guī)律,但即使變化規(guī)律是簡單的,在多個對象協(xié)同運(yùn)作或自我反饋的過程中,也會呈現(xiàn)出難以通過局部數(shù)據(jù)把握宏觀復(fù)雜現(xiàn)象的情況,這時候就要依靠計算機(jī)編程建立起模擬系統(tǒng),來對自然界的現(xiàn)象進(jìn)行仿真。顯然,數(shù)學(xué)與編程相結(jié)合來實現(xiàn)模擬與仿真,是信息技術(shù)教學(xué)與其他學(xué)科整合的一條值得探索的路徑。
依賴數(shù)學(xué)的自動機(jī)器
圖靈的圖靈機(jī)可以看成是當(dāng)今普適計算機(jī)的一個原型機(jī),有意思的是,圖靈機(jī)這個設(shè)想是為了解決數(shù)學(xué)上的可判定性問題。圖靈將數(shù)學(xué)上的計算過程轉(zhuǎn)化為機(jī)械過程,從而使得論證過程高效簡捷。在后續(xù)研究中,圖靈還論證了圖靈機(jī)具有普適計算的能力,其大致思路是,證明可以用圖靈機(jī)模擬任何一臺執(zhí)行其他計算任務(wù)的圖靈機(jī),用今天人們熟悉的術(shù)語說,那臺模擬其他圖靈機(jī)的圖靈機(jī)相當(dāng)于計算機(jī)硬件,而被模擬的圖靈機(jī)相當(dāng)于計算機(jī)軟件,兩者其實是處于不同層級的系統(tǒng)。若對比觀察圖靈機(jī)的運(yùn)行過程和阿隆佐·丘齊(Alonzo Church)的Lambda演算過程,就知道兩者在邏輯上是等價的。Lambda演算過程中運(yùn)用的規(guī)則是簡單的,基于簡單的規(guī)則可以創(chuàng)建出各種數(shù)學(xué)應(yīng)用上的函數(shù),但創(chuàng)建過程抽象到讓普通人難以接受。相對而言,圖靈機(jī)的規(guī)則也是簡單的,但用圖靈機(jī)規(guī)則的組合來解決數(shù)學(xué)問題,運(yùn)作形式上要直觀很多。但兩者的共同點(diǎn)是,它們都借助簡單的系統(tǒng)的組合來構(gòu)建出復(fù)雜的系統(tǒng)。在系統(tǒng)科學(xué)中有一項研究,就是討論如何將很多個圖靈機(jī)組合起來實現(xiàn)一個具有自學(xué)習(xí)和進(jìn)化能力的系統(tǒng)。
目前絕大多數(shù)的計算機(jī)都等價于普適圖靈機(jī),這些機(jī)器都是不同的抽象的計算模型實體化后的成果,實現(xiàn)這些模型依賴大量的數(shù)學(xué)上的成果,比如布爾代數(shù)、線性代數(shù)、離散數(shù)學(xué)、概率統(tǒng)計、微積分等,而對于實現(xiàn)人工智能的機(jī)器學(xué)習(xí)模型,離開數(shù)學(xué)簡直是寸步難行。實現(xiàn)計算模型中的計算思維,在許多地方和數(shù)學(xué)思維也是重合的,比如模式識別與類比的思維、抽象與編碼的思維、形式化與自動化的思維等。
與數(shù)學(xué)不同的是,信息技術(shù)借助系統(tǒng)科學(xué)和工程學(xué)的方法,將抽象的符號和數(shù)據(jù)的演化直觀模擬出來,或直接制造出計算裝置實體。信息技術(shù)教育的關(guān)注點(diǎn)不應(yīng)該僅僅在于如何使用信息技術(shù)的工具,也要關(guān)注自動計算的機(jī)器何以可能被制造出來的問題。在中國大力振興信息產(chǎn)業(yè),尤其是半導(dǎo)體產(chǎn)業(yè)和人工智能產(chǎn)業(yè)的今天,加強(qiáng)這方面教育教學(xué)的力度就顯得尤為重要。
文章最后,再回到水仙花數(shù)的問題,2006年,有一位名叫王天權(quán)的鄉(xiāng)村小學(xué)老師在《數(shù)學(xué)通報》雜志上發(fā)表文章,內(nèi)容是關(guān)于用Basic語言編程尋找出世界上所有的水仙花數(shù)的方法。是不是會有人質(zhì)疑,用一個功能有限的初學(xué)者程序語言解決一個沒有什么實際意義的數(shù)學(xué)問題,這到底有價值嗎?雖然文章的發(fā)表本身就是肯定,但筆者還是想多說幾句,在2019年,新發(fā)現(xiàn)了第51個梅森素數(shù)是2的82589933次方減1,若將這個數(shù)字打印出來將有超過100公里的長度,顯然,這個數(shù)字本身沒辦法用在任何場所,但數(shù)字的尋找,卻需要尖端計算能力和有效數(shù)學(xué)方法兩者協(xié)力支持;而另一方面,雖然說站在巨人的肩膀上,也能一時借用到非凡的力量,但倘若自己不是巨人,那還是要做好從Basic(基礎(chǔ))開始成長的覺悟。
作者單位:上海市位育中學(xué)