計算抽象化:模擬現實系統的狀態與行為
歡迎來到計算抽象化與模型建立(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):試算表使用由欄英文字母和列數字組成的網格座標(例如 A1、B4、C12)。務必使用儲存格參照而非直接輸入純數字,這樣你的模型才能自動更新!
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}\),則繼續向前移動。
重點歸納:布爾運算符(AND、OR、NOT)讓模型能夠處理複雜的現實決策。
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)。
• 邏輯運算符:AND、OR 及 NOT。