「演算法(Algorithm)」這個詞聽起來很像高深的數學,好像只有天才才懂。但其實,你每天早上刷牙、綁鞋帶、甚至整理書包時,你都在執行演算法!
簡單來說,演算法就是「把一件事做好的『詳細步驟』」。
電腦很笨,它不會自己思考。要讓電腦幫我們找資料、算圓周率,我們必須給它一張「絕對不會出錯的說明書」。這張說明書,就叫演算法。
讓我們透過遊戲,讓孩子發現自己其實早就已經是演算法大師了。
第一階段:體驗「電腦有多笨」 (The Blind Robot)
孩子通常認為「我講一遍你就要懂」,但電腦不是這樣。我們要讓孩子體驗什麼叫「精確的指令」。
1. 遊戲設定:
- 角色扮演:家長扮演「瞎眼機器人」(矇住眼睛),孩子扮演「程式設計師」。
- 任務:指揮機器人從門口走到椅子上坐下。
2. 執行與「除錯」:
- 孩子通常會說:「往前走!」
- 家長(機器人):故意一直走,直到撞到牆壁也不停(因為指令沒說停)。
- 孩子:「停!轉彎!」
- 家長:原地一直轉圈圈(因為沒說轉哪邊、轉多少度)。
- 孩子(崩潰):「吼!我是叫你轉向椅子那邊啦!」
3. 建構式引導:
- 老師:「機器人看不到椅子,它不知道哪邊是『那邊』。你必須給它更清楚的指令。」
- 修正後的演算法:
- 往前走 3 步。
- 向右轉 90 度。
- 往前走 2 步。
- 坐下。
- 總結:「你看,這串『往前、右轉、坐下』的步驟,就是一個走路的演算法!」
第二階段:好方法 vs. 壞方法 (Efficiency Matters)
「有些演算法比較快…讓我們解決很難的問題」。我們要讓孩子理解,同樣的任務,步驟安排得好不好,差別很大。
1. 任務:整理書包 (Bin Packing Problem)
- 情境:給孩子一堆大小不一的課本、鉛筆盒、水壺,和一個小書包。
2. 壞的演算法(隨便塞):
- 老師:「請你閉著眼睛,隨便抓一樣東西就往書包丟,直到塞滿為止。」
- 結果:東西亂七八糟,空間浪費,最後水壺塞不進去。
3. 好的演算法(貪婪演算法/分類法):
- 老師:「如果我們先把『最大的』放進去,再放『小的』塞縫隙,試試看?」
- 結果:全部都塞進去了,而且很整齊。
- 總結:「雖然都是『裝書包』,但你的方法(演算法)比較聰明,就能裝更多東西。Google 也是這樣,它用聰明的演算法幫你在幾億個網頁裡,在 0.1 秒內找到你要的資料。」
第三階段:演算法的故事 (The History)
等到孩子對「步驟」有感覺了,我們再來講故事。
我們每天在數學和電腦科學中頻繁使用的詞彙——「演算法」(Algorithm),它的名字究竟是從何而來的呢?讓我們一起回到歷史的長河中,探究這個概念的知識建構過程。
追溯「演算法」的根源,我們必須認識一位重要的歷史人物:穆罕默德•伊本 •穆薩•花拉子米(Mohammed ibnMusa Al-Khowarizmi—Mohammed)。這位學者,也就是「摩西的兒子,花刺子模人」,大約在西元 800 年左右,加入了當時位於巴格達、被譽為知識殿堂的「智慧之屋」(House of Wisdom)這個學術中心。
那麼,花拉子米究竟做了什麼,讓他的名字與現代科學如此緊密相連呢?
他的作品發揮了關鍵性的橋樑作用。他成功地將原本屬於印度的算數藝術,傳播到了廣大的阿拉伯地區。我們可以理解為,他開啟了一條重要的知識傳播之路。隨後,這項珍貴的算數知識進一步地從阿拉伯傳播到了歐洲。
知識在翻譯和傳播的過程中會留下印記。更有趣的是,當花拉子米的作品在西元 1120 年被翻譯成拉丁文時,譯本開頭的第一個詞正是「Dixit Algorismi」。
你們看,我們今天所使用的「Algorithm」這個詞,正是源自於這個拉丁文開頭的詞彙——「Algorismi」。這提醒我們,今天的數學和計算機科學,其實是建立在千年以前不同文明(如印度、阿拉伯、歐洲)相互交流和知識累積的基礎之上。我們學到的每一個詞彙,背後都隱藏著一段豐富的歷史故事。

