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

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

第 一 題10 分

一、 一棵空的階數為 3 的 B-Tree(B-Tree of order 3),由左而右依序插入下列鍵值(key value):10,80,2,9,45,6210, 80, 2, 9, 45, 62。

請問插入完畢後,根節點中的鍵值有哪些?請依序由小到大列出,用逗號分隔,並請說明樹節點的變化。(10 分)

二、 有一棵階數為 5 的 B-Tree(B-Tree of order 5),其高度(height)為 3,請問這棵樹中最多可以儲存多少個鍵值?(10 分)

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

這一題的完整詳解

核心觀念

階數為 mm 的 B-Tree,每個節點最多有 mm 個子節點,因此最多含 m−1m-1 個鍵值。插入鍵值時,先放入適當的葉節點;若節點超出容量,便將中間鍵值提升至父節點,並將其餘鍵值分到左右子節點。若根節點分裂,提升的鍵值會成為新的根。

本題第一小題的階數為 33,每個節點最多有 22 個鍵值。第二小題的階數為 55,每個節點最多有 44 個鍵值。

一、依序插入鍵值

依序插入 10,80,2,9,45,6210, 80, 2, 9, 45, 62:

  1. 插入 1010:根節點為 [10][10]。
  2. 插入 8080:根節點為 [10,80][10,80],已達容量上限。
  3. 插入 22:暫時成為 [2,10,80][2,10,80],超過上限;提升中間鍵值 1010,分裂為根節點 [10][10],左右子節點分別為 [2][2]、[80][80]。
  4. 插入 99:因 9<109<10,插入左子節點,成為 [2,9][2,9]。
  5. 插入 4545:因 45>1045>10,插入右子節點,成為 [45,80][45,80]。
  6. 插入 6262:插入右子節點後暫為 [45,62,80][45,62,80],超過上限;提升中間鍵值 6262 至根節點。
🔒

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

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

免費註冊

第 二 題10 分

一、 有一個三維整數陣列 A[3][6][8]A[3][6][8],每個元素占用 4 個記憶體空間,每個記憶體空間均有位址。該陣列在儲存至記憶體時,會先被轉換為一維陣列的形式儲存。下列位址皆為十進位,已知 A[0][1][2]A[0][1][2] 的記憶體位址為 20402040,A[1][4][5]A[1][4][5] 的位址為 23402340。

請問陣列 AA 在記憶體中的儲存方式為何?是以列為主(row-major)還是以行為主(column-major)?(10 分)

二、 請計算 A[1][5][3]A[1][5][3] 在記憶體中的位址為何?(10 分)

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

這一題的完整詳解

核心觀念

三維陣列可依不同維度的先後順序轉成一維記憶體配置:

  • 列為主(row-major):最後一個索引變動最快。
  • 行為主(column-major):第一個索引變動最快。

每個元素占用 44 個位址單位,因此兩個元素的位址差除以 44,就是它們在一維序列中的元素位置差。

解題方法

已知 A[0][1][2]A[0][1][2] 位於 20402040,A[1][4][5]A[1][4][5] 位於 23402340。兩者的位址差為

2340−2040=3002340-2040=300

換算成元素位置差:

3004=75\frac{300}{4}=75

設陣列維度為 [3][6][8][3][6][8],各索引從 00 開始。

假設為列為主:

列為主的位置偏移量公式為

offset⁡(A[i][j][k])=i(6)(8)+j(8)+k\operatorname{offset}(A[i][j][k])=i(6)(8)+j(8)+k

所以 A[0][1][2]A[0][1][2] 與 A[1][4][5]A[1][4][5] 的位置偏移量分別為

0(48)+1(8)+2=100(48)+1(8)+2=10
🔒

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

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

免費註冊

第 三 題20 分

假設 GG 為一個無方向連通加權圖(Undirected connected weighted graph),包含五個節點:AA、BB、CC、DD、EE。各節點間相連情形如下,邊權(邊的權重)為正整數,代表邊的成本。

  • AA 與 BB 相連,邊權為 1616。
  • AA 與 CC 相連,邊權為 1818。
  • AA 與 DD 相連,邊權為 1414。
  • BB 與 CC 相連,邊權為 1515。
  • CC 與 DD 相連,邊權為 1313。
  • DD 與 EE 相連,邊權為 1212。
  • CC 與 EE 相連,邊權為 1717。

請使用 Sollin’s 演算法,寫出最終形成的最小成本擴展樹的邊集合與總成本,請寫出每一步的演算法與該步驟形成的擴展樹。每一合併過程,列出選中的邊與合併的組成(component)。(20 分)

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

這一題的完整詳解

核心觀念

Sollin’s 演算法又稱 Borůvka 演算法,用來求加權連通圖的最小成本擴展樹。演算法每一輪都讓每個連通分量各自選取一條權重最小、通往其他分量的邊,再合併這些分量;重複進行,直到所有節點都屬於同一分量。

選出的邊必須連接不同分量,否則加入該邊會形成環。各分量若選到同一條邊,該邊只加入一次。

解題方法

圖中有 55 個節點及 77 條邊。先以每個節點各自作為一個分量,逐輪找出各分量最便宜的外連邊,加入後合併分量。

第 0 輪:初始分量

{A},{B},{C},{D},{E}\{A\},\quad \{B\},\quad \{C\},\quad \{D\},\quad \{E\}

第 1 輪:各分量選擇最小外連邊

  • {A}\{A\}:連出去的邊權為 16,18,1416,18,14,選 A−D(14)A-D(14)。
  • {B}\{B\}:連出去的邊權為 16,1516,15,選 B−C(15)B-C(15)。
  • {C}\{C\}:連出去的邊權為 18,15,13,1718,15,13,17,選 C−D(13)C-D(13)。
🔒

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

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

免費註冊

第 四 題20 分

根據下列的虛擬碼,若 n=21n=21,則傳回的答案為何?請說明。其中 floor()floor() 為數學上的地板函數(floor function)。

function splitSum(n: integer) returns integer     if n≤1n \leq 1 then<br>       return 11<br>     a←floor(n/2)a \leftarrow floor(n/2)<br>     b←floor(n/3)b \leftarrow floor(n/3)<br>     return splitSum(aa) + splitSum(bb)<br>

(20 分)

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

這一題的完整詳解

核心觀念

本題考遞迴函數的執行與遞迴樹計數。當 n>1n>1 時,函數會遞迴計算 floor(n/2)floor(n/2) 與 floor(n/3)floor(n/3) 的結果,再將兩者相加;當 n≤1n\leq 1 時,回傳 11,這是遞迴的終止條件。

解題方法

由 n=21n=21 開始,依照程式逐層展開;每個葉節點都是 n≤1n\leq 1 的呼叫,回傳值為 11。

🔒

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

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

免費註冊

第 五 題10 分

下列虛擬碼是利用某演算法對陣列 AA 的元素進行處理,請說明該法是進行何種處理,並請寫出其名稱和在最壞情況下時間複雜度為何?(10 分)

若陣列 A=[29,10,14,37,13]A=[29, 10, 14, 37, 13],請寫出該虛擬碼的處理過程:請列出陣列在每一輪(每次外層迴圈執行完後)的內容變化情形。請特別標示出最終結果為何?(10 分)

doingSomething(A) begin     n←n \leftarrow 陣列 AA 的元素個數<br>     for i←0i \leftarrow 0 to n−2n-2 do<br>       theIndex←itheIndex \leftarrow i<br>       for j←i+1j \leftarrow i+1 to n−1n-1 do<br>         if A[j]<A[theIndex]A[j] < A[theIndex] then<br>           theIndex←jtheIndex \leftarrow j<br>         end for<br>         if theIndex≠itheIndex \ne i then<br>           temp=A[i]temp=A[i]<br>           A[i]=A[theIndex]A[i]=A[theIndex]<br>           A[theIndex]=tempA[theIndex]=temp<br>         end if<br>     end for end

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

這一題的完整詳解

核心觀念

此題考查選擇排序法(Selection Sort)。每一輪外層迴圈都在尚未排序的區段 A[i…n−1]A[i \dots n-1] 中,找出最小值的索引 theIndex,再將該值與目前位置 A[i]A[i] 交換。

因此,完成第 ii 輪後,位置 ii 就放入全陣列尚未排序部分的最小元素;已排序區段則由左至右逐步擴大。

解題方法

初始陣列為 [29,10,14,37,13][29, 10, 14, 37, 13],每輪依序比較未排序區段,記錄最小值的位置,完成掃描後再交換。

外層迴圈輪次搜尋範圍找到的最小值交換後的陣列
第 1 輪(i=0i=0)A[0…4]A[0 \dots 4]:[29,10,14,37,13][29,10,14,37,13]1010(索引 1)[10,29,14,37,13][10,29,14,37,13]
第 2 輪(i=1i=1)A[1…4]A[1 \dots 4]:[29,14,37,13][29,14,37,13]1313(索引 4)[10,13,14,37,29][10,13,14,37,29]
第 3 輪(i=2i=2)A[2…4]A[2 \dots 4]:[14,37,29][14,37,29]1414(索引 2)[10,13,14,37,29][10,13,14,37,29]
🔒

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

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

免費註冊

其他考古題