114 高普考高考三級 統計 資料處理 考古題詳解

114 年・高普考・高考三級・統計
試題代碼 資料處理

第 一 題40 分

設有一校務資料表格,含有以下屬性:

學號、學生姓名、學生住址、學生電話、聯絡人姓名、聯絡人電話、聯絡人地址、指導老師證號、指導老師姓名、研究室、課程編號、課程名稱、學分、成績、實驗室名稱、實驗室地點。

且一位學生可能有多支電話號碼。

該校務資料表格,屬性間之功能相依性如下:

  • 學號 →\rightarrow 學生姓名、學生住址、聯絡人姓名、聯絡人電話、指導老師證號。
  • 課程編號 →\rightarrow 課程名稱、學分。
  • 指導老師證號 →\rightarrow 指導老師姓名、研究室。
  • 聯絡人姓名、聯絡人電話 →\rightarrow 聯絡人地址。
  • 實驗室名稱 →\rightarrow 實驗室地點、指導老師證號。
  • 指導老師證號 →\rightarrow 實驗室名稱。
  • 學號、課程編號 →\rightarrow 成績。

每小題 10 分,共 40 分。

(一) 請以功能相依之特性,推導出該校務資料表格之 primary key。

(二) 請修改該校務資料表格,使其能符合第二正規化之要求。

(三) 請修改該校務資料表格,使其能符合第三正規化之要求。

(四) 請依(三)小題所產生的所有表格,撰寫一 SQL 程式碼片段,列印出每一位學生之學號、姓名、共修多少門課,以及其指導老師之姓名。

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

這一題的完整詳解

核心觀念

本題考查功能相依、候選鍵、第二正規化(2NF)與第三正規化(3NF),以及以正規化後的資料表進行 SQL 查詢。

  • 若 X→YX\rightarrow Y,表示任兩筆資料只要 XX 相同,YY 就必須相同。
  • 超級鍵是能決定資料表全部屬性的屬性組合;候選鍵是最小超級鍵;選定的候選鍵即為主鍵。
  • 2NF 要求每個非主屬性完全相依於整個候選鍵,不得只相依於複合鍵的一部分。
  • 3NF 要求每個非主屬性不得透過非鍵屬性間接相依於候選鍵。正式判準為:對每個非平凡功能相依 X→AX\rightarrow A,XX 是超級鍵,或 AA 是主屬性。

本題有多值電話:一位學生可有多支學生電話,因此每筆「學生修課」資料還須以學生電話區分。依題目給定的相依性,學生電話不由學號決定。

(一)推導主鍵

先求能決定所有屬性的最小屬性組合。

學號不能省略,因為其他資料並不能決定學生姓名、住址等學生資料;課程編號也不能省略,因為成績由學號與課程編號共同決定。學生電話同樣不能省略,因為同一學生可有多支電話,而題目沒有給定能由其他屬性決定學生電話的功能相依。

令

K={學號、學生電話、課程編號}.K=\{\text{學號、學生電話、課程編號}\}.

計算 KK 的閉包:

  1. 學號決定學生姓名、學生住址、聯絡人姓名、聯絡人電話、指導老師證號。
  2. 指導老師證號決定指導老師姓名、研究室、實驗室名稱。
  3. 實驗室名稱決定實驗室地點及指導老師證號。
  4. 課程編號決定課程名稱、學分。
  5. 學號與課程編號決定成績。
  6. 聯絡人姓名與聯絡人電話決定聯絡人地址。
  7. 學生電話已在 KK 中。

因此 K+K^+ 涵蓋題目所列全部屬性,KK 是超級鍵。上述三個屬性各自都不能省略,故 KK 是候選鍵,並選作主鍵。

(二)分解為符合 2NF 的資料表

候選鍵是複合鍵「學號、學生電話、課程編號」。其中:

  • 學生資料及指導老師資料由學號決定。
  • 課程名稱及學分由課程編號決定。
  • 成績由學號與課程編號共同決定;學生電話不影響成績。

因此將只相依於候選鍵一部分的屬性移出,保留完整相依於複合鍵的資料。可分解為:

  1. 學生電話(學號、學生電話)
  2. 學生資料(學號、學生姓名、學生住址、聯絡人姓名、聯絡人電話、聯絡人地址、指導老師證號、指導老師姓名、研究室、實驗室名稱、實驗室地點)
  3. 課程(課程編號、課程名稱、學分)
  4. 修課成績(學號、課程編號、成績)

粗體屬性為主鍵;「學生電話」表以學號與學生電話組成複合主鍵,「修課成績」表以學號與課程編號組成複合主鍵。

此分解消除了部分相依:學生電話只依賴學號,課程資訊只依賴課程編號;成績則依賴學號與課程編號的組合,符合 2NF。

(三)分解為符合 3NF 的資料表

再檢查 2NF 的「學生資料」表,其中有以下傳遞相依:

🔒

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

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

免費註冊

第 二 題20 分

編譯器(compiler)將二維陣列資料映射到線性記憶體空間,一般採 Row-major 或 Column-major 兩種不同儲存順序。

(一) 何謂 Row-major 儲存順序與 Column-major 儲存順序?(8 分)

(二) 試問程式碼應如何撰寫,對整個巨大型二維陣列之資料讀取,才能獲得較高的讀取時間效率?(6 分)並請給予一程式片段範例做說明。(6 分)

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

這一題的完整詳解

核心觀念

二維陣列在程式中有「列」與「欄」兩個維度,但記憶體是一段連續的一維空間。儲存順序決定陣列元素如何依序映射到這段空間:

  • Row-major(列主序):同一列的元素連續儲存;先存完第 1 列,再存第 2 列,依此類推。C、C++ 等語言常採此順序。
  • Column-major(欄主序):同一欄的元素連續儲存;先存完第 1 欄,再存第 2 欄,依此類推。Fortran、MATLAB 等常採此順序。

若陣列有 mm 列、nn 欄,元素以 A[i][j]A[i][j] 表示,且索引從 00 開始:

  • Row-major 中,A[i][j]A[i][j] 相對於陣列起點的元素位移為 in+ji n+j。
  • Column-major 中,位移為 jm+ij m+i。

解題方法

讀取整個大型二維陣列時,應依照實際儲存順序,讓程式沿著連續記憶體位置逐一讀取。如此能充分利用快取(cache)載入相鄰資料的特性,減少快取未命中,提升讀取效率。

因此:

  • Row-major 陣列:外層迴圈走列索引 ii,內層迴圈走欄索引 jj,使欄索引變化最快。
  • Column-major 陣列:外層迴圈走欄索引 jj,內層迴圈走列索引 ii,使列索引變化最快。

程式範例

以下以 C 語言的 Row-major 陣列為例:

🔒

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

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

免費註冊

第 三 題20 分

BOM 表為一棵樹的結構,描述一產品 P 的製作過程,其每一節點 N 描述 P 之某一零組件 C 的製程;而其所連結之子樹,描述組合該零組件 C 所需的所有零組件之製程。

如圖範例所示,零組件 C0C_0 是由零組件 C11C_{11}、C12C_{12} 及 C13C_{13} 所組合製作而成;零組件 C12C_{12} 是由零組件 C21C_{21} 及 C22C_{22} 所組合製作而成。而零組件 C21C_{21} 及 C22C_{22} 何者先製作完成是無所謂;同樣地,零組件 C11C_{11}、C12C_{12} 及 C13C_{13} 何者先製作完成也是無所謂。但在製作過程中,需先製作完成零組件 C21C_{21} 及 C22C_{22} 後,才能製作零組件 C12C_{12};且需先製作完成零組件 C11C_{11}、C12C_{12} 及 C13C_{13} 後,才能製作零組件 C0C_0。

圖 BOM 之範例:

C0/∣\C11C12C13/\C21C22\begin{array}{c} C_0\\ \quad / \quad | \quad \backslash\\ C_{11}\quad C_{12}\quad C_{13}\\ \qquad\quad / \quad \backslash\\ \qquad C_{21}\quad C_{22} \end{array}

每小題 10 分,共 20 分。

(一) 試寫一最快速演算法,列印出某一 BOM 表所對應之產品 P 之零組件製程的製作順序。列印之順序為需先被生產之零組件的製程,需先被列印出來。例如對範例圖所示,零組件 C11C_{11}、C12C_{12} 及 C13C_{13},皆需比零組件 C0C_0 早被列印出來;而零組件 C21C_{21} 及 C22C_{22},皆需比零組件 C12C_{12} 早被列印出來。

(二) 若每一節點 N,都有紀錄欲生產一件產品 P 時,所需該節點之零組件的製程時間 TcT_c。且假設有充足機器及原物料,可供其隨時生產該節點之零組件;即可忽略等待機器及原物料的準備時間。請寫一最快速演算法,以計算當欲生產完一件產品 P 之最快生產時間。

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

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

這一題的完整詳解

核心觀念

本題考查:

  • 樹狀 BOM 的父子相依關係。
  • 拓撲排序(Topological Sort):所有前置零組件完成後,才能處理其父零組件。
  • 後序走訪(Postorder Traversal):先處理子節點,再處理父節點。
  • 在機器與原物料充足時,不同子樹可同時製作,因此總時間由最長的關鍵路徑決定。

設 BOM 樹共有 nn 個節點。樹的邊數為 n−1n-1,因此線性演算法的時間複雜度為 O(n)O(n)。


(一)列印零組件製程順序

解題方法

由於父節點的製程必須等待所有子節點完成,因此列印順序必須滿足:

所有子節點先列印⟶再列印父節點\text{所有子節點先列印} \quad \longrightarrow \quad \text{再列印父節點}

直接對 BOM 樹進行後序走訪即可。

演算法

Postorder(N):
 for each child C of N:
 Postorder(C)
 print(N)

對根節點 C0C_0 呼叫:

Postorder(C0)

範例結果

以題目中的 BOM 為例,合法列印順序可為:

C21, C22, C11, C13, C12, C0C_{21},\ C_{22},\ C_{11},\ C_{13},\ C_{12},\ C_0

其中:

  • C21C_{21}、C22C_{22} 均先於 C12C_{12}。
  • C11C_{11}、C12C_{12}、C13C_{13} 均先於 C0C_0。
  • 同一層中彼此沒有相依關係的節點,其先後順序不限。

因此,C11C_{11}、C13C_{13}、C21C_{21}、C22C_{22} 的相對順序可以依資料結構中的排列順序決定。

複雜度

每個節點拜訪一次,每條樹邊檢查一次,因此:

時間複雜度=O(n)\text{時間複雜度}=O(n)

遞迴堆疊及樹的儲存空間為:

O(n)O(n)

解題技巧

判斷是否應採用後序走訪的關鍵是:

子零組件必須先完成,父零組件才能製作。

因此是「子節點先、父節點後」,不可使用前序走訪,因為前序走訪會先列印父節點。


(二)計算產品 PP 的最快生產時間

核心觀念

因為機器及原物料充足,同一節點的各個子零組件可以同時製作,所以父節點必須等待「最晚完成」的子零組件。

設:

  • Tc(N)T_c(N):節點 NN 本身的製程時間。
  • F(N)F(N):從開始製作節點 NN 的零組件,到完成該零組件所需的最短時間。
  • Children(N)Children(N):節點 NN 的所有子節點。

若 NN 為葉節點,沒有前置零組件,則:

F(N)=Tc(N)F(N)=T_c(N)

若 NN 有子節點,必須等所有子節點完成,因此:

F(N)=max⁡C∈Children(N)F(C)+Tc(N)F(N) = \max_{C\in Children(N)}F(C)+T_c(N)
🔒

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

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

免費註冊

第 四 題20 分

IEEE 802.11 無線網路協定的 MPDU(MAC Protocol Data Unit)訊框格式之訊框標頭(Header)的訊框控制(Frame Control),包含有 11 項目資訊。試問此 11 項目資訊,分別被用以描述什麼?(20 分)

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

這一題的完整詳解

核心觀念

IEEE 802.11 的 MPDU 訊框標頭包含 **Frame Control(訊框控制)**欄位。它長 2 位元組,分成 11 個子欄位,用來標示訊框類型、傳送狀態、加密與排序等控制資訊。回答時要依序說明各子欄位的用途。

解題方法

按照 Frame Control 欄位的標準排列,逐項列出名稱與功能。前兩項 Protocol Version 與 Type 用來辨識協定版本及訊框類別;其餘欄位則描述子類型、傳送方向、分段、重傳、電源管理、安全性及資料排序等狀態。

11 項目資訊及用途

  1. Protocol Version(協定版本):指出所使用的 IEEE 802.11 協定版本;接收端可據此辨識訊框格式。
  2. Type(類型):指出訊框屬於管理(Management)、控制(Control)或資料(Data)訊框。
  3. Subtype(子類型):進一步指出該類型訊框的具體用途,例如 Beacon、Probe Request、ACK 或一般資料訊框。
  4. To DS(傳送至分散式系統):指出訊框是否送往 Distribution System(DS)。
  5. From DS(來自分散式系統):指出訊框是否由 DS 傳出。To DS 與 From DS 的組合也用於判斷位址欄位及訊框傳送方向。
  6. More Fragments(尚有分段):表示目前訊框是否仍有同一 MSDU 的後續分段;若設為 1,表示後面還有分段。
  7. Retry(重傳):表示此訊框是先前訊框的重傳版本,接收端可用來辨識重複訊框。
🔒

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

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

免費註冊

其他考古題