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

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

第 一 題30 分

請詳述下列名詞之意涵:

(一)Apriori-property

(二)Bucket-Sort

(三)False-negative(type-2 error)

(四)叢集索引

(五)Database normalization

(六)Suffix Tree

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

這一題的完整詳解

核心觀念與解題方法

本題為名詞解釋,涵蓋資料探勘、排序、統計分類、資料庫索引與正規化,以及字串資料結構。作答時,逐一說明名詞的定義、核心性質與主要用途;容易混淆的概念則補充比較或例子。

(一)Apriori-property

Apriori-property(先驗性質)是關聯規則探勘中用來剪枝的性質:

若一個項目集是頻繁項目集,則它的每一個非空子集也必為頻繁項目集。

等價地說,若某個項目集不頻繁,則包含它的所有更大項目集都不可能頻繁。

設最小支持度門檻為 minsup\text{minsup},項目集 XX 的支持度為 support(X)\text{support}(X)。若 XX 不滿足 support(X)≥minsup\text{support}(X)\geq \text{minsup},則任何包含 XX 的項目集 Y⊃XY\supset X 均可直接排除。這是 Apriori 演算法逐層產生候選項目集時,減少計數工作的依據。

例如,若 {A,B}\{A,B\} 不頻繁,則 {A,B,C}\{A,B,C\}、{A,B,D}\{A,B,D\} 等超集都不必再計算支持度。

**解題技巧:**記住「頻繁則子集頻繁;不頻繁則超集不頻繁」。這項性質針對支持度的反單調性,不可誤套到信賴度等其他指標。

(二)Bucket-Sort

Bucket-Sort(桶排序)是將資料依數值範圍分配到多個桶(bucket),在各桶內排序,再依桶的順序串接結果的排序法。

典型流程如下:

  1. 根據資料的值域建立多個桶。
  2. 將每筆資料放入對應的桶。
  3. 分別排序各桶中的資料。
  4. 依桶的順序串接,得到排序結果。

若 nn 筆資料大致均勻分布於 kk 個桶,平均每桶約有 n/kn/k 筆;採用桶內比較排序時,平均時間可達 O(n+k)O(n+k)(適當選擇桶數且分布均勻時)。最壞情況下,若資料集中在同一桶,時間可能退化為桶內排序的時間,例如使用比較排序時為 O(nlog⁡n)O(n\log n)。空間需求通常為 O(n+k)O(n+k)。

**解題技巧:**桶排序的高效率仰賴資料範圍可切分、分布較均勻;不可把平均效率直接當成任何輸入下的保證。

(三)False-negative(type-2 error)

False-negative(偽陰性、第二型錯誤)是指實際狀態為陽性,檢測或分類結果卻判定為陰性。

以假設檢定表示,虛無假設 H0H_0 為真時拒絕它,稱為第一型錯誤;H0H_0 為假時未拒絕它,稱為第二型錯誤。第二型錯誤機率記為 β\beta,檢定力(power)為:

power=1−β\text{power}=1-\beta

在疾病篩檢中,病人被判定為未患病即為偽陰性;在垃圾郵件分類中,垃圾郵件被判定為正常郵件也屬偽陰性。

**解題技巧:**以「實際陽性、判定陰性」記憶 false-negative;勿與 false-positive(實際陰性、判定陽性)混淆。

(四)叢集索引

叢集索引(clustered index)是依索引鍵值的順序,安排資料記錄在資料檔中的實體儲存順序的索引。由於資料本身通常只能依一種順序排列,一個資料表通常至多有一個叢集索引。

叢集索引適合用於依索引鍵進行範圍查詢或排序輸出,因為相鄰鍵值的記錄在實體儲存上也較接近,可減少磁碟存取。若索引鍵不是唯一值,資料庫系統會以額外資訊或內部排序方式處理相同鍵值的記錄。

相對地,非叢集索引另行儲存索引鍵及指向資料列的參照,不決定資料列本身的實體排列順序;同一資料表可以建立多個非叢集索引。

🔒

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

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

免費註冊

第 二 題20 分

在一個空堆疊(Heap)中插入一串數字 5,8,2,3,9,4,7,10,1,65,8,2,3,9,4,7,10,1,6。如果此堆疊是最大堆積(max-heap):

(一)請根據插入數字順序描述堆疊成長過程。

(二)並根據此堆疊呈現堆積排序法(Heap-Sort)在輸出前兩大數字時的過程。

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

這一題的完整詳解

核心觀念

最大堆積(max-heap)是一棵完全二元樹,且每個節點的鍵值都不小於其子節點。以陣列表示時,若使用 1 起算的索引,索引 ii 的父節點為 ⌊i/2⌋\lfloor i/2\rfloor,左、右子節點分別為 2i2i、2i+12i+1。

插入新值時,先放在陣列末端以維持完全二元樹形狀,再將它與父節點比較;若新值較大,就一路交換(上浮),直到符合最大堆積性質。堆積排序輸出最大值時,先取出根節點,再將末端元素移到根部並向下調整(下沉)。

解題方法

(一)依序插入並上浮

下表中的陣列採層序排列;每次插入後,括號內列出上浮交換。

插入值插入後的最大堆積陣列
5[5][5]
8[8,5][8,5](8↔58\leftrightarrow5)
2[8,5,2][8,5,2]
3[8,5,2,3][8,5,2,3]
9[9,8,2,3,5][9,8,2,3,5](99 依序與 3、5、83、5、8 交換)
4[9,8,4,3,5,2][9,8,4,3,5,2](4↔24\leftrightarrow2)
7[9,8,7,3,5,2,4][9,8,7,3,5,2,4](7↔47\leftrightarrow4)
10[10,9,7,8,5,2,4,3][10,9,7,8,5,2,4,3](1010 依序與 3、8、93、8、9 交換)
1[10,9,7,8,5,2,4,3,1][10,9,7,8,5,2,4,3,1]
6[10,9,7,8,6,2,4,3,1,5][10,9,7,8,6,2,4,3,1,5](6↔56\leftrightarrow5)
🔒

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

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

免費註冊

第 三 題20 分

一個動物分類資料庫如下表。「Name」為動物名稱,「Give Birth」、「Can Fly」、「Live in Water」、「Have Legs」是四個屬性,最後一欄為類別(Class)。

NameGive BirthCan FlyLive in WaterHave LegsClass
humanyesnonoyesmammals
pythonnononononon-mammals
salmonnonoyesnonon-mammals
whaleyesnoyesnomammals
frognonosometimesyesnon-mammals
komodonononoyesnon-mammals
batyesyesnoyesmammals
pigeonnoyesnoyesnon-mammals
catyesnonoyesmammals
leopard sharkyesnoyesnonon-mammals
turtlenonosometimesyesnon-mammals
penguinnonosometimesyesnon-mammals
porcupineyesnonoyesmammals
eelnonoyesnonon-mammals
salamandernonosometimesyesnon-mammals
gila monsternononoyesnon-mammals
platypusnononoyesmammals
owlnoyesnoyesnon-mammals
dolphinyesnoyesnomammals
eaglenoyesnoyesnon-mammals

(一)請使用 naïve Bayes 方法來計算與預測一筆測試資料,其屬性為「Give Birth」= Yes、「Can Fly」= no、「Live in Water」= Yes,以及「Have Legs」= no 的類別。

(二)此方法在分類上容易因資料不足造成何種問題?

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

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

這一題的完整詳解

核心觀念

Naïve Bayes(樸素貝氏分類)利用貝氏定理,計算測試資料在各類別下的後驗機率,再選擇機率較大的類別。它假設在已知類別後,各屬性彼此條件獨立:

P(C∣X)∝P(C)∏i=1nP(xi∣C)P(C\mid X)\propto P(C)\prod_{i=1}^{n}P(x_i\mid C)

其中 P(C)P(C) 是類別的先驗機率,P(xi∣C)P(x_i\mid C) 是屬性值在該類別中的條件機率。本題測試資料為「Give Birth = yes、Can Fly = no、Live in Water = yes、Have Legs = no」。

解題方法

表中共有 20 筆資料,其中 mammals 有 7 筆,non-mammals 有 13 筆,因此:

P(mammals)=720,P(non-mammals)=1320P(\text{mammals})=\frac{7}{20},\qquad P(\text{non-mammals})=\frac{13}{20}

計算 mammals 的分數

在 7 筆 mammals 中,Give Birth = yes 有 6 筆、Can Fly = no 有 6 筆、Live in Water = yes 有 2 筆、Have Legs = no 有 2 筆:

P(mammals∣X)∝720×67×67×27×27=361715≈0.02099\begin{aligned} P(\text{mammals}\mid X) &\propto \frac{7}{20}\times\frac{6}{7}\times\frac{6}{7}\times\frac{2}{7}\times\frac{2}{7}\\ &=\frac{36}{1715}\approx 0.02099 \end{aligned}

計算 non-mammals 的分數

🔒

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

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

免費註冊

第 四 題30 分

根據以下模擬 1922 實名制簡訊關聯資料表架構,寫出不同查詢的 SQL 表示。

Location(LID, LPID, Lname):位置編號、位置上層編號、位置名稱。

Message(MID, phoneNum, LID, Date):1922 簡訊。

其中 LPID 為 LID 的更上層區域編號,若 LPID 為 00 則無上層區域,如:

某甲單位上層區域為臺北市,系統會有兩筆 Location 資料:

(10,1,甲10,1,甲)、($1,0,臺北市)。

(一)查詢所有在 2021/5/10 當天出現在 LID = 10 位置超過兩次以上的電話號碼。(5 分)

(二)查詢 LID = 10 位置在 2021/5/10 至 2021/5/17 間與電話號碼 09XX555666 到訪日期均相同的所有電話號碼。(5 分)

(三)查詢電話號碼 09XX555666 在 2021/5/10 至 2021/5/17 有出現過的所有上層區域。(5 分)

(四)查詢與電話號碼 09XX555666 在 2021/5/10 共同出現在同樣上層區域的所有電話號碼。(5 分)

(五)請論述在真實實名制資料庫設計中,有可能遇到的查詢效能問題為何?並描述可能解決方法。(10 分)

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

這一題的完整詳解

核心觀念

本題考查關聯式資料庫的分組聚合、日期篩選、自我關聯,以及以「所有日期均相同」表示集合相等。Location.LPID 指向上層位置的 Location.LID,因此可用自我連結取得上層區域。

以下以標準 SQL 表示;假設 Date 是日期型別,且「共同出現在同樣上層區域」是指兩支電話在同一天、同一上層區域都至少有一筆簡訊紀錄。此題不涉及法條。

(一)同日於 LID = 10 出現超過兩次的電話號碼

SELECT phoneNum
FROM Message
WHERE LID = 10
 AND Date = '2021-05-10'
GROUP BY phoneNum
HAVING COUNT(*) > 2;

先篩選指定位置與日期,再依電話號碼分組;HAVING COUNT(*) > 2 保留當日紀錄筆數至少為 3 的號碼。「超過兩次」不等於「兩次以上」。

(二)指定期間內,與 09XX555666 在 LID = 10 的到訪日期完全相同之電話號碼

WITH TargetDays AS (
 SELECT DISTINCT Date
 FROM Message
 WHERE LID = 10
 AND phoneNum = '09XX555666'
 AND Date BETWEEN '2021-05-10' AND '2021-05-17'
),
OtherDays AS (
 SELECT DISTINCT phoneNum, Date
 FROM Message
 WHERE LID = 10
 AND phoneNum <> '09XX555666'
 AND Date BETWEEN '2021-05-10' AND '2021-05-17'
)
SELECT o.phoneNum
FROM OtherDays AS o
GROUP BY o.phoneNum
HAVING COUNT(*) = (SELECT COUNT(*) FROM TargetDays)
 AND NOT EXISTS (
 SELECT 1
 FROM TargetDays AS t
 WHERE NOT EXISTS (
 SELECT 1
 FROM OtherDays AS x
 WHERE x.phoneNum = o.phoneNum
 AND x.Date = t.Date
 )
 );

「到訪日期均相同」表示兩者在期間內的日期集合相等,而非單純有任一天重疊。先用 DISTINCT 排除同日多筆簡訊造成的重複日期,再以 NOT EXISTS 確認目標電話的每個日期都出現在候選電話的日期集合中。日期數量相等則可排除候選電話另有額外日期的情況。

(三)指定電話於期間內出現過的所有上層區域

SELECT DISTINCT parent.LID, parent.Lname
FROM Message AS m
JOIN Location AS child
 ON m.LID = child.LID
JOIN Location AS parent
 ON child.LPID = parent.LID
WHERE m.phoneNum = '09XX555666'
 AND m.Date BETWEEN '2021-05-10' AND '2021-05-17'
 AND child.LPID <> 0;
🔒

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

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

免費註冊

其他考古題

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