計算抽象化:模擬現實系統的狀態與行為

歡迎來到計算抽象化與模型建立(Modelling)的學習指南!你有沒有想過,電腦科學家是如何製作出逼真的電子遊戲、智能中央暖氣系統如何保持室內溫暖舒適,或者城市規劃師如何在興建新道路前預測交通擠塞?答案就是利用模型(Models)抽象化(Abstraction)

初次接觸這些詞彙時不用擔心它們聽起來太深奧。讀完這份筆記後,你會發現自己其實每天都在運用抽象化!


1. 甚麼是抽象化?甚麼是模型?

讓我們先來拆解本章最重要的兩個核心概念:

抽象化(Abstraction):這是一個篩選並移除不必要細節的過程,讓你能專注於解決問題時真正重要的核心特徵。

模型(Model):真實世界系統或問題的簡化呈現。電腦科學家建立模型是為了測試想法、理解事物運作原理,並在無需預先建造實物的情況下預測未來。

生活中的比喻:倫敦地鐵圖(Underground Tube Map)

試想想著名的倫敦地鐵路線圖。它會否巨細無遺地畫出每棵樹、每棟建築物、每個街角,以及鐵路軌道的實際彎曲程度?當然不會!它只使用了直線和彩色圓點。這就是抽象化的實際應用:

保留的細節:車站名稱及其連接順序(乘客規劃路線時所需的關鍵資訊)。
移除的細節:地面道路、河流、地底深度以及精確的實際距離(規劃乘車路線時不需要的細節)。

重要概念辨析:抽象化(Abstraction) vs 拆解(Decomposition)

這兩個計算思維(Computational Thinking)概念很容易混淆,但它們的功能截然不同:

拆解(Decomposition):將一個龐大而複雜的問題分解成較小、更易管理的子問題。
抽象化(Abstraction):透過移除干擾或不必要的細節來簡化問題。

記憶小貼士:拆解(Decomposition)想像成把洋蔥切粒(Dicing)成小塊;把抽象化(Abstraction)想像成只吸收(Absorbing)核心重點!

重點歸納:抽象化就是保留重點、忽略細節,讓我們能夠建立清晰且高效的電腦模型。


2. 理解「狀態」(State)與「行為」(Behaviour)

在電腦科學中,我們所模擬的每個系統都由兩個核心要素組成:狀態(State)行為(Behaviour)

甚麼是「狀態」(State)?

狀態是指系統在特定時間點的當前狀況或「快照」(Snapshot)。它通常由儲存在變數(Variables)中的數據和數值來描述。

交通燈例子:當前狀態為「紅燈」
中央暖氣系統例子:熱水爐的當前狀態為「關閉」(Off),而室溫為 \(17^\circ\text{C}\)。
自動閘門例子:當前狀態為「關閉」

甚麼是「行為」(Behaviour)?

行為是一套規則、邏輯或動作,決定了當某個事件發生或接收到輸入時,系統如何由一個狀態轉變成另一個狀態。

交通燈例子:如果計時器到達 \(30\) 秒,則將狀態轉變為「紅燈及黃燈」
中央暖氣系統例子:如果溫度跌破 \(18^\circ\text{C}\),則將熱水爐狀態轉變為「開啟」(On)
自動閘門例子:如果紅外線感應器偵測到車輛,則將狀態轉變為「正在開啟」

重點歸納:狀態是系統當前是甚麼(數據/快照);行為是當情況改變時系統做甚麼(規則/邏輯)。


3. 「輸入—處理—輸出」(IPO)模型

要設計任何運作良好的計算模型,電腦科學家都會運用「輸入—處理—輸出」(Input-Process-Output, IPO)架構:

1. 輸入(Input):進入系統的數據或訊號。
例子:溫度感應器、紅外線動作偵測器、使用者按下的按鈕,或在試算表中輸入的數字。

2. 處理(Process):決定如何處理輸入數據的規則和邏輯(計算抽象化)。
例子:檢查數值是否大於上限、計算總和,或運行計時器。

3. 輸出(Output):系統產生的結果、動作或實體反應。
例子:致動器(Actuator)驅動馬達打開閘門、綠燈亮起、暖氣開啟,或顯示預測利潤的圖表。

重點歸納:每個模型都遵循這個循環:接收輸入,經處理應用邏輯規則,最後以輸出呈現結果。


4. 模擬實體系統(Physical Systems)

實體系統是指真實世界中以硬件為基礎的系統。當我們在電腦科學中模擬實體系統時,我們會編寫邏輯規則,以控制機器與電子元件如何對周圍環境作出反應。

例子 1:英國交通燈系統

交通燈模型必須遵循嚴格的狀態轉換次序,以確保道路安全:

狀態 1:紅燈(車輛必須停下)
狀態 2:紅燈及黃燈(準備起步)
狀態 3:綠燈(安全情況下可以前行)
狀態 4:黃燈(在安全情況下停車)
循環重複,返回狀態 1(紅燈)。

行為規則:當某個狀態的計時結束時,依照既定次序轉換至下一個狀態。

例子 2:中央暖氣系統

中央暖氣系統依靠稱為恆溫器(Thermostat)的感應器來監測室溫。

輸入:恆溫器傳來的當前溫度(例如 \(16^\circ\text{C}\))。
目標閾值:理想室溫(例如 \(18^\circ\text{C}\))。
處理(行為規則):如果 \(\text{Current Temperature} < 18^\circ\text{C}\),則將暖氣切換為「開啟」(On);否則切換為「關閉」(Off)
輸出:熱水爐致動器切換開啟或關閉。

例子 3:自動保安閘門

輸入:紅外線(IR)感應器偵測到接近的車輛。
處理(行為規則):如果 \(\text{IR Sensor} = \text{Triggered}\),則向馬達發送訊號。
輸出:電動馬達運轉以升起閘桿。

重點歸納:實體系統利用感應器獲取輸入,並以致動器產生輸出,兩者由清晰的條件邏輯規則連結在一起。


5. 模擬現實世界問題:試算表與模擬(Simulations)

並非所有模型都涉及實體硬件。許多模型屬於概念性或數據驅動,協助我們理解現實世界的問題,例如財務管理或研究人口增長。

試算表財務模型

試算表(Spreadsheets)功能強大,常用於為企業或學校活動模擬預算、利潤與虧損。

1. 儲存格參照(Cell References):試算表使用由欄英文字母和列數字組成的網格座標(例如 A1B4C12)。務必使用儲存格參照而非直接輸入純數字,這樣你的模型才能自動更新!

2. 公式(Formulas):在試算表建模中,所有公式都必須以等號(\(=\))開頭。常用的函數包括:

• \(=\text{SUM}(\text{A1:A5})\) — 將儲存格 A1 至 A5 內的所有數字相加。
• \(=\text{AVERAGE}(\text{B1:B10})\) — 計算指定範圍內數值的平均值。
• \(=\text{MAX}(\text{C1:C20})\) — 找出指定範圍內的最大值。
• \(=\text{MIN}(\text{C1:C20})\) — 找出指定範圍內的最小值。
• \(=\text{IF}(\text{D2} > 50, \text{"Profit"}, \text{"Loss"})\) — 檢查條件,並根據結果為真(True)或假(False)輸出相應結果。

「假若」分析("What-If" Analysis,評估模型)

電腦模型最強大的功能之一就是「假若」分析("What-If" Analysis)。這代表透過改變一個或多個輸入值,觀察輸出會產生甚麼變化。

例子:「假若學校派對的門票價格由 \(\text{£3}\) 調高至 \(\text{£5}\),我們的總利潤會增加,還是參加的學生人數會減少?」

模擬(Simulations)

模擬是展示系統如何隨時間演變的模型:

交通流量模擬:測試增設迴旋處(環島)是否能減少塞車車龍,而無需實際開挖道路。
種群數量模型:根據食物供應和捕食者數量,預測動物種群的增長或減少。

重點歸納:試算表模型與模擬讓我們能運用公式及「假若」測試,安全且迅速地測試各種情境並作出預測。


6. 建模中的布爾邏輯(Boolean Logic)

電腦在模型中利用布爾邏輯(Boolean logic)作出決策。三個核心邏輯運算符(Logical Operators)為:

AND(且/與):兩個條件都必須為真。
例子:如果 \(\text{Temperature} < 18^\circ\text{C}\) AND \(\text{Timer} = \text{"Active"}\),則將暖氣設定為「開啟」(On)

OR(或):至少有一個條件為真。
例子:如果 \(\text{Keycard Swiped}\) OR \(\text{Emergency Button Pressed}\),則為大門解鎖。

NOT(非/反相):反轉條件(真變成假,假變成真)。
例子:如果 NOT \(\text{Obstacle Detected}\),則繼續向前移動。

重點歸納:布爾運算符(ANDORNOT)讓模型能夠處理複雜的現實決策。


7. 常見錯誤與應避免的陷阱

在處理計算模型時,請留意以下常見陷阱:

1. 過度複雜化模型:試圖讓模型「過於逼真」反而會適得其反。例如,若你在計算汽車在兩個城鎮之間的行駛時間,加入司機鞋子重量或微小風阻等因素只會讓模型變得極度複雜,卻無法顯著提升實用準確度!

2. 混淆「狀態」與「行為」:請記住,狀態是當前的數據值(例如:燈號為紅燈),而行為是引發變化的規則(例如:若過了 30 秒,則轉換顏色)。

3. 邏輯顛倒:編寫規則時要小心因果關係。
錯誤:「如果暖氣開啟,則氣溫寒冷。」(這混淆了因果關係!)
正確:「如果氣溫寒冷,則開啟暖氣。」

4. 在試算表中寫死數值(Hard-coding):切勿直接在公式中輸入固定數字(例如 \(= 10 + 20\))。請務必使用儲存格參照(例如 \(= \text{A1} + \text{B1}\))。如果把數值寫死,你的模型就無法進行「假若」分析了!


8. 快速總結與關鍵詞清單

在完成學習前,快速複習這份清單吧:

抽象化(Abstraction):移除不必要的細節,專注於重要特徵。
模型(Model):真實世界系統的簡化電腦呈現。
狀態(State):系統當前時刻的快照情況/數據。
行為(Behaviour):觸發狀態轉換的邏輯規則。
IPO:輸入(Input) \(\rightarrow\) 處理(Process) \(\rightarrow\) 輸出(Output)。
試算表工具:儲存格參照(例如 A1)、函數(\(\text{SUM}\)、\(\text{AVERAGE}\)、\(\text{MAX}\)、\(\text{MIN}\)、\(\text{IF}\))以及「假若」分析("What-if" analysis)。
邏輯運算符:ANDORNOT