誰卡住了我的橘子?用「傳水果遊戲」破解網路大塞車( Routing and Deadlock in Networks )

你有沒有遇過玩遊戲玩到一半,畫面突然卡住不動?或者是爸爸開車時,在小巷子裡跟別人的車子「大眼瞪小眼」,誰也過不去?這在電腦科學裡叫做「死結 (Deadlock)」。

網路世界就像馬路,資料(封包)就像車子。如果沒有良好的交通規則,或者大家都太自私(只進不出),網路就會崩潰。

今天我們要把家裡變成一個小型網路,用幾顆「橘子(或球)」,來一場考驗全家人默契的解謎遊戲!

在電腦網路中,如果每個程式都只顧自己(貪婪),整個網路就會癱瘓。我們要透過這個「傳水果」的遊戲,讓孩子親身體驗什麼叫「大塞車(死結)」,以及如何透過合作讓網路重新流動。

第一階段:自私的代價

首先,我們要製造一個「動彈不得」的狀況,讓孩子理解為什麼電腦會當機。

  1. 任務設定:
    • 找 5 個人(或用玩偶佔位),圍成一個圓圈坐下。
    • 每個人身上貼一張標籤(A、B、C、D、E)。
    • 道具分配: 準備 5 對水果(例如兩顆貼 A、兩顆貼 B…)。把這些水果打亂分給大家。
    • 關鍵限制: 每個人手上有兩顆水果,只有其中一個人手上只有一顆(留一隻空手)。
  2. 規則解說:
    • 目標:你身上的標籤是 A,你最後手上就要拿到兩顆 A 水果。
    • 移動規則: 你只能把水果傳給左右鄰居,而且只有當鄰居有一隻手是空的時候,你才能傳給他(因為一隻手只能拿一顆)。
  3. 製造死結 (Deadlock):
    • 告訴孩子:「現在,只要你拿到屬於你的水果(例如 A 拿到 A),就緊緊抓著不要放,絕對不要傳給別人!」
    • 結果: 遊戲開始沒多久,大家就會卡住。因為每個人都抓著自己的水果不放,沒人願意騰出手來幫忙傳遞別人的水果。那隻「空手」消失了,大家都動不了。
    • 家長: 「這就是『死結』。就像四輛車在十字路口,大家都想先過,結果誰也過不了」。

第二階段:遊戲重啟-讓空位流動起來

我們要打破僵局,引入「路由 (Routing)」的概念。

  1. 引導思考:
    • 「剛剛我們失敗了,因為大家都太『自私』(也就是拿到自己該拿的水果之後就不再傳了)。為了讓A水果能從最左邊傳到最右邊,中間的B和C就算拿到了自己的水果,是不是也得暫時幫忙傳遞一下?」
  2. 新策略:
    • 我們不再只顧自己。我們的目標是讓那一隻「空手」在圓圈裡跑起來。
    • 口訣:有空位就補,有球就傳!

第三階段:合作的演算法

  1. 執行任務:
    • 重新開始。這次孩子們要觀察:哪裡有空位(空手)?
    • 如果我是 B,我手上拿著 C 的橘子,而右邊的 C 正好有空手,我就趕快把橘子傳給他。
    • 如果我是 D,我拿到了自己的 D 橘子,但為了讓卡住的 A 橘子通過,我願意先把手上的 D 傳給旁邊暫放,騰出空間讓 A 通過。
  2. 動態觀察:
    • 你會看到橘子在圓圈裡快速流動,就像車流在移動一樣。
    • 最後,每個人手上的橘子都跟身上的標籤對應了!
    • 歡呼: 「我們解開死結了!網路通了!」

第四階段:概念連結

為什麼大家都會卡住?

剛剛我們看到,如果每個人都死抓著橘子不放,遊戲就結束了。在真實世界裡,這種「互不相讓」的情況到處可見:

  1. 馬路上的「大眼瞪小眼」 (Traffic Gridlock)
    • 情境: 想像在一個十字路口,四個方向同時都有車子開出來,大家都想往前衝,結果全部卡在中間。
    • 連結: 這就像我們剛剛的遊戲,A 車擋住了 B 車,B 車擋住了 C 車,C 車又擋住了 A 車。這種連警察來都很難解開的交通打結,就是典型的死結。
    • 解決方法: 必須有人後退(釋放資源),或者遵守紅綠燈規則(通訊協定)。
  2. 跨年夜的捷運站 (Crowd Congestion)
    • 情境: 跨年煙火結束後,成千上萬的人同時要湧進捷運站。
    • 連結: 當太多人同時想要搶同一個資源(車廂門),就會發生推擠,結果反而誰也進不去,速度變得超級慢。
    • 路由的概念: 這時候捷運站員會拿著大聲公引導:「往台北車站的請走左邊,往淡水的請走右邊。」這就是在做「路由 (Routing)」——幫大量的人潮(資料封包)規劃出不會打結的路線。
  3. 銀行轉帳的尷尬 (Banking Deadlock)
    • 情境: 這是電腦世界最怕發生的事。假設小明要匯錢給小華,小華也要匯錢給小明。
    • 連結: 為了安全,電腦在處理匯款時會先把帳戶「鎖住 (Lock)」。
    • 如果程式寫得不好,電腦把小明的帳戶鎖住(等小華的錢進來),同時又把小華的帳戶鎖住(等小明的錢進來)。
    • 兩邊都在「等對方先動作」,結果就是永遠等不到,銀行系統就會當機。

第五階段:除錯與挑戰

改變地圖形狀

網路不一定都是圓圈,我們可以改變隊形來增加難度。

  • 挑戰一:一字長蛇陣 (Line Topology)
    • 讓大家排成一直線。最左邊的人要傳給最右邊的人,中間的人會非常忙碌。
    • 觀察: 中間的人如果不幫忙,兩頭的人永遠拿不到水果。這顯示了「路由器 (Router)」的重要工作。
  • 挑戰二:禁止說話 (Silent Mode)
    • 規則: 全程不准講話,只能用眼神示意鄰居把手伸出來接水果。
    • 發現: 這是模擬真實的電腦網路,電腦之間不會說話,它們只能依照設定好的「通訊協定 (Protocol)」來傳遞資料。

教學觀察重點表

這張表幫助您引導孩子理解「局部貪心」與「全局合作」的衝突。

觀察點❌ 較無效的反應 (說教)✅ 較有效的引導 (啟發思考)
當孩子拿到自己的球就不傳了「不要這麼自私,傳出去。」「你看,你手上拿滿了,旁邊的人想給你球也給不了。如果你不把這顆傳出去,那個你也想要的另一顆球,是不是永遠傳不過來?」
當遊戲卡住動不了時「你們玩錯了,重來。」「現在發生了什麼事?像不像過年塞車?有沒有人願意當那個『倒車』讓路的人,讓交通恢復順暢?」
解釋為什麼需要空手「這是遊戲規則。」「這隻空手就像是馬路上要保持的『安全距離』。如果馬路上一輛車貼著一輛車,完全沒有空隙,車子還能變換車道嗎?」

💡 給家長的建議

這個活動至少需要 5 個人 才好玩(如果人夠多,甚至可以讓一個人拿兩顆球,增加擁擠感)。如果人數不足,可以用玩偶代替其中幾個位置,由家長或孩子幫忙操作玩偶的手。最重要的是要讓孩子體驗到「我必須先把手上的東西給出去,最終我才能拿到我要的東西」這種合作邏輯,這正是網際網路能運作到今天的核心精神!

ORANGE_GAME // AUTO_DEMO

MOVES: 0 MATCHED: 0/0 IDLE
點擊「開始演示」觀看自動解謎過程
> SYSTEM_READY