海盜船長的藏寶圖:用「跳島遊戲」學會有限狀態自動機(Finite State Automata, FSA)

想像一下,你正參與一場刺激的海盜尋寶遊戲。你的目標是找到傳說中的「金銀島」。 但這裡有個大問題:你沒有地圖。 在電腦科學中,當我們不知道系統該怎麼運作時,我們通常會畫一種圖來幫助思考。 今天,我們要帶孩子從「亂闖亂撞」的冒險中,學會電腦科學中非常強大的工具——有限狀態機 (Finite State Machine, FSA)

第一階段:迷航的恐懼

首先,我們讓孩子體驗「沒有地圖」的困境。

  1. 情境設定:
    • 想像眼前有七座由海盜控制的島嶼。
    • 你站在第一座島上,面前停著兩艘船:A 船 與 B 船。
  2. 關鍵挑戰:
    • 你手上沒有航海圖,完全不知道這些船會開去哪裡。
    • 你只能選擇跳上其中一艘船。運氣好,你可能離寶藏近一步;運氣不好,你也許會被載回起點,或者在同一座島原地打轉。
  3. 引導感受:
    • 「如果我們就這樣亂搭船,是不是很像在走迷宮?我們會不會一直在繞圈圈而不自知?」
    • 這就是電腦在沒有指令時的狀態——迷惘且無效。

第二階段:繪製你的航海圖

既然怕迷路,我們就來親手製作地圖。這就是將「經驗」轉化為「邏輯」的過程。

  1. 開始繪製:
    • 拿出一張紙,把每一座你到達的島嶼畫成一個「圓圈(點)」。
    • 把你搭乘的A 船或 B 船,畫成連接島嶼的「箭頭(航線)」。
  2. 建立模型:
    • 當你把這張圖畫出來時,你其實正在建構一個電腦科學模型!
    • 島嶼(圓圈): 電腦科學家稱之為「狀態 (States)」。
    • 搭船(箭頭): 這代表「輸入指令」或「轉移 (Transitions)」。
    • 整張地圖: 這就是「有限狀態機 (FSM)」。它清楚定義了系統在什麼情況(在哪座島)下,收到什麼指令(搭哪艘船),會發生什麼事(去哪座島)。

第三階段:連結日常生活中的應用 (Concept Connection)

原來手錶就是海盜島

現在,我們把這張海盜地圖的概念,套用到孩子手上的電子錶(或是家裡的冷氣遙控器)。你會發現,它們根本是同一個東西!

  1. 生活譬喻:
    • 初始島嶼(狀態): 手錶現在顯示「目前時間」。
    • 搭乘 A 船(輸入): 當你按下「按鈕 A」。
    • 前往新島嶼(轉移): 手錶畫面變成了「碼表模式」。
  2. 連續操作:
    • 搭乘 B 船: 在碼表島嶼上,按下「按鈕 B」,手錶開始計時(狀態改變)。
    • 再搭 A 船: 如果你再按一次按鈕 A,可能又跳到了「鬧鐘設定」的島嶼。
    • 回到起點: 一直按 A,最後你會發現自己又回到了最初的「時間顯示」島嶼。

第四階段:總結與思考 (The Takeaway)

—— 說明書就是你的地圖

  • 家長小結: 「你看,這支手錶的操作邏輯,跟海盜島嶼完全一樣!電器產品附的那本『說明書』,其實就是我們剛剛畫的那張『航海圖』。」
  • 思考挑戰: 「如果有一座島(狀態),不管搭 A 船還是 B 船都出不去(永遠停在原點),在海盜遊戲裡這叫『死路』;在電腦或手錶裡,這叫做什麼?」 (答案:當機 / 死結 / 卡住)
  • 試著畫出超級瑪利歐的狀態圖吧!
    • 初始狀態: 小瑪利歐。
    • 輸入指令 A(吃蘑菇): 變身成 大瑪利歐(狀態改變)。
    • 輸入指令 B(碰到烏龜):
      • 如果在「小瑪利歐島」碰到烏龜 ——> 死掉 (Game Over)。
      • 如果在「大瑪利歐島」碰到烏龜 ——> 變回 小瑪利歐(受傷但沒死)。
    • 教學亮點: 讓孩子發現,明明都是「碰到烏龜」,為什麼結果不一樣? 因為你當時所在的「狀態」不同!

透過親手繪製島嶼間的連接,學會了如何將複雜的系統行為簡化為可視化的邏輯模型,。有限狀態機讓電腦科學家能夠精確地設計軟體介面與硬體控制邏輯。

參考來源:csunplugged finite state automata