111 專技高考高等考試 資訊技師 資料結構與資料庫及資料探勘 考古題詳解
第 一 題20 分
請解釋下列名詞之含意:(每小題 5 分,共 20 分)
(一)Balanced Tree
(二)Record(in database)
(三)Perfect hashing
(四)Entity-Relationship model
登入後即可作答並保存紀錄。
核心觀念
本題屬於「資訊技師」考試中「資料結構」與「資料庫系統」基礎核心名詞測驗,主要評量考生對經典電腦科學架構的定義精確度與深度理解:
- Balanced Tree(平衡樹):涉及二元搜尋樹(BST)之退化問題與高度控制,核心定理在於確保樹高維持在 ,避免時間複雜度退化至 。
- Record in database(資料庫記錄):涉及資料儲存階層(Data Hierarchy)與關聯式模型(Relational Model)之對應,核心在於描述單一實體個體的資料屬性集合。
- Perfect hashing(完全雜湊):涉及雜湊理論中的碰撞(Collision)控制與空間時間權衡,核心在於對靜態鍵值集合達到最差情況 的無碰撞映射。
- Entity-Relationship model(實體關聯模型):涉及概念資料塑模(Conceptual Data Modeling)理論,核心在於透過實體、屬性、關聯三大抽象元件對現實世界進行語意表達。
解題方法
針對「名詞解釋題」(每小題 5 分,共 20 分),答題結構必須具備閱卷委員期待的三大層次,切忌僅以口語化一句話帶過:
- 精確學術定義(2 分):定義其本質、提出者或數學性質。
- 內部結構與關鍵機制(2 分):說明核心限制、運作特性(如時間複雜度、構成要素、演算法策略)。
- 經典範例與實務應用(1 分):舉出最具代表性的演算法、資料結構或應用場景。
各名詞子題分析
- (一)Balanced Tree:考點在於「高度控制」與「動態調整機制」。若只回答「左右兩邊長得差不多」無法取得滿分,必須明確提及樹高 與節點數 的對數關係,以及常見的平衡方式(如旋轉操作)。
- (二)Record(in database):考點在於「資料階層概念」與「關聯式架構的對應」。應指出它在關聯模型中對應為 Tuple(元組)或 Row(列),並說明其由欄位(Field/Attribute)組成以代表單一實體實例。
- (三)Perfect hashing:考點在於「Collision-free(無碰撞)」及「最差情況時間複雜度保證為 」。進階分析需補充「最小完全雜湊(Minimal Perfect Hashing)」之差別,展現專業深度。
- (四)Entity-Relationship model:考點在於「概念資料模型層級」與「三大構成要素」。應指出其提出者(Peter Chen)與圖形符號表示法,並說明其在資料庫設計生命週期中的角色(轉換為關聯綱要)。
解題技巧
- 版面控制與給分點配置:每小題 5 分,建議書寫行數約 4~6 行,採「條列式(定義、特性、實例)」排版,讓閱卷委員一眼看見關鍵術語。
- 善用英文專有名詞輔助:在中文名詞後標註精確的英文術語(如 、Tuple、Collision-free、Entity/Attribute/Relationship),強化作答專業度。
- 避開常見陷阱:
- 誤將 Balanced Tree 僅視為 Complete Binary Tree(完全二元樹僅是其中一種結構,AVL 與紅黑樹允許一定程度的高度差)。
- 誤將 Perfect Hashing 視為動態萬用雜湊(Perfect Hashing 主要用於靜態集合,若資料動態異動維持成本極高)。
【答案】
(一)Balanced Tree(平衡樹)
- 定義:一種藉由特定演算法規則控制節點深度,使任意節點之左右子樹高度差維持在常數範圍內的樹狀搜尋結構。其設計目的在於防止二元搜尋樹因不當插入順序退化為線性串列(Skewed Tree)。
- 特性與機制:
第 二 題16 分
什麼是 Open Data?什麼是 Public Data?請說明此兩名詞的不同之處。
登入後即可作答並保存紀錄。
核心觀念
本題測驗考生對「現代資料治理(Data Governance)」與「數位政府/資料工程」基礎名詞的理解深度。主要涵蓋以下核心觀念與法規標準(以命題當年民國 111 年之標準與規範為準):
- 開放資料(Open Data)之定義:依據國際開放知識基金會(Open Knowledge Foundation, OKF)發布之《開放定義》(Open Definition),資料必須具備「技術性開放」(機器可讀、無專有格式限制)與「法律性開放」(允許任何人自由使用、再利用、重新散布,最多僅要求標示出處或以相同方式分享)。在國內實務上,則參照行政院發布之「政府資料開放作業原則」與「政府資料開放授權條款(OGDL)」。
- 公共資料(Public Data)之定義:指由政府機關或公共組織基於公權力、法定職責所產製、蒐集,並依法向公眾揭露之資料(如依《政府資訊公開法》主動公開或人民申請提供之資料)。其本質在於落實施政透明與民眾知的權利。
- 兩者之本質差異:包含「資料來源範疇」、「資料技術格式(機器可讀性)」、「授權許可與再利用權利」及「取得門檻/成本」。
解題方法
申論此題時,切入點不可僅停留在字面翻譯,必須採「定義拆解 核心要件檢驗 多維度矩陣比較 兩者交集關係」的標準論述架構:
- 分別界定名詞內涵:
- 闡明 Open Data 的技術條件(結構化、開放格式)與法律條件(開放授權)。
- 闡明 Public Data 的行政與法制基礎(資訊公開、行政透明、公共利益)。
- 架構化對比差異:從「來源主體」、「技術格式」、「法律授權與再利用權」、「取得成本與管道」、「政策目的」五大面向切入,並佐以比較表格,使閱卷委員一目了然。
- 點出邏輯集合關係:論述「開放政府資料(Open Government Data, OGD)是 Public Data 與 Open Data 的交集」,釐清「公開不等於開放」的關鍵盲點。
選項分析
本題為專技高考之申論題,非選擇題型。在評閱評分標準上,若考生答題僅寫出一般性字面翻譯,難以取得高分;閱卷要點主要檢視考生能否精準剖析以下面向:
- 未提及「開放授權(Open License)」:若僅回答「免費給大眾看」,缺乏著作權、再利用(Re-use)及商業改作的授權說明,將大幅失分。
- 未提及「機器可讀(Machine-readable)」:若未將 PDF、掃描圖檔等「人類可讀格式」與 CSV、JSON、XML 等「結構化機器可讀格式」進行區隔,無法展現資訊技師的技術專業。
- 誤認 Open Data 僅限於政府產製:漏掉企業、社群、科研組織亦可發布 Open Data(如 OpenStreetMap、開源社群資料集),定義不夠全面。
解題技巧
- 判斷竅門(黃金準則):
- Open Data 的關鍵字:結構化、機器可讀(Machine-readable)、開放授權(如 CC BY、OGDL)、允許商業改作、API 介接。
- Public Data 的關鍵字:政府產製、法定義務公開(如《政府資訊公開法》)、施政透明、人類可讀(Human-readable)、受著作權保護且限制改作。
- 常見陷阱:
- 誤以為「放在網路上公開供人瀏覽的政府資料」就是 Open Data。例如:政府將預算書以 PDF 掃描檔放在官網供民眾下載,這屬於 Public Data,但因不具備機器可讀性且未釋出開放再利用授權,絕非 Open Data。
- 記憶架構(文氏圖概念):
- Public Data 包含未開放格式的政府公開資訊;Open Data 包含民間發布的開源資料;
第 三 題20 分
請詳述(舉例說明)什麼叫做 Bubble Sort(請以虛擬碼 pseudo-code 表示),並對您的描述(pseudo-code)做效能分析(說明 Big-O 的分析過程)。
登入後即可作答並保存紀錄。
核心觀念
- 氣泡排序法(Bubble Sort)定義: 屬於比較排序法(Comparison Sort)中的交換排序類別。其基本運作原理為:由陣列前端開始,重複走訪欲排序的數列,依序檢視「相鄰的兩個元素」,若兩者順序與目標排序方向(如遞增)不符則予以對調(Swap)。每完成一輪(Pass)的比較與交換,未排序區間中的「極值」(最大值或最小值)就會如同水中氣泡浮出水面般,移動至數列的最終正確位置。
- 穩定性(Stability)與空間特性:
- 穩定排序(Stable Sort):當兩相鄰元素鍵值相等時,若演算法不對其進行交換,即可保證相同鍵值的元素在排序前後的相對順序維持不變。
- 原地排序(In-place Sort):僅需常數等級的輔助記憶體空間進行元素交換,額外空間複雜度為 。
- 效能分析數學基礎:
- 等差級數求和公式:
- 漸近符號(Big-O)定義:若存在正實數常數 與正整數 ,使得所有 ,演算法的基本運算次數 均成立,則稱 。
解題方法
本題為典型的申論題型,解題步驟劃分為三大部分:虛擬碼設計(含提早結束最佳化機制)、實例追蹤(Tracing)與漸近效能(Big-O)嚴謹推導。
一、虛擬碼表示(Pseudo-code)
考量國家考試評分標準,提供具備「旗標檢驗(Flag Optimization)」的氣泡排序虛擬碼,以完整體現最佳情況(Best Case)之效能:
Algorithm BubbleSort(A, n)
Input: 陣列 A(索引為 0 至 n - 1),長度 n >= 1
Output: 由小至大排序完成之陣列 A
for i = 0 to n - 2 do
swapped = false
// 第 i 回合:將未排序區間的最大值推至索引 n - 1 - i
for j = 0 to n - 2 - i do
if A[j] > A[j + 1] then
// 交換相鄰元素
temp = A[j]
A[j] = A[j + 1]
A[j + 1] = temp
swapped = true
end if
end for
// 若此回合完全未發生交換,代表數列已排序完畢,提早終止
if swapped == false then
break
end if
end for
return A
二、實例說明(舉例示範)
給定包含 5 個元素的未排序陣列 ,長度 ,欲進行遞增排序:
- 第 1 回合(Pass 0, ):內迴圈 從 到 (比較 次):
- :比較 與 。因 ,交換
- :比較 與 。因 ,交換
- :比較 與 。因 ,交換
- :比較 與 。因 ,不交換
-
結果:最大值 已定位至末端 ;有發生交換,
swapped = true,繼續下一回合。 -
第 2 回合(Pass 1, ):內迴圈 從 到 (比較 次):
- :比較 與 。不交換
- :比較 與 。因 ,交換
- :比較 與 。不交換
-
結果:次大值 已定位至 ;有發生交換,繼續下一回合。
-
第 3 回合(Pass 2, ):內迴圈 從 到 (比較 次):
- :比較 與 。不交換
- :比較 與 。不交換
- 結果:此回合未發生任何交換(
swapped == false),觸發提早跳出機制(break)。 - 最終排序結果:。
三、效能分析(Big-O 推導過程)
以元素比較次數(Comparisons)與交換次數(Swaps)作為主要計量指標:
第 四 題20 分
某工廠有以下的兩個表(Table):(每小題 5 分,共 20 分)
Table 1:Part_needs
| Supplier | Part_number | Project |
|---|---|---|
| 23 | 1092 | 1 |
| 23 | 1101 | 3 |
| 23 | 9048 | 4 |
| 31 | 4975 | 3 |
| 31 | 3477 | 2 |
| 32 | 6984 | 4 |
| 32 | 9191 | 2 |
| 33 | 1001 | 1 |
Table 2:Parts_inventory
| Part_number | Project | Quantity | Color_code |
|---|---|---|---|
| 1001 | 1 | 14 | 8 |
| 1092 | 1 | 2 | 2 |
| 1101 | 3 | 1 | 1 |
| 3477 | 2 | 25 | 2 |
| 4975 | 3 | 6 | 2 |
| 6984 | 4 | 10 | 1 |
| 9048 | 4 | 12 | 2 |
| 9191 | 2 | 80 | 4 |
某工廠員工寫了兩個 SQL 語法,如下:
SQL 語法一:
SELECT Supplier
FROM Part_needs
WHERE
SQL 語法二:
SELECT Supplier
FROM Part_needs, Parts_inventory
WHERE Quantity
(一)請問 SQL 語法一進行何種的操作(operations)?
(二)請問 SQL 語法二進行何種的操作(operations)?
(三)假使我們採用 Table 1 當作語法一的輸入資料,請問會輸出什麼?
(四)假使我們採用 Table 1 和 Table 2 當作語法二的輸入資料,請問會輸出什麼?
登入後即可作答並保存紀錄。
核心觀念
本題考查關聯式資料庫的三種操作:
- 選擇(selection):依條件篩選資料列,記為 。
- 投影(projection):取出指定欄位,記為 。
- 笛卡兒積(Cartesian product):將兩個表的每一列互相配對,記為 。
SQL 的 SELECT 指定輸出欄位,WHERE 設定篩選條件;FROM 同時列出兩個表、卻沒有連接條件時,會形成笛卡兒積。一般 SQL 查詢會保留重複列,除非明確使用 DISTINCT。
解題方法
(一)SQL 語法一
依 WHERE 條件篩選 Part_number 落在 至 的列,再只輸出 Supplier:
因此包含選擇與投影操作。
(二)SQL 語法二
FROM Part_needs, Parts_inventory 列出兩個表,但沒有指定兩表間的連接條件,因此先形成笛卡兒積;接著以 Quantity ≤ 10 篩選,再輸出 Supplier:
因此包含笛卡兒積、選擇與投影操作。
(三)以 Table 1 執行語法一
符合 的零件編號依序為:
第 五 題24 分
假設某一家店中有以下的六次交易(transactions):(每小題 8 分,共 24 分)
(一)請問產品 diapers 的 support 值為多少?
(二)假設我們設定 support threshold 為 ,請找出所有的 frequent itemsets。
也就是說, 這六樣產品的集合,有那些子集合在 A–F 的六個交易中,被採購的機率超過 。
(三)假設我們有一個關聯規則(association rule):,請求出 support 值和 confidence 值。
登入後即可作答並保存紀錄。
核心觀念
本題出自資料探勘(Data Mining)領域之**關聯規則探勘(Association Rule Mining)**與 Apriori 演算法,為資訊技師與高考資訊類科歷年極高頻率之基本計算題型。解題所依據之核心定義與公式如下:
- 交易資料庫(Transaction Database): 設全體交易集合為 ,交易總筆數為 。本題中 (交易 至 )。
- 支援度計數(Support Count / Frequency): 項目集(Itemset) 在交易資料庫中出現的交易次數,記為 或 。
- 支援度(Support): 項目集 在全體交易中出現的機率/比例:
- 頻繁項目集(Frequent Itemsets): 若項目集 的支援度大於或等於預設之最低支援度門檻值(Minimum Support Threshold, ),即 ,則稱 為頻繁項目集。
- Apriori 特性(向下封閉性,Downward-Closure Property):頻繁項目集的所有非空子集(Subsets)亦必須為頻繁項目集;反之,若某項目集為非頻繁(Infrequent),則其所有超集(Supersets)必為非頻繁,可直接剪枝(Prune)。
- 關聯規則之支援度與信賴度(Support & Confidence): 對於關聯規則 (其中 ):
- 支援度(Support):包含前項與後項聯集 的交易比例:
- 信賴度(Confidence):在購買 的條件下,同時購買 的條件機率:
解題方法
資料庫基礎統計
全體項目宇集為 ,交易總筆數 。各交易內容如下:
(一)求產品 的 support 值
- 計算支援度計數 : 檢驗包含 的交易:
- :包含
- :包含
- :包含
- :無
- :包含
- :包含
因此, 次(共出現在 )。
- 計算支援度:
(二)設定 support threshold 為 ,找出所有的 frequent itemsets
門檻值 ,代表支援度計數門檻值為: 因為交易次數必須為整數,故項目集出現的交易次數必須大於等於 次(;若為 次則 )。
採用 Apriori 演算法 逐層推導:
- 候選 1-項目集(Candidate 1-itemsets, )頻率統計:
- :出現在 (未達標,剪枝)
- :出現在 (,保留)
- :出現在 (,保留)
- :出現在 (未達標,剪枝)
- :出現在 (未達標,剪枝)
- :出現在 (未達標,剪枝)
頻繁 1-項目集():