112 高普考高考三級 資訊處理 資料結構 考古題詳解

112 年・高普考・高考三級・資訊處理
試題代碼 資料結構

第 一 題25 分

某一公司有 8 個待執行工作,各工作依序自 A 至 H、每間隔一天放入對應的高優先執行佇列(Queue)或低優先執行佇列(Queue)。例如,A(低)表示 A 工作將於第一天放入低優先執行佇列;C(高)表示 C 工作將於第三天放入高優先執行佇列。

各工作之優先順序及執行時間如下:

  • A(低),執行時間 22 天
  • B(低),執行時間 11 天
  • C(高),執行時間 22 天
  • D(高),執行時間 22 天
  • E(低),執行時間 11 天
  • F(高),執行時間 11 天
  • G(高),執行時間 22 天
  • H(低),執行時間 11 天

各工作的執行規則如下:當高優先執行佇列內有工作待完成時,須優先執行該佇列內的工作(由第一個開始執行),直到高優先執行佇列內沒有任何待完成工作時,方可執行低優先執行佇列內的工作(由第一個開始執行)。

(一)試計算執行此 8 個工作需要多少天方可完成。(10 分)

(二)試計算此 8 個工作自放入佇列至開始執行的平均等待時間。(15 分)

(此題原卷文字擷取不全,請參考原卷)

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

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

這一題的完整詳解

核心觀念

本題考查「兩層優先權佇列」的排程:

  1. 每個工作依序於第 11 至第 88 天放入佇列。
  2. 高優先佇列的優先權高於低優先佇列。
  3. 同一佇列內採先進先出(FIFO)。
  4. 工作一旦開始執行即連續完成,不因新工作到達而中斷。
  5. 只有在高優先佇列沒有待執行工作時,才可執行低優先佇列工作。

解題方法

各工作到達時間如下:

工作到達日佇列執行時間
A1低2
B2低1
C3高2
D4高2
E5低1
F6高1
G7高2
H8低1

依照「高優先佇列優先」規則排程:

執行工作開始執行日完成日等待時間
A121−1=01-1=0
C343−3=03-3=0
D565−4=15-4=1
F777−6=17-6=1
G898−7=18-7=1
B101010−2=810-2=8
E111111−5=611-5=6
H121212−8=412-8=4

說明如下:

🔒

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

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

免費註冊

第 二 題25 分

某一物流公司有 8 個地點要運送,每條方向性連線及其數字代表兩個地點的運送順序及運送成本。

(此題原卷文字擷取不全,請參考原卷)

(一)試使用拓樸排序法,找出此 8 個地點的運送順序以及總共運送成本。(15 分)

(二)若將上圖的地點 2 與地點 4 之間,以及地點 6 與地點 7 之間的連線方向顛倒,則運用拓樸排序法後,此 8 個地點的運送順序以及總共運送成本為何?(10 分)

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

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

這一題的完整詳解

核心觀念

本題考:

  1. 有向無環圖(DAG)的拓樸排序。
  2. Kahn 演算法:反覆選取入度為 00 的頂點,將其列入順序並刪除其出邊。
  3. 拓樸排序存在的必要條件:圖中不可存在有向循環。
  4. 總運送成本為所有有向連線標示成本的總和。

由圖可讀得各邊如下:

1→3(4),1→2(4),3→2(3),3→4(2),4→2(3),4→5(2),4→6(2),2→6(5),6→5(2),6→7(3),5→7(2),5→8(3),7→8(4)\begin{aligned} &1\to3(4),\quad 1\to2(4),\quad 3\to2(3),\quad 3\to4(2),\\ &4\to2(3),\quad 4\to5(2),\quad 4\to6(2),\quad 2\to6(5),\\ &6\to5(2),\quad 6\to7(3),\quad 5\to7(2),\\ &5\to8(3),\quad 7\to8(4) \end{aligned}

(一)拓樸排序與總運送成本

各頂點初始入度為:

頂點入度
10
23(來自 1、3、4)
31(來自 1)
41(來自 3)
52(來自 4、6)
62(來自 2、4)
72(來自 5、6)
82(來自 5、7)

依序執行:

  1. 頂點 11 入度為 00,列入排序;刪除 1→31\to3、1→21\to2。
  2. 頂點 33 入度變為 00,列入排序;刪除 3→23\to2、3→43\to4。
  3. 頂點 44 入度變為 00,列入排序;刪除 4→24\to2、4→54\to5、4→64\to6。
  4. 頂點 22 入度變為 00,列入排序;刪除 2→62\to6。
  5. 頂點 66 入度變為 00,列入排序;刪除 6→56\to5、6→76\to7。
  6. 頂點 55 入度變為 00,列入排序;刪除 5→75\to7、5→85\to8。
  7. 頂點 77 入度變為 00,列入排序;刪除 7→87\to8。
  8. 頂點 88 入度變為 00,列入排序。

因此拓樸排序為:

1→3→4→2→6→5→7→8\boxed{1\to3\to4\to2\to6\to5\to7\to8}

總運送成本為所有邊成本相加:

🔒

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

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

免費註冊

第 三 題25 分

在電腦網路中,透過 IP 位址查詢對應裝置是常見的動作。今某電腦網路有以下表格所示的 IP 位址以及對應裝置。假設每個 IP 位址有 88 個位元,當輸入某一 IP 位址以查詢對應裝置時,最壞情況為此表格中的每個 IP 位址的每個位元皆需要搜尋一次,以確認此輸入的 IP 位址是否有對應的裝置。

由於這樣的 IP 位址儲存方式,將造成查詢時的高複雜度。例如,若表內有 mm 個 IP 位址,查詢複雜度為 m×8m \times 8。因此,運用適當的資料結構以降低查詢複雜度,已成為電腦網路的重要課題。

IP 位址與對應裝置如下:

IP 位元 0IP 位元 1IP 位元 2IP 位元 3IP 位元 4IP 位元 5IP 位元 6IP 位元 7裝置
0000111111110000A
0000111100001111B
1111000000001111C
1111000011110000D
1111001111110000E
…\ldots…\ldots…\ldots…\ldots…\ldots…\ldots…\ldots…\ldots…\ldots

試建立並驗證一個樹狀資料結構,不僅可以儲存以上表格方式的 IP 位址以及對應裝置資訊,並可使查詢 IP 位址所對應裝置的最壞情況複雜度維持在常數 88(也就是 IP 位址位元數)。(25 分)

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

這一題的完整詳解

核心觀念

本題的核心觀念在於運用**二元字典樹(Binary Trie / Bitwise Trie)**解決字串與二進位鍵值(Key)的檢索問題。在計算機網路與路由器轉送表(Forwarding Table)的設計中,這是最具代表性的資料結構之一。

  1. 二元字典樹(Binary Trie)定義:
  • 樹中的每個節點包含兩個子指標:左指標代表位元 00,右指標代表位元 11。
  • 鍵值(IP 位址)不直接儲存在單一節點內部,而是由樹根(Root)到該節點的路徑(Path)所決定。
  • 葉節點(Leaf Node)或特定終端節點存放對應的資料內容(本題為「對應裝置代號」)。
  1. 查詢複雜度特性:
  • 線性搜尋(逐筆比對):若有 mm 筆資料且每筆長度為 WW 位元,最壞情況需要比對 m×Wm \times W 次位元,時間複雜度為 O(m×W)O(m \times W)。
  • Trie 搜尋:搜尋時間僅取決於鍵值的位元長度 WW,與資料筆數 mm 無關。本題鍵值長度固定為 W=8W = 8 位元,因此由樹根向下走訪最多只需經過 88 個分支,時間複雜度嚴格維持在 O(W)=O(8)=O(1)O(W) = O(8) = O(1) 常數時間。

解題方法

一、樹狀資料結構設計

設計一棵高度為 88 的「二元字典樹」(Binary Trie):

  1. 節點結構(Node Structure):
  • LeftChild:指向位元為 00 的子節點。
  • RightChild:指向位元為 11 的子節點。
  • Device:儲存對應的裝置代號(若為非終端的中繼節點則為空值 null;於深度為 88 的葉節點儲存 A、B、C、D、E 等標籤)。
  1. 分支規則:
  • 從最高有效位元(Most Significant Bit, 位元 0)至最低有效位元(Least Significant Bit, 位元 7)逐一位元檢驗。
  • 當前位元為 00 則走訪左分支;為 11 則走訪右分支。

二、建立樹狀結構(以題目 5 個 IP 為例)

將題目所提供的 5 個 8 位元 IP 位址依序插入 Binary Trie:

  • 裝置 A:0 0 1 1 1 1 0 0
  • 裝置 B:0 0 1 1 0 0 1 1
  • 裝置 C:1 1 0 0 0 0 1 1
  • 裝置 D:1 1 0 0 1 1 0 0
  • 裝置 E:1 1 0 1 1 1 0 0

依各 IP 的位元路徑逐步建構,所得之樹狀結構如下圖所示(括號數字代表所在深度/位元層級):

 [Root] (層級 0)
 / \
 bit0=0/ \bit0=1
 / \
 (N1) (N2)
 / \bit1=1
 bit1=0/ \
 / (N3)
 (N4) /
 \bit2=1 bit2=0/
 \ /
 (N5) (N6)
 / bit3=/ \bit3=1
 bit3=1/ / \
 / (N7) (N8)
 (N9) / \ \bit4=1
 / \ bit4=0 / \ \
 bit4=0/ \bit4=1 / bit4=1\ (N13)
 / \ (N10) (N11) \bit5=1
 (N14) (N15) \ \ \
 / \ bit5=0\ bit5=1 \ (N16)
 bit5=0/ bit5=1 \ \ \ /
 / \ (N12) (N12')\bit6=0
 (N17) (N18) \ \ /
 \ / bit6=1 \ bit6=0 \/
 bit6=1\ bit6=0/ \ \
 \ / (N19) (N20)
 (N21) (N22) \ \
 \bit7=1 \bit7=0 bit7=1 \ bit7=0 \
 \ \ \ \
 [ B ] [ A ] [ C ] [ D, E 共用路徑終點 ]
 ├── bit3=0 支線:[ D ]
 └── bit3=1 支線:[ E ]
完整精確路徑展開驗證:
  1. 路徑 A(IP: 00111100): Root→0位元0→0位元1→1位元2→1位元3→1位元4→1位元5→0位元6→0位元7→裝置 A\text{Root} \xrightarrow{0} \text{位元0} \xrightarrow{0} \text{位元1} \xrightarrow{1} \text{位元2} \xrightarrow{1} \text{位元3} \xrightarrow{1} \text{位元4} \xrightarrow{1} \text{位元5} \xrightarrow{0} \text{位元6} \xrightarrow{0} \text{位元7} \to \text{裝置 A}
  2. 路徑 B(IP: 00110011): Root→0位元0→0位元1→1位元2→1位元3→0位元4→0位元5→1位元6→1位元7→裝置 B\text{Root} \xrightarrow{0} \text{位元0} \xrightarrow{0} \text{位元1} \xrightarrow{1} \text{位元2} \xrightarrow{1} \text{位元3} \xrightarrow{0} \text{位元4} \xrightarrow{0} \text{位元5} \xrightarrow{1} \text{位元6} \xrightarrow{1} \text{位元7} \to \text{裝置 B}
  3. 路徑 C(IP: 11000011):
🔒

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

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

免費註冊

第 四 題25 分

某一系統有下表所示的使用者帳號與密碼資料。今為了保密需要,欲將使用者密碼透過雜湊函數加以加密,並將雜湊後的密碼連同使用者帳號儲存於一個 2-3 樹(2-3 tree)中,依使用者帳號英文字母順序儲存。

雜湊函數為:

h(x)=密碼之英文字母及數字加總h(x)=\text{密碼之英文字母及數字加總}

其中英文字母 a–z 相當於 11–2626。

使用者帳號與密碼如下:

使用者帳號使用者密碼
AA234abc
BB123bcd
CDaa012
AC555be
BD45fdd
CA712ccc

(一)試計算出雜湊後的密碼資料。(10 分)

(二)試建立此 2-3 樹,以儲存系統的使用者帳號與(雜湊後)密碼資料。(15 分)

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

這一題的完整詳解

核心觀念

  1. 雜湊函數(Hash Function): 依題目定義,h(x)=密碼之英文字母及數字加總h(x) = \text{密碼之英文字母及數字加總}。其中字母採代號數值轉換(a=1,b=2,…,z=26\text{a} = 1, \text{b} = 2, \dots, \text{z} = 26),數字則直接取其數值(0∼90 \sim 9)累加。
  2. 2-3 樹(2-3 Tree)之定義與性質:
  • 為 3 階 B 樹(B-tree of order 3)的特例,是內部節點均為 2-節點(2-node)或 3-節點(3-node)的高度平衡搜尋樹。
  • 2-節點:包含 1 個鍵值(Key)及 2 棵子樹;左子樹所有鍵值小於該鍵值,右子樹所有鍵值大於該鍵值。
  • 3-節點:包含 2 個鍵值(K1<K2K_1 < K_2)及 3 棵子樹;左子樹鍵值 <K1< K_1、中子樹鍵值介於 K1K_1 與 K2K_2 之間、右子樹鍵值 >K2> K_2。
  • 平衡性質:所有葉節點(Leaf Nodes)必在同一深度。
  • 插入與分裂機制(Bottom-Up Insertion & Split):新資料一律自葉節點插入。若節點已滿(含有 2 個鍵值,插入後成為暫時的 4-節點 / 含有 3 個鍵值),則取中間鍵值(Median)向上提升(Promote)至父節點,左右鍵值各自獨立分裂為 2-節點。若父節點亦滿則遞迴向上分裂;若根節點分裂,樹高增加 1。
  1. 儲存排序基準: 題目要求「依使用者帳號英文字母順序儲存」,因此 2-3 樹的搜尋鍵值(Key)為「使用者帳號」,其大小依英文字典順序比較;雜湊後的密碼為隨同儲存之關聯資料(Satellite Data)。

解題方法

(一)計算雜湊後的密碼資料

依定義 h(x)=∑數字+∑字母數值h(x) = \sum \text{數字} + \sum \text{字母數值},逐一計算各使用者密碼:

  1. 使用者帳號 AA(密碼:234abc) h("234abc")=(2+3+4)+(1+2+3)=9+6=15h(\text{"234abc"}) = (2 + 3 + 4) + (1 + 2 + 3) = 9 + 6 = 15
  2. 使用者帳號 BB(密碼:123bcd) h("123bcd")=(1+2+3)+(2+3+4)=6+9=15h(\text{"123bcd"}) = (1 + 2 + 3) + (2 + 3 + 4) = 6 + 9 = 15
  3. 使用者帳號 CD(密碼:aa012) h("aa012")=(1+1)+(0+1+2)=2+3=5h(\text{"aa012"}) = (1 + 1) + (0 + 1 + 2) = 2 + 3 = 5
  4. 使用者帳號 AC(密碼:555be) h("555be")=(5+5+5)+(2+5)=15+7=22h(\text{"555be"}) = (5 + 5 + 5) + (2 + 5) = 15 + 7 = 22
  5. 使用者帳號 BD(密碼:45fdd) h("45fdd")=(4+5)+(6+4+4)=9+14=23h(\text{"45fdd"}) = (4 + 5) + (6 + 4 + 4) = 9 + 14 = 23
  6. 使用者帳號 CA(密碼:712ccc) h("712ccc")=(7+1+2)+(3+3+3)=10+9=19h(\text{"712ccc"}) = (7 + 1 + 2) + (3 + 3 + 3) = 10 + 9 = 19

(二)建立 2-3 樹之完整步驟

節點資料格式表示為 (帳號, 雜湊密碼)。依題目表格由上而下順序依序插入:

  • 步驟 1:插入 (AA, 15)
  • 樹為空,建立根節點:
[(AA, 15)]
  • 步驟 2:插入 (BB, 15)
  • AA<BB\text{AA} < \text{BB},放入同一節點,形成 3-節點:
[(AA, 15), (BB, 15)]
  • 步驟 3:插入 (CD, 5)
  • AA<BB<CD\text{AA} < \text{BB} < \text{CD},放入根節點後暫時形成含有 3 個鍵值的溢位節點: [(AA, 15), (BB, 15), (CD, 5)]
  • 觸發分裂:取中位數 (BB, 15) 提升為新根節點,左右鍵值分裂為兩個 2-節點:
[(BB, 15)]
/ \
[(AA, 15)] [(CD, 5)]
  • 步驟 4:插入 (AC, 22)
  • 與根節點比較:AC<BB\text{AC} < \text{BB},向左搜尋至葉節點 [(AA, 15)]。
🔒

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

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

免費註冊

其他考古題