陳智敏 黃細光



摘要:本文以“數字三角形”一題為例,通過在教學實踐中不斷地提出問題并適時點撥,從深度優先搜索到動態規劃,引導學生在原有算法的基礎上不斷完善優化,從而發展主動思維、發散思維、求異思維、逆向思維等,形成科學穩定的知識邏輯結構,并最終培養創新思維。
關鍵詞:拔尖創新人才;創新思維;信息學教學;數字三角形
中圖分類號:G434 ?文獻標識碼:A ?論文編號:1674-2117(2021)07-0043-03
相對于基本的邏輯思維而言,創新思維是一種高階思維,是一種主動發現問題、提出見解并積極探索的思維。在各種思維方式中,主動思維、發散思維、求異思維、逆向思維是創新性思維結構的重要組成要素[1],創新思維就是主動對聚合和發散思維、求同和求異思維、正向和逆向思維等的交互運用。[2]因此,筆者以“數字三角形”一題為例探討如何在信息學教學中通過引導學生在原有的基礎上更好地完善算法的方式,發展主動思維、發散思維、求異思維、逆向思維等,最終培養學生的創新思維。[3]
創新思維培養的教學實踐
創新源于對問題的解決,信息學教學中的創新思維培養離不開“一題多解”的問題情境。“數字三角形”一題的問題描述為:在一個數字三角形中,從三角形的頂部到底部有很多條不同的路徑。對于每條路徑,把路徑上面的數(每個數不超過100)加起來可以得到一個和,請找到最大的和。注意:路徑上的每一步只能從一個數走到下一層中和它最近的左邊的那個數或者右邊的那個數,行數不超過100,程序運行時間限制為1秒。
1.主動思維的培養
一題多解的問題情境有助于激發學生的主動思維,讓學生想探究、能探究。結合之前的基礎算法知識,包括遞歸與遞推算法、深度優先及廣度優先搜索算法等內容的學習,再通過對問題的需求情況及已知條件的分析,學生們很快都提出了算法1,即采用常見的深搜算法定義一個函數dfs(int x,int y,int sum),表示從上往下,搜索到第x行、第y列時得到和sum,每搜索一層則加上當前位置上的數a[x][y],當搜索到最后一行,采用打擂臺的方式存儲最大值到ans中,否則繼續遞歸到正下方或者右下,即dfs(x+1,y,sum)與dfs(x+1,y+1,sum)。主程序中調用dfs(1,1,0),最后直接輸出ans即可。算法1的核心參考程序如下頁圖1所示。
2.求異思維的培養
在信息學教學中,講題等交流討論活動能夠充分調動學生學習的主觀能動性,使其思維處于一種興奮的狀態。[4]通過鼓勵學生講述不同的思路,會有部分學生突破常規思維,產生新思路,他們在不帶參數sum的情況下,定義了一個函數opt(int x,int y),表示從上往下,搜索到第x行、第y列所能夠得到的最大和,直接遞歸求解,由下至上直到a[1][1],主程序中調用opt(1,1)并輸出結果。因此,算法1可采用描述式的寫法表示為圖2所示的樣子。
但是,算法2和算法1在效率上沒有區別,由于搜索的數據過多導致用時過長,時間超限。那么,怎么改進算法才能在時間限制范圍內通過更多的數據?疑問是激發學生發散思維的源泉,因此,筆者設立數據范圍這一障礙激發學生疑問,以疑問引發思考。
3.發散思維的培養
在討論原有算法的可行性與不足之處的基礎上,加上適當的點撥,學生通過發散思維,對之前所學過的知識進行重新組合、分析并變通,找出新的問題解決方案。例如,有學生提到,opt(x,y)表示一種狀態,“opt(x,y)=a[x][y]+max(opt(x+1,y),opt(x+1,y+1))”是狀態之間的轉移方式,但是每個狀態opt(x,y)會被調用多次,即出現冗余計算。而使用標記數組,將與狀態有關且有用的信息記錄下來,然后再對后面的狀態進行搜索,當狀態已經搜索過,則可以直接調用信息,從而減少冗余計算。這就是記憶化搜索,因此可以將opt(x,y)狀態的值“a[x][y] + max(opt(x+1,y),opt(x+1,y+1))”存儲到數組f[x][y]中,算法2可進一步表示為如下頁圖3所示的樣子。
那么,是否可以采用遞推方式的做法?遞推算法的基本思想是使用已有的信息推知新的信息,與遞歸的過程恰恰相反。追問可以加快思維節奏,促成學習發生。聚焦于問題的解決,通過進一步的討論與交流,學生發現可以采用遞推的方法逐步推進,由下往上,求解每個階段每個狀態的最優解,算法3可以進一步改寫為如下頁圖4所示的樣子。
4.逆向思維的培養
很多時候,學生在學習的過程中容易形成思維定勢,所以,為了提高思維的靈活性,信息學教學中需要經常反其道而行之,破除正向思維定勢的束縛。針對以上問題,也可以設f[i][j]為從起點到達i行j列處所能得到的最優答案,則轉移方程也可改寫為f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j],即當前最優答案為上一層能轉移到此位置的兩個位置的最優答案加上當前數字。
5.聚合思維的培養
聚合思維主要體現為思維的深度,任何領域的創新,都必須先對該領域已有的知識和經驗進行深入的了解。上述過程中,通過組織學生交流與討論,學生認識到了算法之間時間效率的差異性,并通過深度搜索到動態規劃的演化,對“分階段性求問題的最優解”“設置狀態轉移簡化問題”“采用遞推的方法逐步推進達到總問題最優解”等概念有了初步的認識,教師就此直接對動態規劃算法的思想及簡單應用進行更為詳細的講解,包括“如何分析問題劃分階段”“如何設置狀態推導轉移方程”等,以加深對知識的理解,并通過一系列的題目促進學生對知識的鞏固及運用。
總結
筆者通過“數字三角形”一題,循序漸進,不斷地提出問題,引導學生有序分析與思考問題,加強對問題及教學內容的思考,養成主動思維的習慣[5];不斷追問點撥,從深度優先搜索到動態規劃,促使學生在原有算法的基礎上不斷完善優化,發展主動思維、發散思維、求異思維、逆向思維等,形成科學穩定的知識邏輯結構[6],并最終培養創新思維。該實踐避免了以標準程序局限學生的創新思維,全面提升了學習品質。[7]
參考文獻:
[1]魏淑慧.研究式教學與學生創新思維能力的培養[J].山東師范大學學報:人文社會科學版,2008(05):68-72.
[2]張義生.論創新思維的本質[J].中共中央黨校學報,2004(04):28-31.
[3]鐘良鋒.“以人為本”的信息學競賽輔導教學[J].教育信息技術,2014(09):32-34.
[4]祁進.中學生高階思維發展的PBL教學模式探索——以信息學奧賽輔導為例[J].中小學電教,2018(12):13-14.
[5]劉鳳蘭.基于學生思維發展的初中信息學課堂提問策略[J].中國教育技術裝備,2017(05):84-85.
[6]宋新波,陳智敏,黃細光.信息學課程教學中如何開展科學探究教育——以莫比烏斯反演問題為例[J].中國信息技術教育,2020(11):50-53.
[7]陳茂賢.學習品質培養視角下信息學編程教育創新實施[J].中國信息技術教育,2019(07):42-44+67.
作者簡介:陳智敏(1988—),男,廣東汕頭人,中學一級教師,碩士,中山紀念中學高中信息技術教師,主要從事學科教學設計與信息學競賽教育研究。