H
12
14
4
6
I
8
3
15
6
若要節省開發預算,在可到達所有遊樂設施的前提下,所建置的商店街道總長度需越短
越好,請問可以用那一個演算法來選擇應建置的街道?請給演算法名稱並簡單說明該演
算法特性。(5 分)
請計算符合上述小題條件下,所應建置的商店街道總長度,並由小到大列舉所有應該
建置街道的長度。(10 分)
但若要規劃一條路徑,使得遊客可以從任一遊樂設施開始玩,且只要依照該路徑行走,
就可以玩遍9 項遊樂設施並回到起始的遊樂設施,遊客所需走過的商店街道總長度需越
短越好且每項遊樂設施只能到達一次。請問此問題最適合用下列那一種演算法來幫忙找
到所應開發的街道:尤拉迴路(Euler Cycle),漢密爾頓迴路(Hamiltonian Cycle),
旅行商人問題(Traveling Sales Man Problem),最短路徑(例如Dijkstra 演算法),任
兩點最短距離(例如弗洛伊德(Floyd-Warshall)演算法)?(5 分)
T
S
O
P
X
G
U
106年公務人員高等考試三級考試試題
全一張
(背面)
類
科:資訊處理
科
目:資料結構
三、表二列出五種常見的排序演算法,請填滿該表以顯示各排序法在最佳情況、一般情況、最
壞情況下的時間複雜度、所需額外記憶體空間及是否為穩定排序法。快速排序法的各項資
料已事先填入作為範例。((a),(b),(c),(d)各5 分,共20 分)
表二
最佳情況
(best case)
一般情況
(average case)
最壞情況
(worst case)
所需額外空間
是或不是
穩定排序法
(stable sort)
快速排序法
(quicksort)
O(n log n)
O(n log n)
O(n2)
O(n)
不是
(a)泡沫排序法
bubble sort
(b)插入排序法
insertion sort
(c)合併排序法
merge sort
(d)堆積排序法
heap sort
四、矩陣相乘是問題解決中常見的計算,但相乘順序對於計算效能有極大的影響。給定n 個矩陣,
A1, A2, …, An,且任一矩陣Ai 大小為
n
i
i
p
p
p
p
...,
,
,
0
1 ×
−
皆為正整數。A1 × A2 × … × An 實
際計算過程可以是(…((A1 × A2) × A3) × … × An)、(A1 × (A2 × (…× (An-2 × (An-1 × An))…)))、或
其他合理的順序,而因矩陣相乘順序不同,所需要的乘法運算次數可能也會不同。透過動
態規劃(dynamic programming)、二維陣列的應用及遞迴程式,可以找到最少乘法運算次
數的計算順序。方法如下:令
]
,
[
j
i
m
為計算Ai × Ai+1 × … × Aj 時所需最少乘法運算次數,
]
,
[
j
i
m
可以下列遞迴公式表示之:
⎩
⎨
⎧
≥
<
+
+
+
=
−
<
≤
j
i
if
j
i
if
p
p
p
j
k
m
k
i
m
j
i
m
j
k
i
j
k
i
,0
},
]
,1
[
]
,
[
{
min
]
,
[
1
請說明A1 × A2 × … × An 相乘過後的矩陣大小為何?(3 分)
透過上述方法所找到的最少乘法運算次數,應為二維陣列
]
,
[
j
i
m
中的那個元素,亦即i, j
應分別為何?(3 分)
若n = 4 且
4
3
2
1
0
,
,
,
,
p
p
p
p
p
分別為3, 4, 5, 4, 2,請計算並填寫出二維陣列
]
,
[
j
i
m
。(11 分)
承上小題,請說明該四矩陣相乘,A1 × A2 × A3 × A4,最少共需有幾次乘法運算。(3 分)