109 年 國立中山大學資訊工程學系碩士班甲組《離散數學與演算法》
第 1 題
- Determine the number of integer solutions of , where
(a) , .
(b) , .
登入後即可作答並保存紀錄。
核心觀念
-
非負整數解個數與重複組合(Combinations with Repetition)
對於線性方程 ,若要求其「非負整數解」()的組數,可使用重複組合公式:
-
變數平移與平移轉換(Variable Transformation)
當變數設有下限條件 時,可定義新變數 ,將原式改寫為以非負整數為主的標準形式。 -
排容原理與補集扣除法(Inclusion-Exclusion Principle / Complementary Counting)
當變數設有上限條件(例如 )時,可利用補集概念:
解題方法
(a) 求 且 () 的整數解個數
-
變數轉換:
因為 ,令 (對應 )。
代入原方程式:
-
套用重複組合公式:
此問題轉化為求解 的非負整數解個數:
-
數值計算:
(b) 求 且 、 的整數解個數
-
條件離散化與變數平移:
在整數域中,條件轉換如下:定義非負整數變數:
由於 ,故 。
-
化簡方程式:
第 2 題
- [12%] If p, q are primes, prove that p|q if and only if p = q.
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗離散數學中「數論(Number Theory)」的基本定義與雙向邏輯證明技巧。主要使用的定義如下:
- 質數(Prime Number)之定義:整數 若除了 與 本身之外沒有其他正因數,則稱 為質數。
- 整除(Divisibility)之定義:設 且 。若存在一整數 使得 ,則稱 整除 ,記作 。此時 為 的因數。
- 充要條件(If and Only If, )證明架構:欲證明命題 ,必須分別證明「必要性()」與「充分性()」兩個方向。
解題方法
已知 皆為質數,欲證明 。推導步驟如下:
1. 必要性證明():已知 ,證明
- 由整除之定義,若 ,表示 是 的一個正因數。
- 由質數之定義,已知 為質數,故 的所有正因數集合唯有 。
- 因此, 必屬於該集合,即 或 。
- 再由質數之定義,已知 本身亦為質數,故 (即 )。
第 3 題
- [12%] How many positive integers n divide 99373n + 342246?
登入後即可作答並保存紀錄。
因為
故
第 4 題
- [12%] Let , where and . If , determine .
登入後即可作答並保存紀錄。
由
展開得
比較係數:
第 5 題
- [12%] Find the exponential generating function for the sequence 0!, 1!, 2!, 3!, ....
登入後即可作答並保存紀錄。
核心觀念
-
指數生成函數(Exponential Generating Function, EGF)之定義:
對於一個無窮數列 ,其指數生成函數 定義為:
-
無窮等比級數求和公式(Geometric Series Formula):
當 時,公比為 的無窮等比級數可收斂並表示為閉合型態(Closed Form):
解題方法
步驟一:確定數列之通項
題目給定數列為 ,其通項(一般項)可表示為:
步驟二:代入指數生成函數定義
將通項 代入指數生成函數 之定義式中:
步驟三:項次相消與化簡
由於分子的 與分母的 互相抵消:
第 6 題
- [12%] If , and satisfy the recurrence relation , where and are constants, determine and solve for .
登入後即可作答並保存紀錄。
核心觀念
本題考查**二階常係數齊次線性遞迴關係式(Second-Order Homogeneous Linear Recurrence Relation with Constant Coefficients)**的求解。核心觀念包含以下兩大階段:
- 待定係數求法:利用已知的數列前幾項(初始條件與後續項),代入遞迴關係式建立聯立方程式,解出未知的常數係數 與 。
- 齊次遞迴關係式通解:
- 對於形式為 的遞迴關係式,其**特徵方程式(Characteristic Equation)**為:
- 若特徵方程式具有兩個相異實根 (即判別式 ),則遞迴關係式的**通解(General Solution)**可表示為:
其中 為由初始條件(如 )所決定的常數。
- 對於形式為 的遞迴關係式,其**特徵方程式(Characteristic Equation)**為:
解題方法
第一階段:求解未知係數 與
已知遞迴關係式為 ,且已知前幾項為 。
-
將 代入遞迴式:
代入 :
-
將 代入遞迴式:
代入 及已求得之 :
綜上所述,得常數係數為 、。故遞迴關係式確定為:
第二階段:求解一般項
-
列出特徵方程式:
根據遞迴式 ,其對應之特徵方程式為:
-
求解特徵根:
使用一元二次方程式公式解 :
設兩相異特徵根分別為 與 。 -
寫出通解形式:
第 7 題
- (a) [7%] Please state the quick sort algorithm in detail.
(b) [7%] Please derive the time complexity of quick sort by the method of recurrence relation for the input data size n.
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗考生對分治法(Divide-and-Conquer)代表性排序演算法——**快速排序法(Quick Sort)**的演算法步驟理解與時間複雜度之數學推導能力。
主要涵蓋以下核心觀念與定義:
- 分治法三大步驟:
- 分割(Divide):選擇樞紐碼(Pivot),將陣列切分為小於等於與大於樞紐碼的兩個子陣列。
- 克服(Conquer):遞迴呼叫 Quick Sort 分別處理左右兩個子陣列。
- 合併(Combine):因原位(In-place)排序已完成,無需額外合併操作。
- 時間複雜度遞迴關係式(Recurrence Relation):
- 根據樞紐碼切分位置之不同,建立最差狀況(Worst Case)、最佳狀況(Best Case)與平均狀況(Average Case)之遞迴關係式。
- 遞迴關係式求解方法:
- 代換法 / 反覆展開法(Expansion Method)
- 主定理(Master Theorem)
- 代數變數變換與伸縮連加法(Telescoping Method)
解題方法
(a) 快速排序法(Quick Sort)演算法詳細說明
Quick Sort 是一種基於分治法(Divide-and-Conquer)的原位(In-place)排序演算法。假設輸入陣列為 ,演算法詳細運作機制如下:
1. 演算法三大核心步驟
- Divide(分割):選定一個元素作為樞紐碼 (以末項為例),呼叫
Partition(A, p, r)進行重排,使得重排後存在一索引 :- 對所有 ,
- 對所有 ,
- Conquer(克服):對左子陣列 與右子陣列 遞迴呼叫
QuickSort。 - Combine(結合):子陣列皆完成原位排序,不需執行任何額外動作。
2. 演算法虛擬碼(Pseudocode)
QuickSort(A, p, r)
1. if p < r
2. q = Partition(A, p, r)
3. QuickSort(A, p, q - 1)
4. QuickSort(A, q + 1, r)
Partition(A, p, r)
1. x = A[r] // 選擇最後一個元素為 Pivot
2. i = p - 1 // i 為小於等於 Pivot 之區域邊界
3. for j = p to r - 1
4. if A[j] <= x
5. i = i + 1
6. swap A[i] with A[j]
7. swap A[i + 1] with A[r]
8. return i + 1
(b) 時間複雜度遞迴關係式推導
假設輸入資料大小為 。Partition 步驟需對長度為 的陣列掃描一次,其時間複雜度為 (設比較與移動代價為 ,其中 為常數)。
遞迴關係式的通用型式為:
其中 代表經 Partition 後左子陣列的元素個數()。
1. 最差狀況(Worst Case)推導
- 發生條件:每次選取的樞紐碼皆為目前子陣列的最大值或最小值(例如:輸入資料已完全升冪或降冪排序),導致分割極度不平均,子陣列大小分別為 與 。
- 遞迴關係式:
基本情況(Base Case):。 - 數學推導(反覆展開法 Expansion Method):
因此,最差時間複雜度為 。
2. 最佳狀況(Best Case)推導
- 發生條件:每次選取的樞紐碼恰好將陣列平分為大小幾乎相等的兩半,即 。
- 遞迴關係式:
- 數學推導(主定理 Master Theorem):
對於遞迴式 ,此處 。
計算 。
因為 ,符合主定理第二型(Case 2):
因此,最佳時間複雜度為 。
3. 平均狀況(Average Case)推導
- 發生條件:假設所有可能的分割位置 出現概率皆相等,即各為 。
- 遞迴關係式:
第 8 題
- [12%] Let be a complete m-ary tree of height h. This tree is called a full m-ary tree if all of its leaves are at level h. If T is a full m-ary tree with height 7 and 279,936 leaves, how many internal vertices are there in T?
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗離散領域中**樹狀結構(Tree Structure)**的基本計數定理與定義,主要涵蓋以下核心知識點:
-
滿 元樹(Full -ary Tree)與高度(Height)之定義:
- 一棵 元樹中,若每個內部頂點(Internal Vertex)皆恰有 個子節點,則稱為完整 元樹(Complete -ary Tree)。
- 當所有葉節點(Leaves)皆位於相同的最高階層(Level )時,此樹特稱為滿 元樹(Full -ary Tree)。
- 根據標準定義(如 Rosen 離散數學),根節點(Root)部位於 Level ,高度為 的滿 元樹,其葉節點皆在 Level 。
-
滿 元樹的計數定理:
設 為高度 之滿 元樹:- ** Level 的頂點數**:
- 葉節點總數 :
- 內部頂點總數 :即非葉節點之總和(包含 Level 到 Level ):
- 頂點總數 :,且滿足邊與頂點關係 。
解題方法
根據題意,樹 為一棵高度 且葉節點數 的滿 元樹。解題步驟分為兩步:
步驟一:求出分支度
由滿 元樹的性質可知,位於 Level 的葉節點數量公式為: