112 年 國立成功大學資訊管理研究所甲組《計算機概論》
第 1 題15 分
- (15%). True or False: Are each of the following True or False?
1.1. Dynamic programming provides an O(n) solution to the 0/1 knapsack problem, where n is the number of items to be considered.
1.2. K-means clustering is more computationally efficient than hierarchical clustering.
1.3. The depth of a decision tree is related to the number of independent decisions it records.
1.4. Hierarchical clustering is deterministic, but k-means clustering is not.
1.5. When used to find a root of a polynomial, Newton's method converges in O(log(n)) iterations, where n is the degree of the polynomial.
登入後即可作答並保存紀錄。
本題主要考驗演算法、機器學習、資料結構與數值分析等計算機概論基礎概念。
1.1. 動態規劃(Dynamic Programming)解決 0/1 背包問題(0/1 Knapsack Problem)的時間複雜度通常是 ,其中 是物品數量, 是背包的容量。如果背包容量 可以非常大,那麼這個演算法就不是多項式時間。對於 背包問題,若要達到多項式時間,通常需要將問題的參數定義為物品數量 和背包容量 。若將 視為一個數值,則時間複雜度是 。若題目指的是 的解,這通常是不正確的,除非背包容量 非常小,或者問題有特殊限制。
【答案】False
1.2. K-means 是一種分群演算法,其時間複雜度通常為 ,其中 是資料點數量, 是簇的數量, 是特徵的維度。層次式分群(Hierarchical Clustering)的計算複雜度則根據其實現方式而異,例如使用凝聚式(agglomerative)方法,其時間複雜度通常是 或 。相較之下,K-means 通常在處理大型資料集時,計算效率比層次式分群來得高。
【答案】True
第 2 題15 分
- (15%) Multiple choice question: (choose only ONE answer for each question)
2.1 Which of the following is NOT a universal property of reader-writer locks?
(a) Readers can only look at a shared item; writers can also modify it.
(b) If a writer has access to the item, then no other thread also has access.
(c) Any number of readers can read the item at the same time.
(d) A writer waiting for an RW lock will get preference over subsequent read requests.
2.2 Starvation (in relation to threads) refers to:
(a) A thread waiting for a lock indefinitely.
(b) A semaphore that gets locked but the thread never unlocks it after use.
(c) A thread is spawned but never joins the main thread when finished.
(d) A process fails to spawn a new thread because it's hit the maximum number of threads allowed.
2.3 How does x86 assembly store the return value when a function is finished?
(a) The ret instruction stores it in a special retval register.
(b) By convention, it is always in %eax.
(c) It is stored on the stack just above the (%ebp) of the callee.
(d) It is stored on the stack just above all the arguments to the function.
2.4 In IEEE floating point, what would be an effect of allocating more bits to the exponent part by taking them from the fraction part?
(a) You could represent fewer numbers, but they could be much larger.
(b) You could represent the same numbers, but with more decimal places.
(c) You could represent both larger and smaller numbers, but with less precision.
(d) Some previously representable numbers would now round to infinity
登入後即可作答並保存紀錄。
本題主要考驗作業系統中的執行緒同步機制(讀寫鎖、訊號燈)、函數呼叫約定,以及電腦架構中浮點數表示法的基本知識。
2.1. 讀寫鎖(Reader-Writer Locks)的設計目標是在允許多個讀取者同時存取資源的同時,確保寫入者獨佔資源,並避免讀取者和寫入者之間以及多個寫入者之間的衝突。
(a) 這是讀寫鎖的基本區別:讀取者只能讀取,寫入者可以讀取和修改。這是正確的。
(b) 這是讀寫鎖的核心特性:當一個寫入者持有鎖時,任何其他執行緒(包括讀取者和寫入者)都不能存取該資源。這是正確的。
(c) 這是讀寫鎖的另一個核心特性:多個讀取者可以同時存取資源,只要沒有寫入者持有鎖。這是正確的。
(d) 關於寫入者等待時是否獲得優先權,這取決於讀寫鎖的具體實現。有些實現會優先處理寫入者請求,以避免寫入者飢餓(starvation);但這並非「通用」屬性,有些實現可能優先處理讀取者,或者採用公平策略。因此,這不是一個絕對的通用屬性。
【答案】(d)
2.2. 執行緒飢餓(Thread Starvation)是指一個或多個執行緒因為系統資源分配不當,而長時間無法獲得執行所需的資源(例如 CPU 時間、鎖等),導致它們無法繼續執行或完成任務。
(a) 這是飢餓的典型定義:一個執行緒因為某些原因(例如優先權低、鎖的公平性問題)而無法獲得所需的鎖,並且永遠等待下去。
(b) 訊號燈(semaphore)被鎖住但執行緒未釋放,這是一種錯誤的使用方式,可能導致死鎖(deadlock)或資源洩漏,但不直接定義為飢餓。
(c) 執行緒被產生但未與主執行緒合併,這描述的是執行緒的生命週期管理問題,而非飢餓。
(d) 處理序無法產生新執行緒是因為達到最大數量限制,這是資源限制的問題,而非飢餓。
【答案】(a)
第 3 題20 分
- (20%) In this problem we consider properties of floating point operations. For each property state whether it is true or
false. If false, give a counterexample as a (possibly negative) power of 2 within the range of precision for the variables.
We assume that the variables on an x86_64 architecture are declared as follows
float x,y,z;
double d,e;
and initialized to some unknown value different from NaN, +1, and-1. We have given the first answer as an example.
(x + y) + z == x + (y + z)
If x > 0 then x/2>0
(x + y) * z = xz+yz
If x >= y and z <= 0 then x * z <= y * z
If x > y then (double) x > (double) y
If d > e then (float) d > (float) e
x+1> x
登入後即可作答並保存紀錄。
核心觀念
本題探討 IEEE‑754 標準在 x86_64 平台上 浮點數的四捨五入、溢位、次標準化、型別轉換 等特性對代數恆等式與不等式的影響。
- 浮點四則運算:每一次運算都會先以無限精度算得結果,再依目標格式(
float24 位有效位、double53 位有效位)四捨五入至最近可表示的值。 - 次標準化 (subnormal):在
float中最小正值為 ,在double中最小正值為 。除以 2 可能導致 向零捨去 成為 ,破壞正向性。 - 溢位:當結果超過最大正規數時會產生 ,而 的比較結果會使原本的代數恆等式失效。
- 型別升格 / 降格:
float → double為精確轉換(所有float可被double完整表示),double → float可能產生捨入,可能改變大小關係。
解題方法
對每一個敘述,以 「是否必然成立」 為判斷依據。若可能失真,必須給出一個在變數允許範圍內的 2 的冪 作為反例;若永遠成立,直接說明其根據的 IEEE‑754 性質。
下面列出每一條敘述的判斷與具體反例(均以十進位表示的 2 的冪說明,實際程式碼中直接寫 float x = 0x1.0p30f; 之類的字面值即可)。
各項敘述分析
| # | 敘述 | 真偽 | 若為 False,給出反例 (2 的冪) |
|---|---|---|---|
| 1 | False | 取 float:<br> ,,。<br>左側: → 。<br>右側: 於 float 失去 ,結果 ,再加 得 。<br>故左側為 、右側為 。 | |
| 2 | 若 則 | False | float 最小正次標準化數 。除以 2 得 (向零捨去),不大於 。 |
| 3 | False | float:<br>,,。<br>左側: 產生溢位 → ,再乘 仍為 。<br>右側:,相加得到 (有限),不等於 。 |
第 4 題15 分
- Short Answer (15%)
a) Suppose we have the following array:
8 15 3 1 14 23 6 10
We run a sorting algorithm on it, and the algorithm prints the updated array after each change. If at some
point it prints the following, which algorithm is it? (3%)
1 3 8 15 6 10 14 23
b) Suppose we have a general tree and we want to print it layer by layer. That is, print the root node at first,
follow by all nodes at depth 1, then all nodes at depth 2. What strategy should we use? (2%)
c) Suppose a CPU uses 8 bytes for its memory addresses. How many bytes of memory can it address? (2%)
d) Suppose you are asked to develop a text editor and you want to implement an "undo" feature. What data
structure should you use in this case? (2%)
e) Write the 1-byte hex number A7 in binary, in unsigned decimal number, and in signed decimal number.
(3%)
f) Suppose we have an array that is mostly sorted. Would insertion sort or selection sort be better, or would
they have the same performance to obtain a totally sorted array? Why? (3%)
登入後即可作答並保存紀錄。
4. Short Answer (15%) 試題詳解
子題 (a)
核心觀念
- 常見排序演算法的中間狀態特徵:
- 合併排序法(Merge Sort):採用分治法(Divide and Conquer),將陣列切分為子陣列各自排序後再合併。在由長度為 的子陣列合併至長度為 的子陣列階段,會呈現相鄰區間各自排序完成的特徵。
- 插入排序法(Insertion Sort):前 個元素已完全排序,但後方其餘元素保持原陣列順序完全不動。
- 選擇排序法(Selection Sort):前 個元素放置全陣列最小的 個數(或後方放最大的數),且全局已就定位。
- 快速排序法(Quick Sort):至少有一個基準點(Pivot)落在其最終正確索引位置,且其左側元素皆不大於它、右側皆不小於它。
解題方法
- 觀察初始陣列與中間狀態陣列:
- 原始陣列:
[8, 15, 3, 1, 14, 23, 6, 10](長度 ) - 中間陣列:
[1, 3, 8, 15, 6, 10, 14, 23]
- 原始陣列:
- 分析區塊特徵:
- 將中間陣列以 個元素為一組進行觀察:
- 前半段
[1, 3, 8, 15]:剛好是原始陣列前半段[8, 15, 3, 1]由小到大排序的結果。 - 後半段
[6, 10, 14, 23]:剛好是原始陣列後半段[14, 23, 6, 10]由小到大排序的結果。
- 前半段
- 這正是 合併排序法(Merge Sort) 在完成左半部子陣列與右半部子陣列各自的排序(即子問題已解決),準備進行最後一次雙向合併(2-way merge)前的典型中間狀態。
- 將中間陣列以 個元素為一組進行觀察:
解題技巧
- 排除法驗證:
- 若為 Insertion Sort:原陣列第 5 個數是 14,若排到第 5 個數,後方的
[23, 6, 10]應維持原始相對位置,但中間狀態後方卻已變動為[6, 10, 14, 23],顯非插入排序。 - 若為 Selection Sort:全陣列最小的數依序為 1, 3, 6, 8, 10, 14, 15, 23。中間狀態前 4 個數為
1, 3, 8, 15,並非全局最小的前 4 個數(6 比 8、15 小卻在後方),顯非選擇排序。 - 若為 Quick Sort:若 Pivot 為 15,右邊有比 15 小的數(6, 10, 14),違反分割性。
- 若為 Insertion Sort:原陣列第 5 個數是 14,若排到第 5 個數,後方的
- 因此該特徵為標準的兩路 Merge Sort。
【答案】
Merge Sort(合併排序法)
子題 (b)
核心觀念
- 樹的走訪策略(Tree Traversal Strategies):
- 廣度優先搜尋(Breadth-First Search, BFS) / 階層式走訪(Level-Order Traversal):由根節點開始,依深度(Depth)由小到大、逐層由左至右訪問所有節點。
- 實作所使用的資料結構:先進先出(FIFO)的 佇列(Queue)。
解題方法
- 題目要求逐層印出節點(Depth 0 Depth 1 Depth 2 ),此走訪順序在演算法與資料結構中定義為 Level-Order Traversal(階層走訪)或 Breadth-First Search (BFS)(廣度優先搜尋)。
- 走訪流程:
- 建立一個佇列 ,將根節點放入 。
- 當 不為空時,自前端取出一個節點並印出。
- 依序將該節點的所有子節點加入 的後端。
- 重複步驟 2 與 3,直到所有節點走訪完畢。
【答案】
Breadth-First Search (BFS) 或 Level-Order Traversal(使用 Queue 佇列實作)
子題 (c)
核心觀念
- 記憶體定址能力(Memory Addressing Capability):
- 若記憶體以位元組為定址單位(Byte-addressable),位址匯流排或指標寬度為 個位元組(Byte),則位址線位元數為:
- 個位元的位址空間最多可產生 個相異位址,每個位址對應 1 Byte 的記憶體空間。
- 總可定址記憶體容量公式:
- 若記憶體以位元組為定址單位(Byte-addressable),位址匯流排或指標寬度為 個位元組(Byte),則位址線位元數為:
解題方法
- 計算位址位元數:
- 計算可定址之位元組總數:
- 單位換算:
- (Exabyte)
- 因此:
For the following algorithms, express the running time using big- notation and briefly explain your answer. (15%, 5% each)
第 5-(a) 題5 分
Algorithm
while
for to do
登入後即可作答並保存紀錄。
核心觀念
本題考查巢狀迴圈的執行次數。總時間取決於內層迴圈執行次數的總和,而不是只看兩層迴圈的外觀。題目中的 print(j) 每次執行皆視為 。
解題方法
外層變數 從 開始,每次增加 ,因此依序取 ,直到 。令外層迴圈執行 次,則第 次執行時,,其中 。
內層迴圈的 從 執行至 ,包含兩端,因此執行 次。代入 ,第 次外層迴圈的內層執行次數為
將各次執行次數加總:
第 5-(b) 題5 分
Algorithm
while
while
登入後即可作答並保存紀錄。
核心觀念
本題考查循序執行的兩個迴圈,其總執行時間如何合併。若兩段程式依序執行,總時間是各段時間相加:
在 Big- 表示法中,保留增長較快的主導項即可。
解題方法
第一個迴圈:每次增加 5
i 從 1 開始,每次加 5,依序取值 ,直到 。執行次數約為 ,因此:
第一個迴圈結束時, 約為 的量級,且只比 大不到 5。
第二個迴圈:每次除以 2
第 5-(c) 題5 分
Algorithm
while
for to do
登入後即可作答並保存紀錄。
核心觀念
本題考查「外層迴圈每次將變數加倍、內層工作量隨外層變數增加」的總執行時間。應將每輪內層迴圈的工作量加總,而不能只用外層迴圈的次數判斷。
解題方法
外層變數 依序取值 ,直到 停止。每一輪內層迴圈執行 次,因此總工作量為:
停止條件表示 ,所以:
總工作量與 成正比,因此時間複雜度為 ,以大 表示為 。
關鍵程式碼與複雜度
Write exactly one letter that best matches each item in the table below. No letter should be used more than once. (20%, 2% each)
(A) Optimization
(B) Undirected graph
(C) Expected running time
(D) Mutability
(E)
(F) Local optima
(G) Induction
(H) Upper bound
(I) Specification
(J)
(K) Inheritance
(L) Unit testing
(M) Normalization
(N) Lower bound
(O) Linkage criterion
(P)
(Q) Backtracking
(R) Standard deviation
(S) Divide and conquer
(T) Approximation
第 6-(a) 題2 分
Feature vector: ____
登入後即可作答並保存紀錄。
核心觀念
特徵向量(feature vector)是用一組數值表示某個資料對象的多個特徵。不同特徵的尺度可能差很多,例如一個特徵的範圍是 到 ,另一個卻是數千;若直接比較或計算距離,尺度較大的特徵就可能主導結果。因此,分析特徵向量時常先做正規化,讓各特徵落在可比較的尺度上。
解題方法
圖中表格的第一個項目是「Feature vector」,選項包括正規化(Normalization)、標準差(Standard deviation)及不同的演算法、複雜度與程式設計概念。判斷其最直接的搭配,是特徵向量常需經過正規化,以便比較各維度的數值。
選項分析
- (A) Optimization:最佳化是尋找較佳解的過程,不是特徵向量的直接對應概念。
- (B) Undirected graph:無向圖是圖論中的結構,與特徵向量無直接對應。
- (C) Expected running time:期望執行時間是演算法分析概念,不是特徵向量的處理方式。
- (D) Mutability:可變性描述物件能否被修改,與特徵向量的尺度處理無關。
- (E) :常數時間複雜度,不是特徵向量的定義或常見處理。
- (F) Local optima:區域最佳解是最佳化問題中的概念,不是特徵向量的直接對應。
- (G) Induction:歸納法常用於證明,不是特徵向量的處理方式。
- (H) Upper bound:上界是分析演算法成長率的概念,與特徵向量無直接關聯。
第 6-(b) 題2 分
Hierarchical clustering: ____
登入後即可作答並保存紀錄。
核心觀念
階層式分群會逐步合併群集,或由大群集逐步拆分。合併式階層分群需要衡量兩個群集之間的距離;用來定義這個距離的方法稱為連結準則,例如單一連結、完全連結與平均連結。
解題方法
原卷第 6 題要求每格填一個字母,且字母不得重複;表格中的第 (b) 項是「Hierarchical clustering」,選項中有「Linkage criterion」。階層式分群以連結準則衡量群集間距離,因此填入該選項。
選項分析
- A. Optimization(最佳化):是尋找目標函數較佳解的概念,並非階層式分群的直接配對。
- B. Undirected graph(無向圖):描述邊沒有方向的圖,並非分群衡量群集距離的方法。
- C. Expected running time(期望執行時間):分析隨機情況下演算法的平均效能,與階層式分群的核心配對不同。
- D. Mutability(可變性):指資料或物件建立後能否改變,不是分群概念。
- E. :表示常數時間複雜度,與群集間距離定義無關。
- F. Local optima(局部最佳解):指在局部範圍內無法再改善的解,並非階層式分群的配對概念。
- G. Induction(歸納法):常用於數學證明,並非分群準則。
- H. Upper bound(上界):描述上限或複雜度界線,不是群集距離的定義。
第 6-(c) 題2 分
Depth first search: ____
登入後即可作答並保存紀錄。
核心觀念
深度優先搜尋(DFS)會沿著一條路徑盡可能深入;走到無法繼續時,便退回前一個分岔點,改走尚未探索的路徑。這種「深入探索、無路可走時退回」的過程,對應選項 Backtracking(回溯)。
解題方法
圖中第 6 題表格的題目項目包含「Depth first search」,選項清單則包含 Q. Backtracking。判斷時抓住 DFS 的核心流程:沿路深入,遇到死路就退回,因此填入 Q。
選項分析
- A. Optimization:指最佳化問題,目標是找出最佳解;不是 DFS 的搜尋策略。
- B. Undirected graph:指無向圖;DFS 可用於無向圖,也可用於有向圖,並非 DFS 的專屬配對。
- C. Expected running time:指期望執行時間;不是 DFS 的核心概念。
- D. Mutability:指資料是否可變動,屬於程式語言或資料性質。
- E. :代表常數時間複雜度,不是 DFS 的策略名稱。
- F. Local optima:指局部最佳解,常見於最佳化問題。
- G. Induction:指數學歸納法,是證明方法。
- H. Upper bound:指上界;不是 DFS 的搜尋方式。
第 6-(d) 題2 分
Greedy algorithm: ____
登入後即可作答並保存紀錄。
核心觀念
貪婪演算法在每一步都選擇當下看來最好的選擇,也就是局部最佳選擇。若問題具備適合的結構,這些局部選擇能導向全域最佳解;但貪婪策略本身不保證所有問題都能得到全域最佳解。
解題方法
圖中第 6 題的表格將「Greedy algorithm」列為第 (d) 項,待配對選項包含「Local optima」。依照貪婪演算法每一步採取局部最佳選擇的特性,(d) 應配對「Local optima」的代號 F。
選項分析
- A. Optimization(最佳化):指尋找最佳解的目標或過程,不是貪婪演算法每一步採用的選擇原則。
- B. Undirected graph(無向圖):圖的邊沒有方向,與貪婪演算法的核心定義無關。
- C. Expected running time(期望執行時間):描述演算法執行時間的期望值,不是貪婪策略。
- D. Mutability(可變性):指資料是否能在建立後修改,與貪婪選擇無關。
- E. :表示常數時間複雜度,不是貪婪演算法的定義。
- F. Local optima(局部最佳解):符合貪婪演算法每一步選取當下最佳選擇的特性,為正確配對。
- G. Induction(數學歸納法):是一種證明方法,不是貪婪演算法的選擇原則。
- H. Upper bound(上界):表示某量不超過的界限,常用於分析演算法,不是貪婪策略。
- I. Specification(規格):描述系統或程式應符合的需求,與貪婪選擇無關。
第 6-(e) 題2 分
Data abstraction: ____
登入後即可作答並保存紀錄。
核心觀念
資料抽象是把資料的使用方式與內部實作分開:使用者透過介面或規格知道有哪些操作及其行為,不必知道資料如何儲存或操作如何實作。因此,本題要找的是最能代表「說明抽象資料可如何使用」的選項。
解題方法
圖中第 6 題的 (e) 項是 Data abstraction,選項包含 I. Specification、K. Inheritance 等。判斷時,將資料抽象理解為以規格描述操作與行為、隱藏實作細節,對應到 Specification。
選項分析
- A. Optimization:指改善解的品質或效率,不是描述資料的使用介面。
- B. Undirected graph:指邊沒有方向的圖形結構。
- C. Expected running time:指演算法執行時間的期望值。
- D. Mutability:指物件或資料是否可被修改。
- E. :指常數時間複雜度。
- F. Local optima:指局部範圍內的最佳解。
- G. Induction:指數學歸納法,一種證明方法。
- H. Upper bound:指上界,常用於描述成本或複雜度的限制。
第 6-(f) 題2 分
Big- notation: ____
登入後即可作答並保存紀錄。
核心觀念
Big- 記號描述函數的漸近上界。若存在常數 與 ,使得對所有 都有 ,則 。因此,Big- notation 對應選項 Upper bound。
解題方法
依原卷圖,第 6 題是配對題,(f) 欄的項目是「Big-O notation」;選項中 H 為 Upper bound。將漸近符號的定義與選項對照,應填 H。
選項分析
- A Optimization:最佳化是尋找較佳解或較佳效率,不是 Big- 的定義。
- B Undirected graph:無向圖是圖論結構,與漸近上界無關。
- C Expected running time:期望執行時間是隨機演算法的平均效能概念,不等同 Big-。
- D Mutability:可變性描述資料是否能被修改,與複雜度記號無關。
- E :常數時間是特定時間複雜度;Big- notation 本身泛指漸近上界的記法。
- F Local optima:局部最佳解是最佳化問題中的解,不是 Big- 的意義。
- G Induction:歸納法是數學證明方法,與 Big- 定義不同。
- H Upper bound:正確。Big- 表示漸近上界。
第 6-(g) 題2 分
Polymorphism: ____
登入後即可作答並保存紀錄。
核心觀念
多型(polymorphism)是物件導向程式設計的概念:不同類別的物件可以透過共同介面接受相同操作,並依各自的類別呈現不同的行為。多型常透過繼承與子類別覆寫方法來實現,因此在本題選項中,最適合對應「繼承」。
解題方法
圖中第 6 題的配對表列出「Polymorphism」;選項包含「K. Inheritance」。依物件導向的常見關係,子類別繼承共同介面或方法後,可覆寫方法,讓同一操作依物件類型產生不同結果,故選 K。
選項分析
- A. Optimization:指最佳化問題或改善解的過程,與多型無關。
- B. Undirected graph:指邊沒有方向的圖,與物件導向多型無關。
- C. Expected running time:指期望執行時間,屬於演算法分析概念。
- D. Mutability:指物件建立後狀態是否可變,與多型不同。
- E. :指常數時間複雜度,不是多型的概念。
- F. Local optima:指局部最佳解,屬於最佳化問題。
- G. Induction:指數學歸納法,常用於證明命題或遞迴性質。
- H. Upper bound:指上界,常用於複雜度分析。
第 6-(h) 題2 分
Recursion: ____
登入後即可作答並保存紀錄。
核心觀念
遞迴是函式或程序以較小的輸入呼叫自身;數學歸納法則常用來證明遞迴程序對所有合法輸入都正確。兩者都依據「基礎情況」與「由較小情況推進」的結構,因此最適合配對的是 Induction(歸納法)。
解題方法
圖中第 6 題的配對表列出「Recursion: (h)」,下方選項包含 G. Induction。判斷時,將遞迴的基礎情況對應到歸納證明的基底,再將遞迴呼叫的較小問題對應到歸納步驟,即可選出 G。
選項分析
- A. Optimization(最佳化):尋找較佳解,並非遞迴的證明方法。
- B. Undirected graph(無向圖):圖中邊沒有方向,與遞迴無直接對應。
- C. Expected running time(期望執行時間):衡量隨機演算法的平均效能,不是遞迴的配對概念。
- D. Mutability(可變性):指資料能否在建立後改變,與遞迴無直接對應。
- E. :常數時間複雜度,不能概括遞迴的定義。
- F. Local optima(局部最佳解):最佳化問題中的局部解,與遞迴無直接對應。
- G. Induction(歸納法):可依基礎情況與歸納步驟證明遞迴程序的正確性,正確。
- H. Upper bound(上界):描述量的上限,不是遞迴的對應概念。
第 6-(i) 題2 分
Hashing: ____
登入後即可作答並保存紀錄。
核心觀念
本題是 10 個詞(a 到 j)對應 20 個選項(A 到 T)的配對題,每個字母只能用一次,要找「最貼切」的選項。第 (i) 格是 Hashing(雜湊)。
雜湊的分析特色是:雜湊函數把鍵分散到各個桶,若函數良好,碰撞次數的期望值很小,所以查詢、插入、刪除的期望(平均)執行時間為常數;但最壞情況(所有鍵落入同一個桶)可退化為 。因此談雜湊的效能時,慣用語是「expected running time」,而不是單純的最壞情況。
解題方法
先看整張表的配對,其餘各格的最佳對應大致是:
| 項目 | 最貼切的選項 |
|---|---|
| (b) Hierarchical clustering | (O) Linkage criterion |
| (f) Big-O notation | (H) Upper bound |
| (g) Polymorphism | (K) Inheritance |
| (h) Recursion | (G) Induction |
| (j) Merge sort | (S) Divide and conquer |
| (e) Data abstraction | (I) Specification |
這些項目都以「概念對概念」配對,所以 Big-O 配上界,Merge sort 配分治,都不需要用到 、、 這類具體複雜度。
選項中的 、、 與 Lower bound、Upper bound 屬於同一族,較像是刻意放入的干擾項。
第 6-(j) 題2 分
Merge sort: ____
登入後即可作答並保存紀錄。
核心觀念
合併排序(Merge sort)使用「分治法」:將資料分成較小的子問題,遞迴排序各部分,再合併成有序結果。因此本題配對的是 Divide and conquer。
解題方法
原卷表格的第 (j) 項是「Merge sort」,選項中 S 是「Divide and conquer」。合併排序先將序列分半,分別排序後再合併,符合分治法的「分割、處理、合併」步驟。
選項分析
- A. Optimization:最佳化問題的求解目標,不是合併排序的核心策略。
- B. Undirected graph:圖的種類,與排序方法無關。
- C. Expected running time:期望執行時間的分析概念,不是排序策略。
- D. Mutability:資料是否可變的性質,與合併排序的設計無關。
- E. :常數時間,不是合併排序的時間複雜度。
- F. Local optima:局部最佳解,常見於最佳化問題,並非合併排序策略。
- G. Induction:數學歸納法,可用於證明演算法正確性,但不是此排序法的核心策略。
- H. Upper bound:上界,是分析概念,不是排序策略。
- I. Specification:規格描述,與合併排序的設計方法不同。