112 專技高考高等考試 資訊技師 資料結構與資料庫及資料探勘 考古題詳解
第 一 題20 分
假設算術運算元(Operator)的優先次序(Precedence)與結合性(Associativity)如下:
| Precedence | Operator | Associativity |
|---|---|---|
| 1 | Left-to-Right | |
| 2 | Right-to-Left | |
| 3 | 、 | Left-to-Right |
| 4 | 、 | Left-to-Right |
給定中序(Infix)運算式:
(一)寫出它的後序(Postfix)運算式。(10 分)
(二)寫出它的前序(Prefix)運算式。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查中序式轉換為後序式(Postfix)與前序式(Prefix),關鍵是依運算子的優先次序決定運算結構,再依結合性處理同一優先層級的運算子。
優先次序由高至低為:
其中 為右結合,因此 解析為 ;其他二元運算子皆為左結合。
解題方法
先依優先次序與括號,將原式分層:
括號內先算 ;乘除優先於加減; 優先於乘法,且連續的 由右向左結合。因此整體結構為:
(一)後序式
後序式的規則是:先列出左運算元,再列出右運算元,最後列出運算子。
各子式依序轉換:
- :
6 z * - :
y 6 z * / - :
x y 6 z * / - - :
q r ^ - :
p q r ^ ^ - :
8 p q r ^ ^ *
最後將兩個加法運算元合併:
第 二 題20 分
將底下的權重無向圖(Weighted Undirected Graph)用 Kruskal 演算法建立其最小生成樹(Minimum Spanning Tree, MST)。
🖼️【此處有附圖,請對照原卷】
圖中各邊及其權重如下:
- :
- :
- :
- :
- :
- :
- :
- :
- :
- :
- :
(一)請逐步畫出 MST 建立的過程。(12 分)
(二)以遞增方式列出 MST 各邊(Edge)的權重並計算出權重總和。(8 分)
登入後即可作答並保存紀錄。
核心觀念
Kruskal 演算法依邊的權重由小到大檢查,每次選取一條不會形成環的邊;若加入後會形成環,就略過。直到選出 條邊為止,即得到最小生成樹。
本圖有 個頂點,因此 MST 必須包含 條邊。
解題方法與逐步過程
先將所有邊依權重遞增排列,再依序判斷是否形成環:
| 順序 | 邊 | 權重 | 判斷 |
|---|---|---|---|
| 1 | 2 | 選取 | |
| 2 | 5 | 選取 | |
| 3 | 6 | 選取 | |
| 4 | 7 | 選取;連接目前分離的兩個連通分量 | |
| 5 | 10 | 選取;將 接入目前的連通分量 | |
| 6 | 14 | 略過; 與 已可經由已選邊連通,加入會形成環 | |
| 7 | 15 | 略過; |
第 三 題20 分
底下是某關聯式資料庫的三個表格結構(Table Schema)。
Table 1:Employees(員工)
- EmployeeID
- LastName
- FirstName
- BirthDate
Table 2:Orders(訂單)
- OrderID
- CustomerID
- EmployeeID
- OrderDate
- ShipperID
Table 3:Shippers(託運商)
- ShipperID
- ShipperName
- Phone
(一)用 SQL 的 LEFT JOIN 語法列出每筆訂單的 OrderID 和處理訂單的員工 FirstName,輸出結果以員工的 FirstName 遞增排序列出。(10 分)
(二)用 SQL 的 RIGHT JOIN 語法列出每筆訂單的 OrderID 和託運商的 ShipperName,輸出結果以 ShipperName 遞減排序列出。(10 分)
註:SQL 的欄位名稱前需附加表格名稱。不可使用欄位或表格的別名(Alias)。
登入後即可作答並保存紀錄。
核心觀念
本題考查 SQL 外部連接(Outer Join)及排序:
LEFT JOIN保留左表的所有資料列;右表找不到符合的資料時,右表欄位為NULL。RIGHT JOIN保留右表的所有資料列;左表找不到符合的資料時,左表欄位為NULL。ON子句指定兩表的連接條件;ORDER BY指定結果排序。ASC為遞增,DESC為遞減。- 題目要求欄位名稱前附表格名稱,且禁止使用別名,因此欄位須寫成
Employees.FirstName等完整形式。
解題方法
先依題目指定的 JOIN 類型,從兩表中選出需要的欄位,再以共同鍵值建立連接條件。Orders.EmployeeID 對應 Employees.EmployeeID;Orders.ShipperID 對應 Shippers.ShipperID。最後依指定欄位排序。
(一)列出訂單編號及員工名字
以 Orders 為左表、Employees 為右表,透過員工編號連接。由於使用 LEFT JOIN,每筆 Orders 訂單都會保留;若訂單沒有對應員工,Employees.FirstName 為 NULL。
SELECT Orders.OrderID, Employees.FirstName
FROM Orders
LEFT JOIN Employees
ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Employees.FirstName ASC;
(二)列出訂單編號及託運商名稱
第 四 題20 分
分散式資料庫在設計上大致可採取資料複製(Data Replication)策略或資料片段化(Data Fragmentation)策略,在大多數情況下,會結合使用這兩者。請敘述這兩種策略。
登入後即可作答並保存紀錄。
核心觀念
分散式資料庫會把資料配置在不同地點的多個節點上。設計時要決定資料如何分布,常用的兩種策略是資料複製(Data Replication)與資料片段化(Data Fragmentation);實務上通常會搭配使用。
- 資料複製:同一份資料在多個節點保存副本。
- 資料片段化:將資料切分成多個片段,分別配置到不同節點;各片段合起來仍可重建原資料。
解題方法
作答時分別說明兩種策略的資料配置方式、主要優點與代價,再補充兩者如何結合。
一、資料複製(Data Replication)
資料複製是把資料的副本儲存在兩個以上的節點。複製可分為:
- 完全複製:每個節點都保存整個資料庫。
- 部分複製:只將特定資料或片段複製到部分節點。
優點:
- 提高可用性與可靠度:某節點故障時,其他節點仍可能提供資料。
- 改善讀取效能:使用者可就近讀取副本,減少遠端存取與網路傳輸。
- 支援負載分散:多個節點可分擔讀取需求。
代價與設計課題:
- 增加儲存空間需求:副本愈多,占用的儲存空間愈大。
- 維持副本一致性:資料更新後,需將變更傳播至相關副本;若更新未同步完成,讀取結果可能不一致。
- 增加更新成本:涉及多個副本的寫入作業,需要處理更新順序、同步或交易一致性。
因此,資料複製的核心取捨是:以額外的儲存與更新管理成本,換取較高的讀取效率及可用性。
二、資料片段化(Data Fragmentation)
資料片段化是將關係或資料集合分割成較小的片段,再把各片段配置到不同節點。常見方式如下:
- 水平片段化(Horizontal Fragmentation) 依資料列條件切分,同一關係的各片段具有相同屬性,但包含不同資料列。例如,依地區將客戶資料分成北區與南區片段。各片段可透過聯集重建原關係:
第 五 題20 分
請寫出群集分析(Cluster Analysis)的 K-means 演算法。
假設輸入有:
:有 個樣本(Sample)的資料集。
:欲得到的群集(Cluster)數量。
登入後即可作答並保存紀錄。
核心觀念
K-means 是一種以距離為基礎的分割式群集分析方法。給定 個樣本及群集數 ,演算法將樣本分成 群,並以各群的質心代表該群。質心是群內樣本各維度的算術平均。
演算法的目標是最小化群內平方誤差(within-cluster sum of squared errors,SSE):
其中 是第 群, 是該群質心。K-means 透過反覆執行「分派樣本」與「更新質心」來降低 SSE,直到分群結果收斂。
解題方法
依題目給定的資料集 與群集數 ,演算法步驟如下:
- 初始化質心:從 中選取 個樣本作為初始質心 。
- 分派樣本:計算每個樣本 與各質心的距離,將 分派到距離最近的質心所屬群集:
- 更新質心:對每個群集,重新計算其樣本平均: