112 專技高考高等考試 資訊技師 資料結構與資料庫及資料探勘 考古題詳解

112 年・專技高考・高等考試・資訊技師
試題代碼 資料結構與資料庫及資料探勘

第 一 題20 分

假設算術運算元(Operator)的優先次序(Precedence)與結合性(Associativity)如下:

PrecedenceOperatorAssociativity
1( )(\ )Left-to-Right
2^\hat{}Right-to-Left
3∗*、//Left-to-Right
4++、−-Left-to-Right

給定中序(Infix)運算式:

x−y/(6∗z)+8∗p^q^rx-y/(6*z)+8*p\hat{}q\hat{}r

(一)寫出它的後序(Postfix)運算式。(10 分)

(二)寫出它的前序(Prefix)運算式。(10 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查中序式轉換為後序式(Postfix)與前序式(Prefix),關鍵是依運算子的優先次序決定運算結構,再依結合性處理同一優先層級的運算子。

優先次序由高至低為:

( )  >  ^  >  ∗、/  >  +、−(\ ) \;>\; \hat{} \;>\; *、/ \;>\; +、-

其中 ^\hat{} 為右結合,因此 p^q^rp\hat{}q\hat{}r 解析為 p^(q^r)p\hat{}(q\hat{}r);其他二元運算子皆為左結合。

解題方法

先依優先次序與括號,將原式分層:

x−y/(6∗z)+8∗p^q^rx-y/(6*z)+8*p\hat{}q\hat{}r

括號內先算 6∗z6*z;乘除優先於加減;^\hat{} 優先於乘法,且連續的 ^\hat{} 由右向左結合。因此整體結構為:

(x−y6∗z)+(8∗(p^(q^r)))\bigl(x-\frac{y}{6*z}\bigr)+\bigl(8*(p\hat{}(q\hat{}r))\bigr)

(一)後序式

後序式的規則是:先列出左運算元,再列出右運算元,最後列出運算子。

各子式依序轉換:

  • (6∗z)(6*z):6 z *
  • y/(6∗z)y/(6*z):y 6 z * /
  • x−y/(6∗z)x-y/(6*z):x y 6 z * / -
  • (q^r)(q\hat{}r):q r ^
  • p^(q^r)p\hat{}(q\hat{}r):p q r ^ ^
  • 8∗(p^(q^r))8*(p\hat{}(q\hat{}r)):8 p q r ^ ^ *

最後將兩個加法運算元合併:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題20 分

將底下的權重無向圖(Weighted Undirected Graph)用 Kruskal 演算法建立其最小生成樹(Minimum Spanning Tree, MST)。

🖼️【此處有附圖,請對照原卷】

圖中各邊及其權重如下:

  • A−BA-B:66
  • B−CB-C:22
  • A−EA-E:2222
  • B−EB-E:3636
  • B−DB-D:1515
  • C−DC-D:2626
  • D−FD-F:1414
  • D−GD-G:1010
  • C−GC-G:77
  • E−FE-F:2323
  • F−GF-G:55

(一)請逐步畫出 MST 建立的過程。(12 分)

(二)以遞增方式列出 MST 各邊(Edge)的權重並計算出權重總和。(8 分)

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

Kruskal 演算法依邊的權重由小到大檢查,每次選取一條不會形成環的邊;若加入後會形成環,就略過。直到選出 ∣V∣−1|V|-1 條邊為止,即得到最小生成樹。

本圖有 77 個頂點,因此 MST 必須包含 7−1=67-1=6 條邊。

解題方法與逐步過程

先將所有邊依權重遞增排列,再依序判斷是否形成環:

順序邊權重判斷
1B−CB-C2選取
2F−GF-G5選取
3A−BA-B6選取
4C−GC-G7選取;連接目前分離的兩個連通分量
5D−GD-G10選取;將 DD 接入目前的連通分量
6D−FD-F14略過;DD 與 FF 已可經由已選邊連通,加入會形成環
7B−DB-D15略過;
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題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;

(二)列出訂單編號及託運商名稱

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題20 分

分散式資料庫在設計上大致可採取資料複製(Data Replication)策略或資料片段化(Data Fragmentation)策略,在大多數情況下,會結合使用這兩者。請敘述這兩種策略。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

分散式資料庫會把資料配置在不同地點的多個節點上。設計時要決定資料如何分布,常用的兩種策略是資料複製(Data Replication)與資料片段化(Data Fragmentation);實務上通常會搭配使用。

  • 資料複製:同一份資料在多個節點保存副本。
  • 資料片段化:將資料切分成多個片段,分別配置到不同節點;各片段合起來仍可重建原資料。

解題方法

作答時分別說明兩種策略的資料配置方式、主要優點與代價,再補充兩者如何結合。

一、資料複製(Data Replication)

資料複製是把資料的副本儲存在兩個以上的節點。複製可分為:

  • 完全複製:每個節點都保存整個資料庫。
  • 部分複製:只將特定資料或片段複製到部分節點。

優點:

  1. 提高可用性與可靠度:某節點故障時,其他節點仍可能提供資料。
  2. 改善讀取效能:使用者可就近讀取副本,減少遠端存取與網路傳輸。
  3. 支援負載分散:多個節點可分擔讀取需求。

代價與設計課題:

  1. 增加儲存空間需求:副本愈多,占用的儲存空間愈大。
  2. 維持副本一致性:資料更新後,需將變更傳播至相關副本;若更新未同步完成,讀取結果可能不一致。
  3. 增加更新成本:涉及多個副本的寫入作業,需要處理更新順序、同步或交易一致性。

因此,資料複製的核心取捨是:以額外的儲存與更新管理成本,換取較高的讀取效率及可用性。

二、資料片段化(Data Fragmentation)

資料片段化是將關係或資料集合分割成較小的片段,再把各片段配置到不同節點。常見方式如下:

  1. 水平片段化(Horizontal Fragmentation) 依資料列條件切分,同一關係的各片段具有相同屬性,但包含不同資料列。例如,依地區將客戶資料分成北區與南區片段。各片段可透過聯集重建原關係: R=R1∪R2∪⋯∪RnR = R_1 \cup R_2 \cup \cdots \cup R_n
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 五 題20 分

請寫出群集分析(Cluster Analysis)的 K-means 演算法。

假設輸入有:

DD:有 nn 個樣本(Sample)的資料集。

KK:欲得到的群集(Cluster)數量。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

K-means 是一種以距離為基礎的分割式群集分析方法。給定 nn 個樣本及群集數 KK,演算法將樣本分成 KK 群,並以各群的質心代表該群。質心是群內樣本各維度的算術平均。

演算法的目標是最小化群內平方誤差(within-cluster sum of squared errors,SSE):

SSE⁡=∑j=1K∑xi∈Cj∥xi−μj∥2\operatorname{SSE} =\sum_{j=1}^{K}\sum_{x_i\in C_j} \left\|x_i-\mu_j\right\|^2

其中 CjC_j 是第 jj 群,μj\mu_j 是該群質心。K-means 透過反覆執行「分派樣本」與「更新質心」來降低 SSE,直到分群結果收斂。

解題方法

依題目給定的資料集 DD 與群集數 KK,演算法步驟如下:

  1. 初始化質心:從 DD 中選取 KK 個樣本作為初始質心 μ1,…,μK\mu_1,\ldots,\mu_K。
  2. 分派樣本:計算每個樣本 xix_i 與各質心的距離,將 xix_i 分派到距離最近的質心所屬群集:
xi∈Cj若j=arg⁡min⁡1≤r≤K∥xi−μr∥2x_i\in C_j \quad\text{若}\quad j=\arg\min_{1\leq r\leq K}\|x_i-\mu_r\|^2
  1. 更新質心:對每個群集,重新計算其樣本平均:
μj=1∣Cj∣∑xi∈Cjxi\mu_j=\frac{1}{|C_j|}\sum_{x_i\in C_j}x_i
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

資訊技師《資料結構與資料庫及資料探勘》其他年度