陳凱



所謂思維決定行為,行為決定成果。為了達成具有創造性的成果,或者構造出創造性的方法來解決問題,除了需要適時轉換思維方法,也要學會聯系多種不同思維模式,建立起整體的系統思維框架。教育界常常提到課程整合或學科融合,其目標之一,就是建立起學科之間的橫向聯系,不能將這個橫向聯系只視作不同學科知識技能的雜糅和混搭,更重要的,是在達成某統一愿景的目標下,為復雜的現象界的事件建立起系統模型,能有針對性地將不同學科的思維方法和工具運用到模型構筑的不同組成部分或不同階段中去。這是一個宏大的討論主題,本文只是從一個小問題切入,試圖將問題解決過程中系統思維框架構造的過程清晰展現出來。
這個小問題源自經典的雞兔同籠問題:假設雞和兔共34條腿,兔子比雞多1只,則雞兔各有多少?此題解法很多,其中蘊藏有寶貴的數學思想,如數形結合思想、假設驗證思想、函數與方程思想等,有關雞兔同籠與數學思維方面的討論文章較多,大家可自行查閱,本文希望大家針對如下解決方案展開具體分析:因籠中有雞有兔,且兔比雞多1只,則可從數量1開始,分別列出1只雞2只兔、2只雞3只兔等各種情況并算出總共腿數,如表1。
看似只是簡單的列表法,只要一直列下去便能得到答案。此處,關鍵是發現其實并不需要完整列表,由觀察可知,表中總腿數變化呈等差數列,則可以猜測后續總腿數是28、34等,如此便省去從雞和兔的數量得到總腿數的計算過程。注意,本題34是個小數字,若總腿數很大,等差數列計算本身也相當耗費時間,在此,可分不同的路徑來研究問題解決時的思維模式:一是歸納出數學公式,以雞的數量乘以6加上4,則可得總腿數,然后便可由方程式求得答案,此處不僅反映出人腦對函數中線性關系的把握,也頗能體現“觀察—歸納—演繹”的思想,與科學研究的方法有契合之處,值得指出的是,對于方程式本身,既可以只將方程式當作黑箱,直接運用方程得出結果,也可以進一步深究其中實質,找出變量與數據變化的實質原因。郜舒竹在《算法背后的想法》一文中,針對《孫子算經》中原始的雞兔同籠問題(與本文問題略有不同)指出,解決問題不只是按部就班根據算法程序操作,而是要找出算法產生背后的想法,理清解決問題的想法和算法之間的關系。這其實就引出了另一種思維模式:由數字機械變化的事實,思考如何設計出實現自動化運算過程的方法,此中的“如何”其實還可細分為兩層:一是如何設計算法本身,二是如何達成算法的實現。一些傳統數學教學中未必推薦的方法,如逐個枚舉,隨機列舉、自上而下的遞歸等,在自動化的計算環境中則有可能成為重要的解決方法。這也就是說,一旦將“人—事—物”作為完整的系統來考慮,便要承認構建一個自動化系統來解決具體問題,同樣是十分重要的需求。筆者認為,從具體數學問題入手,研究其實現自動化計算的方案,與信息技術學科中的“計算思維”有著密切的聯系。由于計算機的出現,許多按傳統數學思維解決的問題,可以借助機械化、自動化的思想加以解決,而一些用傳統數學方法難以解決的問題,尤其是復雜系統中所存在的問題,更是離不開自動化、機械化的處理方法。
需要說明的是,若只是簡單將雞兔同籠問題的現成算法“翻譯”為程序代碼并進行驗證計算,這樣的教學無法充分體現計算思維的培養,充其量只是完成了計算方法至程序代碼的轉換并體驗自動化實現過程而已。計算思維與數學思維的運用過程中,都需要從問題情境中歸納和抽象出數字符號并構建起計算的模型,但計算思維與數學思維相比,其獨特性在于,必須要思考該模型在現實不同環境下可實現自動化運行的可能性和可行性。這樣就得到了由數學問題通向計算系統構建的學習路徑,如圖1所示。此處之所以使用“計算系統”而不是“計算機系統”一詞,是為了強調人(或其他非傳統的元件)在這個系統中的參與性。
在構建計算系統的整個路徑中,數學思維和計算思維的運用互有融合,顯然,越到路徑的后半段,越是體現出計算思維的重要性。在構建自動化模型的環節,所用到的不一定是計算機,例如,將班級中每位學生的學號對應雞的數量,根據教師指令,同時各自運用計算公式得到雞和兔腿總的數量并進行匹配,這樣的方法就體現了并行計算的思想;再如,利用電子表格的自動拖曳功能就能輕松計算解決本文雞兔同籠問題的等差數列項,而簡單的拖曳功能中其實蘊含了數據自動迭代的思想,這種數據的自動迭代不僅可以利用電子表格實現,也可以借助其他帶有自動化特點的工具來完成——可以設計出某種按固定規則進行變化的積木游戲、利用文本編輯軟件中的宏功能,甚至只是記事本中的“查找—替換”,也能體現出自動迭代的思想方法,如圖2所示。而學習者能否靈活將方法遷移至不同的實施工具中,則在一定程度上體現出計算思維運用的能力。吳文俊院士曾說,數學的機械化不僅對于數學有重大意義,還將帶動腦力勞動的機械化。由此筆者想到,信息技術對于數學教學的支持,遠不只是停留在信息技術工具在教學演示、互動、實驗中的使用,同樣重要且容易被忽視的,是將數學機械化思想的力量展現出來。在解決問題時,要想到自己的工具不僅僅是頭腦、紙張和筆,還有那些跳動著電信號的計算裝置,要學會將所有的工具整合成完整的系統來發揮作用。
而在整個路徑的前半段和后半段,數學思維對于解決問題的重要性在不同方面得到體現,為更容易說明問題,下面對雞兔同籠問題稍作改造:假設每隔固定階段,籠中就會投入若干雞與兔,但由于雞飛兔跳,對腿的總數的記錄不準確,要求在統計一段時間的數據后,總結出投放雞和兔子的規律。類似的問題十分有現實意義,這是因為現實世界的運動必然存在不確定性,而對客觀世界的觀察也存在不確定性。在構建計算系統路徑的前半段,需要通過觀察、記錄和歸納,得到數據大致線性變化的結論,而路徑的后半段,就需要設計出函數擬合的算法,找出現象背后的規律。說到函數擬合,可以發現用到微積分的機器學習算法,其與簡單的枚舉算法相比,性能有極大的提高,可見,即便是像雞兔同籠這樣的簡單問題,在計算系統的整個構建過程中,不可避免地運用到了多種數學方法,更何況計算機科學中存在著大量與概率、線性代數、圖論等數學領域有著深刻交集的算法。如果說數學是人們對客觀世界定性把握和定量刻畫后,逐漸概括而得的一種抽象模型,算法則是在一定程度上對接客觀現實,將數學模型實時運行起來的動態模型系統(算法也有主觀世界塑造作用,此處不做展開)。很難想象,一個數學功底有限的人,能真正把握一個稍微復雜一些的算法,更遑論對其進行有效的修改和創新了。
筆者希望教師能在落實本學科核心素養的整體目標下,打破學科壁壘,融合學科優勢,促進學生思維發展。在信息學科的教學中,從實現具體應用的角度展開討論數學問題,應是合理之舉,對于超出學生數學水平范圍的問題,可簡述數學工具的功能,將其暫作為黑箱使用,并為學生指出深入學習研究的方向。
參考文獻
徐新照. 科學的生命是探索——吳文俊院士關于“實現腦力勞動機械化”的對話[J]. 學術界,2001(3): 49-54.
郜舒竹. 算法背后的想法[J]. 教學月刊:小學版(數學),2012(9): 20-23.