你的大腦每天都在寫程式!用「機器人遊戲」秒懂演算法(Algorithm)

「演算法(Algorithm)」這個詞聽起來很像高深的數學,好像只有天才才懂。但其實,你每天早上刷牙、綁鞋帶、甚至整理書包時,你都在執行演算法!

簡單來說,演算法就是「把一件事做好的『詳細步驟』」

電腦很笨,它不會自己思考。要讓電腦幫我們找資料、算圓周率,我們必須給它一張「絕對不會出錯的說明書」。這張說明書,就叫演算法。

讓我們透過遊戲,讓孩子發現自己其實早就已經是演算法大師了。

第一階段:體驗「電腦有多笨」 (The Blind Robot)

孩子通常認為「我講一遍你就要懂」,但電腦不是這樣。我們要讓孩子體驗什麼叫「精確的指令」。

1. 遊戲設定:

  • 角色扮演:家長扮演「瞎眼機器人」(矇住眼睛),孩子扮演「程式設計師」。
  • 任務:指揮機器人從門口走到椅子上坐下。

2. 執行與「除錯」:

  • 孩子通常會說:「往前走!」
  • 家長(機器人):故意一直走,直到撞到牆壁也不停(因為指令沒說停)。
  • 孩子:「停!轉彎!」
  • 家長:原地一直轉圈圈(因為沒說轉哪邊、轉多少度)。
  • 孩子(崩潰):「吼!我是叫你轉向椅子那邊啦!」

3. 建構式引導:

  • 老師:「機器人看不到椅子,它不知道哪邊是『那邊』。你必須給它更清楚的指令。」
  • 修正後的演算法
    1. 往前走 3 步。
    2. 向右轉 90 度。
    3. 往前走 2 步。
    4. 坐下。
  • 總結:「你看,這串『往前、右轉、坐下』的步驟,就是一個走路的演算法!」

第二階段:好方法 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」。這提醒我們,今天的數學和計算機科學,其實是建立在千年以前不同文明(如印度、阿拉伯、歐洲)相互交流和知識累積的基礎之上。我們學到的每一個詞彙,背後都隱藏著一段豐富的歷史故事。