111 關務特考三等 資訊處理 資料結構 考古題詳解
第 一 題30 分
請分別以 big O notation 表示下列各個小題的時間複雜度(time complexity):
(每小題 10 分,共 30 分)
(1)
(2)
(3)
登入後即可作答並保存紀錄。
核心觀念
本題考查漸近分析(asymptotic analysis)與 Big O notation。常用規則如下:
-
常數倍不影響時間複雜度:
-
多項式和式由成長較快的項主導:
-
指數函數的底數越大,成長越快:
-
階乘函數成長速度快於固定底數的指數函數:
因此,本題各小題只需比較同一和式中各項的成長速度,保留成長最快的主導項即可。
解題方法
(1)
先忽略常數係數 與 ,比較:
計算兩者比值:
對於 趨近無限大時,任何正次方 的成長速度都快於 ,因此:
所以主導項為 :
因此以 Big O notation 表示為:
(2)
忽略常數係數後,比較:
計算第二項與第一項的比值:
由於 的指數成長速度遠快於 ,故:
第 二 題20 分
遞迴函數(recursive function)起始數值與遞迴關係定義為:
(1) 請問 的前 5 個值依序為:,及那兩個數字?(10 分)
(2) 請問 的值為何?(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查遞迴函數與線性遞迴關係的計算。已知初始值:
以及遞迴公式:
計算每一項時,必須依序使用前三項數值。
解題方法
先依照 的順序逐項計算。
當 :
當 :
因此,前 5 個值為:
所以第(1)題所填的兩個數字為:
接著計算第(2)題所需的 與 。
當 :
當 :
第 三 題20 分
7 個工作的利潤及處理的最後期限如下表所示,並假設每個工作的處理時間均為一個時間單位,請求出最適排程及最大利潤(maximal profit)為何?(20 分)
| 工作編號 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 利潤 | 40 | 15 | 60 | 20 | 45 | 10 | 55 |
| 最後期限 | 2 | 4 | 2 | 3 | 2 | 1 | 3 |
登入後即可作答並保存紀錄。
核心觀念
本題考「單一機器工作排程問題」(Job Sequencing with Deadlines)。
每個工作具有:
- 利潤
- 最後期限
- 處理時間皆為 個時間單位
若工作 被安排在第 個時段,必須滿足:
目標是在每個時段最多安排一個工作的前提下,使總利潤最大。
由於所有工作處理時間均為 ,可使用經典貪婪法:
- 依利潤由大到小排列工作。
- 依序處理每個工作。
- 將工作安排在「不超過其最後期限的最晚空閒時段」。
- 若期限內沒有空閒時段,則放棄該工作。
安排在最晚時段的原因,是要保留較前面的時段給期限較早的工作。
解題方法
各工作的資料如下:
| 工作 | 利潤 | 最後期限 |
|---|---|---|
| 3 | 60 | 2 |
| 7 | 55 | 3 |
| 5 | 45 | 2 |
| 1 | 40 | 2 |
| 4 | 20 | 3 |
| 2 | 15 | 4 |
| 6 | 10 | 1 |
依利潤由大到小的順序為:
最大最後期限為 ,因此可使用第 至第 個時間單位。
逐一安排
| 處理順序 | 工作 | 利潤 | 期限 | 安排結果 |
|---|---|---|---|---|
| 1 | 3 | 60 | 2 | 安排於時段 2 |
| 2 | 7 | 55 | 3 | 安排於時段 3 |
| 3 | 5 | 45 | 2 | 安排於時段 1 |
| 4 | 1 | 40 | 2 | 時段 1、2 均已滿,放棄 |
| 5 | 4 | 20 | 3 | 時段 1、2、3 均已滿,放棄 |
| 6 | 2 | 15 | 4 | 安排於時段 4 |
| 7 | 6 | 10 | 1 | 時段 1 已滿,放棄 |
因此各時段的最適排程為:
第 四 題10 分
以文本(text)、樣式(pattern) 兩字串為例,請問使用暴力比較/窮舉法(exhaustive search)中的樣式前向法(forward)及後向法(backward)各需比較幾次?
登入後即可作答並保存紀錄。
核心觀念
本題考查暴力比較法(exhaustive search)在不同比對方向下的字元比較次數。
文本:
樣式:
其中 、,因此樣式共有
個可能的對齊位置。
- 樣式前向法(forward):每一個對齊位置都由樣式左端開始,比較 。
- 樣式後向法(backward):每一個對齊位置都由樣式右端開始,比較 。
- 比對一旦發生不相等即停止,若全部相等則完成該次比對。
解題方法一:樣式前向法(forward)
樣式 ,由左至右比較。
| 對齊起點 | 文本子字串 | 比較過程 | 比較次數 |
|---|---|---|---|
| 1 | AGTC | A=A;G≠T | 2 |
| 2 | GTCA | G≠A | 1 |
| 3 | TCAT | T≠A | 1 |
| 4 | CATT | C≠A | 1 |
| 5 | ATTC | A=A;T=T;T=T;C=C | 4 |
| 6 | TTCG | T≠A | 1 |
| 7 | TCGA | T≠A | 1 |
| 8 | CGAT | C≠A | 1 |
| 9 | GATT | G≠A | 1 |
| 10 | ATTC | A=A;T=T;T=T;C=C | 4 |
因此,前向法的總比較次數為
第 五 題20 分
設 ,已知三維陣列(three-dimensional array),每一個元素占用 2 個儲存單元,並且 的儲存地址為 234, 的儲存地址是 , 的儲存地址為 。
(1) 採用列序為主序(row major)方式儲存,則 分別為何?(10 分)
(2) 採用行序為主序(column major)方式儲存,則 分別為何?(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查三維陣列在不同儲存順序下的「位址計算」。
陣列大小為:
- 第一維:,共 個元素
- 第二維:,共 個元素
- 第三維:,共 個元素
每一個元素占用 個儲存單元,因此相鄰元素的位址差為 。
已知基準元素為 ,其位址為 。計算其他元素時,先求其相對於 的元素個數位移,再乘以 。
(1)列序為主序(Row Major)
儲存規則
列序為主序表示最右側的下標變化最快,因此:
- 第三維下標先連續變化;
- 第三維走完後,第二維下標增加;
- 第二維走完後,第一維下標增加。
對三維陣列 ,相對於 的元素位移為:
其中:
- 第一維每增加 ,需跨過一整個 的區塊;
- 第二維每增加 ,需跨過 個元素;
- 第三維每增加 ,只移動 個元素。
計算 的位址
元素位移為:
換算成儲存單元位移:
因此:
計算 的位址
元素位移為:
換算成儲存單元位移:
因此:
(2)行序為主序(Column Major)
儲存規則
行序為主序表示最左側的下標變化最快,因此:
- 第一維下標先連續變化;
- 第一維走完後,第二維下標增加;
- 第二維走完後,第三維下標增加。
對三維陣列 ,相對於 的元素位移為: