111 關務特考三等 資訊處理 資料結構 考古題詳解

111 年・關務特考・三等・資訊處理
試題代碼 資料結構

第 一 題30 分

請分別以 big O notation 表示下列各個小題的時間複雜度(time complexity):

(每小題 10 分,共 30 分)

(1) 2022nln⁡n+111n1.0012022n\ln n+111n^{1.001}

(2) 2022n32n+111n23n2022n^3 2^n+111n^2 3^n

(3) 2022n!+2n2022n!+2^n

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

這一題的完整詳解

核心觀念

本題考查漸近分析(asymptotic analysis)與 Big O notation。常用規則如下:

  1. 常數倍不影響時間複雜度: O(cf(n))=O(f(n))(c>0)O(c f(n))=O(f(n)) \quad (c>0)

  2. 多項式和式由成長較快的項主導: O(f(n)+g(n))=O(max⁡{f(n),g(n)})O(f(n)+g(n))=O(\max\{f(n),g(n)\})

  3. 指數函數的底數越大,成長越快: 3n≫2n3^n \gg 2^n

  4. 階乘函數成長速度快於固定底數的指數函數: n!≫2nn! \gg 2^n

因此,本題各小題只需比較同一和式中各項的成長速度,保留成長最快的主導項即可。

解題方法

(1)2022nln⁡n+111n1.0012022n\ln n+111n^{1.001}

先忽略常數係數 20222022 與 111111,比較:

nln⁡n與n1.001n\ln n \quad \text{與} \quad n^{1.001}

計算兩者比值:

n1.001nln⁡n=n0.001ln⁡n\frac{n^{1.001}}{n\ln n} =\frac{n^{0.001}}{\ln n}

對於 nn 趨近無限大時,任何正次方 n0.001n^{0.001} 的成長速度都快於 ln⁡n\ln n,因此:

n1.001≫nln⁡nn^{1.001} \gg n\ln n

所以主導項為 111n1.001111n^{1.001}:

2022nln⁡n+111n1.001=Θ(n1.001)2022n\ln n+111n^{1.001}=\Theta(n^{1.001})

因此以 Big O notation 表示為:

O(n1.001)\boxed{O(n^{1.001})}

(2)2022n32n+111n23n2022n^3 2^n+111n^2 3^n

忽略常數係數後,比較:

n32n與n23nn^3 2^n \quad \text{與} \quad n^2 3^n

計算第二項與第一項的比值:

n23nn32n=1n(32)n\frac{n^2 3^n}{n^3 2^n} =\frac{1}{n}\left(\frac{3}{2}\right)^n

由於 (32)n\left(\frac{3}{2}\right)^n 的指數成長速度遠快於 nn,故:

🔒

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

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

免費註冊

第 二 題20 分

遞迴函數(recursive function)起始數值與遞迴關係定義為:

P(0)=P(1)=P(2)=1P(0)=P(1)=P(2)=1 P(n)=P(n−1)−2P(n−2)+P(n−3),∀n≥3P(n)=P(n-1)-2P(n-2)+P(n-3),\quad \forall n\geq 3

(1) 請問 P(n)P(n) 的前 5 個值依序為:1,1,11,1,1,及那兩個數字?(10 分)

(2) 請問 P(6)+P(8)P(6)+P(8) 的值為何?(10 分)

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

這一題的完整詳解

核心觀念

本題考查遞迴函數與線性遞迴關係的計算。已知初始值:

P(0)=P(1)=P(2)=1P(0)=P(1)=P(2)=1

以及遞迴公式:

P(n)=P(n−1)−2P(n−2)+P(n−3),n≥3P(n)=P(n-1)-2P(n-2)+P(n-3),\quad n\geq 3

計算每一項時,必須依序使用前三項數值。

解題方法

先依照 n=3,4,5,…n=3,4,5,\ldots 的順序逐項計算。

當 n=3n=3:

P(3)=P(2)−2P(1)+P(0)=1−2(1)+1=0\begin{aligned} P(3) &=P(2)-2P(1)+P(0)\\ &=1-2(1)+1\\ &=0 \end{aligned}

當 n=4n=4:

P(4)=P(3)−2P(2)+P(1)=0−2(1)+1=−1\begin{aligned} P(4) &=P(3)-2P(2)+P(1)\\ &=0-2(1)+1\\ &=-1 \end{aligned}

因此,前 5 個值為:

P(0),P(1),P(2),P(3),P(4)=1,1,1,0,−1P(0),P(1),P(2),P(3),P(4)=1,1,1,0,-1

所以第(1)題所填的兩個數字為:

0, −1\boxed{0,\ -1}

接著計算第(2)題所需的 P(6)P(6) 與 P(8)P(8)。

當 n=5n=5:

P(5)=P(4)−2P(3)+P(2)=−1−2(0)+1=0\begin{aligned} P(5) &=P(4)-2P(3)+P(2)\\ &=-1-2(0)+1\\ &=0 \end{aligned}

當 n=6n=6:

🔒

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

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

免費註冊

第 三 題20 分

7 個工作的利潤及處理的最後期限如下表所示,並假設每個工作的處理時間均為一個時間單位,請求出最適排程及最大利潤(maximal profit)為何?(20 分)

工作編號1234567
利潤40156020451055
最後期限2423213

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

這一題的完整詳解

核心觀念

本題考「單一機器工作排程問題」(Job Sequencing with Deadlines)。

每個工作具有:

  • 利潤 pip_i
  • 最後期限 did_i
  • 處理時間皆為 11 個時間單位

若工作 ii 被安排在第 tt 個時段,必須滿足:

t≤dit \leq d_i

目標是在每個時段最多安排一個工作的前提下,使總利潤最大。

由於所有工作處理時間均為 11,可使用經典貪婪法:

  1. 依利潤由大到小排列工作。
  2. 依序處理每個工作。
  3. 將工作安排在「不超過其最後期限的最晚空閒時段」。
  4. 若期限內沒有空閒時段,則放棄該工作。

安排在最晚時段的原因,是要保留較前面的時段給期限較早的工作。


解題方法

各工作的資料如下:

工作利潤最後期限
3602
7553
5452
1402
4203
2154
6101

依利潤由大到小的順序為:

3, 7, 5, 1, 4, 2, 63,\ 7,\ 5,\ 1,\ 4,\ 2,\ 6

最大最後期限為 44,因此可使用第 11 至第 44 個時間單位。

逐一安排

處理順序工作利潤期限安排結果
13602安排於時段 2
27553安排於時段 3
35452安排於時段 1
41402時段 1、2 均已滿,放棄
54203時段 1、2、3 均已滿,放棄
62154安排於時段 4
76101時段 1 已滿,放棄

因此各時段的最適排程為:

🔒

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

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

免費註冊

第 四 題10 分

以文本(text)X=“AGTCATTCGATTC”X=\text{“AGTCATTCGATTC”}、樣式(pattern)Y=“ATTC”Y=\text{“ATTC”} 兩字串為例,請問使用暴力比較/窮舉法(exhaustive search)中的樣式前向法(forward)及後向法(backward)各需比較幾次?

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

這一題的完整詳解

核心觀念

本題考查暴力比較法(exhaustive search)在不同比對方向下的字元比較次數。

文本:

X=AGTCATTCGATTCX=\text{AGTCATTCGATTC}

樣式:

Y=ATTCY=\text{ATTC}

其中 ∣X∣=13|X|=13、∣Y∣=4|Y|=4,因此樣式共有

13−4+1=1013-4+1=10

個可能的對齊位置。

  • 樣式前向法(forward):每一個對齊位置都由樣式左端開始,比較 Y[1]、Y[2],…Y[1]、Y[2],\ldots。
  • 樣式後向法(backward):每一個對齊位置都由樣式右端開始,比較 Y[4]、Y[3],…Y[4]、Y[3],\ldots。
  • 比對一旦發生不相等即停止,若全部相等則完成該次比對。

解題方法一:樣式前向法(forward)

樣式 Y=ATTCY=\text{ATTC},由左至右比較。

對齊起點文本子字串比較過程比較次數
1AGTCA=A;G≠T2
2GTCAG≠A1
3TCATT≠A1
4CATTC≠A1
5ATTCA=A;T=T;T=T;C=C4
6TTCGT≠A1
7TCGAT≠A1
8CGATC≠A1
9GATTG≠A1
10ATTCA=A;T=T;T=T;C=C4

因此,前向法的總比較次數為

2+1+1+1+4+1+1+1+1+4=172+1+1+1+4+1+1+1+1+4=17
🔒

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

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

免費註冊

第 五 題20 分

設 m,n∈Nm,n\in\mathbb{N},已知三維陣列(three-dimensional array)A[1:8,1:9,1:4]A[1:8,1:9,1:4],每一個元素占用 2 個儲存單元,並且 A[1,2,1]A[1,2,1] 的儲存地址為 234,A[2,3,1]A[2,3,1] 的儲存地址是 mm,A[2,3,4]A[2,3,4] 的儲存地址為 nn。

(1) 採用列序為主序(row major)方式儲存,則 m、nm、n 分別為何?(10 分)

(2) 採用行序為主序(column major)方式儲存,則 m、nm、n 分別為何?(10 分)

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

這一題的完整詳解

核心觀念

本題考查三維陣列在不同儲存順序下的「位址計算」。

陣列大小為:

  • 第一維:1∼81\sim 8,共 88 個元素
  • 第二維:1∼91\sim 9,共 99 個元素
  • 第三維:1∼41\sim 4,共 44 個元素

每一個元素占用 22 個儲存單元,因此相鄰元素的位址差為 22。

已知基準元素為 A[1,2,1]A[1,2,1],其位址為 234234。計算其他元素時,先求其相對於 A[1,2,1]A[1,2,1] 的元素個數位移,再乘以 22。


(1)列序為主序(Row Major)

儲存規則

列序為主序表示最右側的下標變化最快,因此:

  1. 第三維下標先連續變化;
  2. 第三維走完後,第二維下標增加;
  3. 第二維走完後,第一維下標增加。

對三維陣列 A[i,j,k]A[i,j,k],相對於 A[1,2,1]A[1,2,1] 的元素位移為:

(i−1)×9×4+(j−2)×4+(k−1)(i-1)\times 9\times 4+(j-2)\times 4+(k-1)

其中:

  • 第一維每增加 11,需跨過一整個 9×49\times 4 的區塊;
  • 第二維每增加 11,需跨過 44 個元素;
  • 第三維每增加 11,只移動 11 個元素。

計算 m=A[2,3,1]m=A[2,3,1] 的位址

元素位移為:

(2−1)×9×4+(3−2)×4+(1−1)(2-1)\times 9\times 4+(3-2)\times 4+(1-1) =36+4=40=36+4=40

換算成儲存單元位移:

40×2=8040\times 2=80

因此:

m=234+80=314m=234+80=\boxed{314}

計算 n=A[2,3,4]n=A[2,3,4] 的位址

元素位移為:

(2−1)×9×4+(3−2)×4+(4−1)(2-1)\times 9\times 4+(3-2)\times 4+(4-1) =36+4+3=43=36+4+3=43

換算成儲存單元位移:

43×2=8643\times 2=86

因此:

n=234+86=320n=234+86=\boxed{320}

(2)行序為主序(Column Major)

儲存規則

行序為主序表示最左側的下標變化最快,因此:

  1. 第一維下標先連續變化;
  2. 第一維走完後,第二維下標增加;
  3. 第二維走完後,第三維下標增加。

對三維陣列 A[i,j,k]A[i,j,k],相對於 A[1,2,1]A[1,2,1] 的元素位移為:

🔒

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

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

免費註冊

其他考古題