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

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

第 一 題20 分

請將數列 [8、70、19、3、50、25、30、10][8、70、19、3、50、25、30、10] 以合併排序法(Merge Sort)由小到大排序,並繪出排序過程。

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

這一題的完整詳解

核心觀念

本題評量**分治法(Divide-and-Conquer)**在排序演算法中的經典應用——合併排序法(Merge Sort)。其核心概念包含三個步驟:

  1. 分割(Divide):將目前長度為 nn 的數列從正中間切分為長度各為 ⌊n/2⌋\lfloor n/2 \rfloor 與 ⌈n/2⌉\lceil n/2 \rceil 的兩個子數列,持續遞迴分割,直到每個子數列長度均為 11。
  2. 征服(Conquer):長度為 11 的子數列視為已排序完成,此為遞迴終止條件(Base Case)。
  3. 結合(Combine / Merge):將兩兩相鄰且已各自排序好的子數列,透過雙指標(Two Pointers)由小到大依序比對,合併成一個較大且已排序的新數列,重複此步驟直至還原成完整數列。

複雜度與特性:

  • 時間複雜度:分割階段建立高度為 ⌈log⁡2n⌉+1\lceil \log_2 n \rceil + 1 的二元遞迴樹;每一層合併需花費 O(n)\mathcal{O}(n) 的比對時間。因此最佳、最差與平均時間複雜度皆為 O(nlog⁡2n)\mathcal{O}(n \log_2 n)。
  • 空間複雜度:合併過程中需要額外配置輔助陣列存放暫存資料,空間複雜度為 O(n)\mathcal{O}(n)。
  • 穩定性(Stability):屬於穩定排序(Stable Sort);比對數值相同時,優先取左側子數列之元素,即可保證鍵值相同元素的原始相對順序不變。

解題方法

給定數列共有 88 個元素: A=[8,70,19,3,50,25,30,10]A = [8, 70, 19, 3, 50, 25, 30, 10]

依標準由上而下(Top-Down)遞迴方式推導:

一、分割階段(Divide Phase)

  • 第 0 層(原始數列):[8,70,19,3,50,25,30,10][8, 70, 19, 3, 50, 25, 30, 10]
  • 第 1 次二分:對半切分為左半部 [8,70,19,3][8, 70, 19, 3] 與右半部 [50,25,30,10][50, 25, 30, 10]。
  • 第 2 次二分:
  • 左半部切為 [8,70][8, 70] 與 [19,3][19, 3]。
  • 右半部切為 [50,25][50, 25] 與 [30,10][30, 10]。
  • 第 3 次二分(基礎情況):各子數列切為長度 11 的單一元素: [8],[70],[19],[3],[50],[25],[30],[10][8], [70], [19], [3], [50], [25], [30], [10]

二、合併階段(Merge Phase)

  • 第 1 次合併(長度 1→21 \to 2):
  • Merge([8],[70])  ⟹  [8,70]\text{Merge}([8], [70]) \implies [8, 70]
  • Merge([19],[3])  ⟹  [3,19]\text{Merge}([19], [3]) \implies [3, 19]
  • Merge([50],[25])  ⟹  [25,50]\text{Merge}([50], [25]) \implies [25, 50]
  • Merge([30],[10])  ⟹  [10,30]\text{Merge}([30], [10]) \implies [10, 30]
  • 第 2 次合併(長度 2→42 \to 4):
  • Merge([8,70],[3,19])  ⟹  [3,8,19,70]\text{Merge}([8, 70], [3, 19]) \implies [3, 8, 19, 70]
  • Merge([25,50],[10,30])  ⟹  [10,25,30,50]\text{Merge}([25, 50], [10, 30]) \implies [10, 25, 30, 50]
  • 第 3 次合併(長度 4→84 \to 8):
🔒

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

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

免費註冊

第 二 題20 分

下圖是一棵二元搜尋樹(Binary Search Tree)。

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

依序對此樹輸入 68、468、4,請逐步繪出輸入結果;對下圖的二元搜尋樹依序刪除 60、1060、10,請逐步繪出刪除的結果。

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

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

這一題的完整詳解

核心觀念

二元搜尋樹(Binary Search Tree, BST)遵守以下順序性質:每個節點的左子樹鍵值小於該節點,右子樹鍵值大於該節點。插入時從根節點開始逐層比較,直到找到空位置;刪除時則依被刪節點的子節點數處理:

  • 沒有子節點:直接刪除。
  • 只有一個子節點:以該子節點接替被刪節點。
  • 有兩個子節點:以中序後繼(右子樹最小值)或中序前驅(左子樹最大值)接替。

解題方法

依原圖,初始 BST 如下:

 30
 / \
 3 60
 \ \
 10 70
 / /
 5 65
 \
 7
 / \
 6
 /
 20
 / \
 15 25
 \
 17

原圖中 2020 是 1010 的右子節點,1515 是 2020 的左子節點,1717 是 1515 的右子節點。依實際連線整理後,完整樹形為:

 30
 / \
 3 60
 \ \
 10 70
 / \ /
 5 20 65
 \ / \
 7 15 25
 / \
 6 17

一、依序插入 68、468、4

插入 6868:

比較路徑為 68>3068>30、68>6068>60、68<7068<70、68>6568>65,因此插入 6565 的右子節點。

 30
 / \
 3 60
 \ \
 10 70
 / \ /
 5 20 65
 \ / \ \
 7 15 25 68
 / \
 6 17

接著插入 44:

🔒

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

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

免費註冊

第 三 題20 分

資料庫管理系統並行控制(Concurrency Control)不佳時可能產生三種資料干擾問題:遺失更新(Lost Update)、未確認相依(Uncommitted Dependency)、不一致分析(Inconsistent Analysis),請說明這三種資料干擾問題。

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

這一題的完整詳解

核心觀念

本題評量關聯式資料庫系統(DBMS)在「交易管理(Transaction Management)」與「並行控制(Concurrency Control)」領域的核心知識。

  1. 交易的隔離性(Isolation): 在多使用者環境下,多筆交易同時執行(Interleaved Execution)時,若未加適當控制,交易之間會互相干擾,破壞 ACID 特性中的隔離性與一致性(Consistency)。
  2. 讀寫衝突(Conflict Types)與異常對應: 並行排程(Schedule)中的資料干擾本質上來自非受控的讀寫衝突:
  • 寫入-寫入衝突(W−WW-W Conflict):對應「遺失更新(Lost Update)」。
  • 寫入-讀取衝突(W−RW-R Conflict):對應「未確認相依(Uncommitted Dependency / Dirty Read)」。
  • 讀取-寫入衝突(R−WR-W Conflict):對應「不一致分析(Inconsistent Analysis / Non-repeatable Read)」。

解題方法

針對申論題型的名詞與現象說明,最佳解答結構應包含三要素:

  1. 精準定義:指出衝突發生的條件與機制。
  2. 時序範例(Interleaved Schedule):使用標準交易符號(Ri(X)R_i(X) 表示交易 TiT_i 讀取 XX;Wi(X)W_i(X) 表示交易 TiT_i 寫入 XX)搭配具體數值變化,證明干擾過程。
  3. 影響後果:說明該現象對資料一致性造成的破壞。

解題技巧

  1. 二元對應速記法:
  • 遺失更新:W→WW \to W(後寫蓋前寫,前功盡棄)。
  • 未確認相依(髒讀):W→R→AbortW \to R \to \text{Abort}(讀了別人後來反悔放棄的暫存資料)。
  • 不一致分析(模糊讀取):R→W→RR \to W \to R(統計過程中資料被別人竄改,前後算不攏)。
  1. 版面排版竅門: 在國家考試試卷上,單純純文字描述不易拿滿分。利用「時間軸/時序表格」呈現 T1T_1 與 T2T_2 的執行先後順序,能讓閱卷委員一眼看清衝突點,為高分關鍵。
  2. 延伸對應(加分亮點): 可點出 ANSI SQL 隔離層級(Read Committed、Repeatable Read、Serializable)與兩階段鎖定協議(2PL)如何預防此類問題。

【答案】

資料庫管理系統在缺乏適當並行控制機制時,因交易交錯執行所產生的三種資料干擾問題說明如下:

一、遺失更新(Lost Update)

  1. 定義與成因: 當交易 T1T_1 與 T2T_2 同時讀取同一筆資料項 XX,各自在記憶體緩衝區進行修改後先後寫回資料庫。後寫入的交易(T2T_2)覆蓋了先寫入的交易(T1T_1)所做的更新結果,導致 T1T_1 的更新如同從未發生過,形成寫入-寫入衝突(W−WW-W Conflict)。

  2. 時序範例: 假設帳戶餘額 X=100X = 100 元,T1T_1 欲存入 20 元,T2T_2 欲扣除 10 元(正確結果應為 100+20−10=110100 + 20 - 10 = 110 元):

時間步階交易 T1T_1交易 T2T_2資料庫 XX 值說明
t1t_1R1(X)R_1(X)100100T1T_1 讀取 X=100X = 100
t2t_2R2(X)R_2(X)100100T2T_2 亦讀取 X=100X = 100
t3t_3X←X+20X \leftarrow X + 20<br>W1(X)W_1(X)120120T1T_1 計算得 120120 並寫入資料庫
t4t_4X←X−10X \leftarrow X - 10<br>W2(X)W_2(X)9090T2T_2 依據先前讀取的 100100 計算得 9090 並寫入
t5t_5Commit\text{Commit}Commit\text{Commit}9090T1T_1 所做的更新完全被 T2T_2 覆蓋而遺失
🔒

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

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

免費註冊

第 四 題20 分

SQL 合併查詢(Join)中的外部合併查詢(Outer Join)指令可分成哪三種?並請說明三種外部合併查詢(Outer Join)及內部合併查詢(Inner Join)四者之間的差異。

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

這一題的完整詳解

核心觀念

本題測驗關聯式資料庫管理系統(RDBMS)中 SQL 語法(ANSI SQL-92 標準)與關聯代數(Relational Algebra)的「合併運算」(Join Operation)核心機制。

  1. 內部合併(Inner Join):僅保留兩資料表中符合連接條件(Join Predicate / Condition)的交集成對元組(Tuples),未匹配的元組將全數被捨棄。
  2. 外部合併(Outer Join):為了解決懸空元組(Dangling Tuples / Unmatched Tuples)在內部合併中遺失的問題,外部合併允許保留特定或全部資料表中未匹配的資料,並對未對應到的欄位自動填補空值(NULL)。
  3. 關聯代數定義:
  • 內部合併:R⋈θS=σθ(R×S)R \bowtie_{\theta} S = \sigma_{\theta}(R \times S)
  • 左外部合併:R⟕θSR ⟕_{\theta} S
  • 右外部合併:R⟖θSR ⟖_{\theta} S
  • 全外部合併:R⟗θSR ⟗_{\theta} S

解題方法

本題分為兩大作答核心:

  1. 列出三種外部合併指令:標註中文全名、標準 SQL 關鍵字及關聯代數符號。
  2. 比較四種合併方式的差異:由集合論邏輯切入,說明未匹配資料的處理方式,並設計一組簡易資料表實例對比查詢結果。

1. 外部合併(Outer Join)的三種指令

SQL 標準中,外部合併依據「保留未匹配資料的資料表來源」分為以下三種:

  • 左外部合併(Left Outer Join):關鍵字為 LEFT JOIN 或 LEFT OUTER JOIN。
  • 右外部合併(Right Outer Join):關鍵字為 RIGHT JOIN 或 RIGHT OUTER JOIN。
  • 全外部合併(Full Outer Join):關鍵字為 FULL JOIN 或 FULL OUTER JOIN。

2. 四者(Inner Join 與三種 Outer Join)之差異比較

四者根本差異在於「對不符合連接條件(Non-matching)之資料列的保留規則與補值行為」:

比較項目內部合併 (Inner Join)左外部合併 (Left Outer Join)右外部合併 (Right Outer Join)全外部合併 (Full Outer Join)
語法關鍵字INNER JOIN ... ONLEFT OUTER JOIN ... ONRIGHT OUTER JOIN ... ONFULL OUTER JOIN ... ON
關聯代數R⋈SR \bowtie SR⟕SR ⟕ SR⟖SR ⟖ SR⟗SR ⟗ S
保留資料範圍僅保留兩表均符合條件之交集資料保留左表全部資料+右表符合條件之資料保留右表全部資料+左表符合條件之資料保留左右兩表全部資料(聯集概念)
未匹配時之處理不匹配者直接捨棄右表未匹配之欄位補 NULL左表未匹配之欄位補 NULL任一方未匹配之欄位補 NULL
集合概念對照A∩BA \cap BAA(含 A∩BA \cap B 與 A−BA - B)BB(含 A∩BA \cap B 與 B−AB - A)A∪BA \cup B

3. 範例說明

假設有資料表 AA(員工表 Emp)與資料表 BB(部門表 Dept),以 Emp.DeptID = Dept.DeptID 為合併條件:

  • 資料表 AA (Emp):
  • (EmpID: 1, Name: '王小明', DeptID: 10)
  • (EmpID: 2, Name: '李小華', DeptID: 20)
  • (EmpID: 3, Name: '張大同', DeptID: NULL) (無部門)
  • 資料表 BB (Dept):
  • (DeptID: 10, DeptName: '研發部')
  • (DeptID: 20, DeptName: '人事部')
  • (DeptID: 30, DeptName: '行銷部') (無所屬員工)

四種查詢結果差異如下:

  1. 內部合併(Inner Join):
  • 僅產出匹配的 2 筆紀錄:王小明-研發部、李小華-人事部。
  • 張大同與行銷部皆被捨棄。
  1. 左外部合併(Left Outer Join):
  • 產出 3 筆紀錄:王小明-研發部、李小華-人事部、張大同-NULL。
  • 保留左表(Emp)全部人員,未對應到的部門欄位填補 NULL。
  1. 右外部合併(Right Outer Join):
🔒

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

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

免費註冊

第 五 題20 分

正確率(Accuracy)、精確率(Precision)、召回率(Recall)為分類(Classification)技術中常用的評估機制,請說明三者的定義。

假設有 10001000 張照片,其中有 200200 張為人物照,800800 張為風景照。我們建立了一個分類器(Classifier),希望能正確辨識出人物照,此分類器的分類結果如下:

400400 張被判斷為人物照,其餘 600600 張被判斷為非人物照,而被判斷為人物照的照片中有 250250 張實際上並非人物照。

請計算此分類器的 Accuracy、Precision、Recall。

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

這一題的完整詳解

核心觀念

本題評量資料探勘(Data Mining)與機器學習領域中,二元分類(Binary Classification)模型之效能評估機制。其核心建立於混淆矩陣(Confusion Matrix):

設定感興趣的目標類別為「正類(Positive)」,另一類別為「負類(Negative)」。本題目標為辨識人物照,故定義:

  • 正類(Positive):人物照
  • 負類(Negative):風景照(非人物照)

混淆矩陣之四種基本計數:

  1. 真陽性(True Positive, TPTP):實際為正類,且被模型正確預測為正類。
  2. 假陽性(False Positive, FPFP):實際為負類,但被模型誤判為正類(型 I 錯誤,Type I Error)。
  3. 真陰性(True Negative, TNTN):實際為負類,且被模型正確預測為負類。
  4. 假陰性(False Negative, FNFN):實際為正類,但被模型誤判為負類(型 II 錯誤,Type II Error)。

各項評估指標定義與公式如下:

  • 正確率(Accuracy):在所有樣本中,被正確預測(包含正類與負類)的比例。 Accuracy=TP+TNTP+TN+FP+FNAccuracy = \frac{TP + TN}{TP + TN + FP + FN}
  • 精確率(Precision,又稱查準率):在所有被模型「預測為正類」的樣本中,實際上真正為正類的比例。著重於「模型預測的正類中,有多少是準確的」。 Precision=TPTP+FPPrecision = \frac{TP}{TP + FP}
  • 召回率(Recall,又稱查全率、靈敏度 Sensitivity):在所有「實際為正類」的樣本中,成功被模型預測出來的比例。著重於「實際存在的正類中,有多少被成功撈出」。 Recall=TPTP+FNRecall = \frac{TP}{TP + FN}

解題方法

第一部分:建構混淆矩陣

依題意拆解題目給定之各項數據:

  1. 總樣本數:10001000 張。
  2. 實際分佈:
  • 實際為人物照(Actual Positive)=TP+FN=200= TP + FN = 200
  • 實際為風景照(Actual Negative)=TN+FP=800= TN + FP = 800
  1. 分類器預測結果:
  • 預測為人物照(Predicted Positive)=TP+FP=400= TP + FP = 400
  • 預測為非人物照(Predicted Negative)=TN+FN=600= TN + FN = 600
  1. 關鍵誤判條件:
  • 「被判斷為人物照的照片中有 250250 張實際上並非人物照」,即預測為正但實際為負(False Positive): FP=250FP = 250
  1. 推導其餘數值:
  • 由 TP+FP=400TP + FP = 400 得: TP=400−250=150TP = 400 - 250 = 150
  • 由 TP+FN=200TP + FN = 200 得: FN=200−150=50FN = 200 - 150 = 50
  • 由 TN+FP=800TN + FP = 800 得: TN=800−250=550TN = 800 - 250 = 550

驗算預測為非人物照總數:TN+FN=550+50=600TN + FN = 550 + 50 = 600,與題意相符。

將上述數值整理為混淆矩陣:

實際 \ 預測預測為人物照(Positive)預測為非人物照(Negative)實際合計
實際上為人物照TP=150TP = 150FN=50FN = 50200200
實際上為風景照FP=250FP = 250TN=550TN = 550800800
預測合計40040060060010001000

第二部分:計算評估指標

  1. 正確率(Accuracy):
🔒

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

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

免費註冊

其他考古題

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