113 年 國立成功大學電機工程學系碩士班已組《離散數學》
第 1 題10 分
Let S be the set of all strings in O's and 1's, and define a function as follows: for all strings in , = the number of 1's in . Is one-to-one (bijections)? Yes or No?
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗離散領域中函數性質(Function Properties)的基本概念,特別是單射(One-to-One / Injective)與對射(Bijection / One-to-One Correspondence)的定義:
- 單射(One-to-One / Injection):設 為一函數。若對所有 ,當 時必有 (同義逆否命題:若 則必有 ),則稱 為單射。
- 滿射(Onto / Surjection):若對所有 ,皆存在至少一個 使得 ,則稱 為滿射。
- 對射(Bijection):若函數 同時滿足單射與滿射,則稱 為對射(又稱一對一對應)。
解題方法
題目定義定義域 為由 0 與 1 所構成的所有有限長度字串集合,對應域為整數集 。
函數 的規則為:對任意字串 , 代表字串 中數字 '1' 出現的總個數。
要判斷 是否為單射(One-to-One),只需尋找反例(Counterexample):
只要能找到兩個不同的字串 滿足 ,但經映射後 ,即可證明 不為單射。
推導步驟:
- 取字串 與 。顯然 。
- 計算兩者經由 對應的函數值:
第 2 題10 分
Let and, for and in , define if and only if for all . Is a partially ordered set? Yes or No?
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗**偏序集合(Partially Ordered Set,簡稱 Poset)**的定義與性質驗證。
- 偏序集合(Poset)定義:
設 為一非空集合, 為定義在 上的一個二元關係(Binary Relation)。若 同時滿足以下三個條件,則稱其為偏序集合:- 自反性(Reflexivity):對所有 ,。
- 反對稱性(Antisymmetry):對所有 ,若 且 ,則 。
- 遞移性(Transitivity):對所有 ,若 且 ,則 。
- 逐分量比較關係(Componentwise Order / Product Order):
給定 ,集合 。題目定義的關係 ,即為利用實數標準小於等於關係所建立的逐分量偏序關係。
解題方法
欲判斷 是否為偏序集合,必須針對 中的元素逐一檢驗偏序的三大公理:
-
驗證自反性(Reflexivity):
任取 。
由於每個分量 為實數,依實數標準小於等於關係的自反性可知:
對所有 皆有 成立,根據題目定義即得 。
故關係 滿足自反性。 -
驗證反對稱性(Antisymmetry):
任取 ,並假設 且 。- 由 可得:。
- 由 可得:。
對每一個分量 ,因 滿足 且 ,由實數的反對稱性可推得:
因三個對應分量均相等,故元組 。
故關係 滿足反對稱性。
第 3 題10 分
Let be the set of all two-digit ternary strings; that is, . Consider the poset , where is the bitwise . Let be the set of all factors of 36, and means divisible. Does (isomorphic)? Yes or No?
登入後即可作答並保存紀錄。
核心觀念
- 偏序集(Poset)與偏序同構(Poset Isomorphism):
設 與 為兩個偏序集。若存在一個雙射函數 ,滿足對任意 ,均成立:
則稱偏序集 與 同構,記作 。 - 直積偏序集(Product Poset):
對於偏序集 與 ,其直積 的偏序關係定義為分量逐項(bitwise / component-wise)比較。 - 正整數因數集與算術基本定理:
若正整數 (其中 為相異質因數),則 的所有正因數集合在整除關係 下,同構於直積偏序集 。
解題方法
-
分析偏序集 :
三進位字元集為 ,其具備自然的大小順序 。
長度為 的三進位字串集合 ,偏序關係 為位元逐項比較(bitwise ),即:
因此,偏序集 的結構即為直積偏序集 ,共有 個元素。 -
分析偏序集 :
將 進行質因數分解:。
的所有正因數集合 可表示為:
共有 個因數。
根據整除的定義,對於 與 :
第 4 題10 分
Does the following set R define an equivalence relation on the set {1, 2, 3, 4}? Please choose the right answer from (a)(b)(c)(d).
R = {(1,1), (2,2), (3,3), (4,4), (2,3), (3,2), (2,4), (4,2)}
(a) No, it's not reflexive.
(b) No, it's not symmetric.
(c) No, it's not transitive.
(d) Yes.
登入後即可作答並保存紀錄。
核心觀念
集合 上的二元關係 (binary relation) 若要構成等價關係 (Equivalence Relation),必須同時滿足以下三個條件:
- 自反性 (Reflexivity):對所有 ,均有 。
- 對稱性 (Symmetry):對所有 ,若 ,則必有 。
- 遞移性 (Transitivity):對所有 ,若 且 ,則必有 。
解題方法
給定集合 與二元關係 。我們依序檢驗上述三個性質:
-
檢驗自反性 (Reflexivity):
集合 的元素為 。
檢查對角線數對是否皆屬於 :
因為對所有 皆滿足 ,故 滿足自反性。
-
檢驗對稱性 (Symmetry):
檢查 中每一個數對 顛倒後的數對 是否也在 中:
其餘自反數對 反轉後仍為自身。因此 滿足對稱性。
-
檢驗遞移性 (Transitivity):
尋找是否存在 與 ,但 的反例:- 觀察數對 與 (中間元素為 )。若 滿足遞移性,則必須包含 。然而檢視關係 ,發現 。
第 5 題10 分
How many of the following examples are second-order linear homogeneous recurrence relations with constant coefficients?
The examples are:
(a) 1
(b) 2
(c) 3
(d) 4
(e) 5
登入後即可作答並保存紀錄。
核心觀念
本題考查常係數二階線性齊次遞迴關係(Second-Order Linear Homogeneous Recurrence Relation with Constant Coefficients)的定義與判別。
一個 階常係數線性遞迴關係的一般式為:
欲滿足「常係數二階線性齊次遞迴關係」,必須同時符合以下四項條件:
- 二階(Second-order):遞迴關係中出現的最大下標與最小下標相差恰為 。即包含 項(其係數 ),且不含任何 ()的非零項。
- 線性(Linear):所有 項均為一次方,且各 項之間不得有相乘、平方、開方、超越函數等非線性組合。
- 齊次(Homogeneous):非齊次項(不含未知數序列 的常數項或僅與 有關的函數項)。即移項後每一項均含有 。
- 常係數(Constant Coefficients):乘以各 項的係數 皆為與 無關的常數。
解題方法
將題目給定的 7 個範例逐一整理成標準型態,並依序檢驗「階數」、「線性」、「齊次」、「常係數」四個要件:
-
範例 1:
- 階數:最大下標為 ,最小下標為 ,階數 (二階)。
- 線性: 皆為一次項(線性)。
- 齊次:右式 (齊次)。
- 係數:係數分別為 ,皆為常數(常係數)。
- 結果:符合。
-
範例 2:
- 階數:最小下標為 ,階數 (三階)。
- 結果:不符合(階數錯誤,此為三階)。
-
範例 3:
- 線性:包含 平方項(非線性)。
- 結果:不符合(非線性)。
第 6 題10 分
Early members of the Pythagorean Society defined figurate numbers to be the number of dots in certain geometrical configurations. For example, the first four pentagonal numbers of the following graph are 1, 5, 12, and 22 (as figure below). Let represent the nth pentagonal number, please find .
(a)
(b)
(c)
(d)
(e)
登入後即可作答並保存紀錄。
核心觀念
本題考查離散數學中的**圖形數(Figurate Numbers)與遞迴關係式(Recurrence Relation)**求和推導。
第 個五角數 的圖形遞推特性為:每增加一層(即從第 項擴展至第 項),外圍會新增 3 條邊,每一條邊增加 個點,但其中的 2 個頂點會被重複計算。因此,相較於前一項,點數增量為:
初始條件為 。五角數的一般式可表示為有限級數和:
解題方法
將有限級數和展開拆解計算:
-
級數拆項:
-
化簡級數項:
- 其中的 即為 。
- 其中的 是將常數 2 從 加到 ,總共有 項,故累加結果為 。
-
組合式子:
將上述結果代回,得到:
-
公式驗收化簡(求封閉形式 Closed Form):
代入上式化簡:
此即著名的五角數封閉公式。比對選項表示法,選項 (a) 精確符合未化簡前的求和型式。
選項分析
- (a) :正確
- 代數驗證:,公式完全符合。
- 數值驗證:
第 7 題10 分
Find the value of "increment" after the given program segment is executed (Here i, j, k, and increment are integer variables)
increments : = 0
for i:=1 to 22
for j:= 1 to i
for k:= 1 to j
increment: = increment+1
next k
next j
next i
(a) 2024
(b) 1540
(c) 1771
(d) 5566
(e) 7788
登入後即可作答並保存紀錄。
核心觀念
本題的核心為多重巢狀迴圈(Nested Loops)的執行次數計算,可轉化為離散數學中的級數求和與**組合計數(重複組合/帕斯卡曲棍球棒等式)**問題。
-
巢狀迴圈求和表示:
變數increment的最終值等於最內層程式碼執行的總次數,對應三重累加算式:
-
關鍵公式:
- 等差級數求和公式:
- 曲棍球棒等式(Hockey-stick Identity):
- 重複組合(Combinations with Repetition):
從 種相異物件中可重複選取 個物件的組合數為:
- 等差級數求和公式:
解題方法
提供兩種精確推導路徑:
方法一:級數逐層求和法(標準推導)
-
第一層(最內層迴圈 ):
-
第二層(中間迴圈 ):
-
第三層(最外層迴圈 ):
套用曲棍球棒等式 :
方法二:重複組合轉化法(快速計數)
迴圈邊界約束條件為:
每一次 increment 加 1,均唯一對應一組滿足上述不等式的整數解 。
這相當於從集合 的 22 個整數中,可重複地取出 3 個數字(經排序後分別指定給 )。因此總次數為重複組合數:
第 8 題10 分
Find the "worst-case complexity" of the algorithm segments below.
for k:=1 to n-1
max:=a[k]
for i:=k+1 to n
if max<a[i] then max:=a[i]
next i
a[k]:=max
next k
(a)
(b)
(c)
(d)
(e)
登入後即可作答並保存紀錄。
核心觀念
- 演算法時間複雜度分析(Time Complexity Analysis):透過計算演算法中「基本運算(Basic Operation)」在最壞情況下的執行總次數 ,來推導其漸近時間複雜度。
- 迴圈迭代與級數求和(Summation of Nested Loops):對於嵌套迴圈(Nested Loops),外層與內層迴圈的執行次數可表示為求和公式:
- 等差級數求和公式:
- 大 記號(Big- Notation):描述函數成長率的上界(Upper Bound),僅保留最高次方項並忽略常數係數。
解題方法
1. 確定基本運算
在本段程式碼中,最核心且執行次數最多的基本運算為內層迴圈的條件比較:if max<a[i]。
2. 計算各層迴圈執行次數
- 外層迴圈(Outer loop):控制變數 從 增加至 。
- 內層迴圈(Inner loop):對於每一個固定的 ,控制變數 從 執行至 。
內層迴圈對應的比較次數為:
3. 推導總比較次數
將所有 值對應的內層比較次數累加:
展開該求和式:
- 當 時,內層執行 次。
- 當 時,內層執行 次。
- 當 時,內層執行 次。
因此, 為從 到 的等差級數和:
第 9 題10 分
Consider the following algorithm.
i ← 2
while (N mod i) ≠ 0 do
i ← i + 1
Suppose instead that , and all these values are equally likely. Find the "average-case" number of "N mod i" operations made by this algorithm.
(a) 13/7
(b) 16/7
(c) 12/7
(d) 2
登入後即可作答並保存紀錄。
核心觀念
本題考查演算法的平均複雜度/期望值(Average-case Complexity / Expected Value)分析與迴圈執行次數計算。
-
期望值公式:
設離散隨機變數 表示演算法執行N mod i的次數。當輸入 之出現機率均等(即均勻分布 )時,平均執行次數(期望值)定義為:
-
迴圈終止條件與質因數關係:
此演算法自 開始每次將 加 ,直到 為止。這表示迴圈會在找到 的最小質因數 時終止。因此,對於給定的 ,檢驗條件(N mod i) ≠ 0的總次數等於 次。
解題方法
計算平均次數的關鍵在於逐一分析每一個可能的 值對應的 N mod i 執行次數:
-
當 時:
- 初始 ,檢查條件
(2 mod 2) ≠ 00 ≠ 0(結果為假),結束迴圈。 N mod i執行次數: 次。
- 初始 ,檢查條件
-
當 時:
- :檢查
(3 mod 2) ≠ 01 ≠ 0(真),執行 。 - :檢查
(3 mod 3) ≠ 00 ≠ 0(假),結束迴圈。 N mod i執行次數: 次。
- :檢查
-
當 時:
- 初始 ,檢查條件
(4 mod 2) ≠ 00 ≠ 0(假),結束迴圈。 N mod i執行次數: 次。
- 初始 ,檢查條件
-
當 時:
- :
(5 mod 2) ≠ 0(真),。 - :
(5 mod 3) ≠ 0(真),。 - :
(5 mod 4) ≠ 0(真),。 - :
(5 mod 5) ≠ 0(假),結束迴圈。 N mod i執行次數: 次。
- :
-
當 時:
- 初始 ,檢查條件
(6 mod 2) ≠ 00 ≠ 0(假),結束迴圈。 N mod i執行次數: 次。
- 初始 ,檢查條件
-
當 時:
- 從 遞增測試至 ,條件皆為真;至 時
(7 mod 7) ≠ 0(假),結束迴圈。 N mod i執行次數: 次。
- 從 遞增測試至 ,條件皆為真;至 時
第 10 題10 分
How many of the following statements are incorrect?
- C language maintains the recursive steps via stack data structure, which follows the "first in first out" principle.
- When we use recursion to solve problems, we are interested in elegance and efficiency.
- The recursive functions always contain one or more terminating conditions; Without the terminating condition, the recursive function would never stop.
- Recursion is a powerful problem-solving technique that often produces clean solutions to even the most complex problems.
- Every time we make a call, we must use some of the memory resources to make room for the stackframe.
(a) 1
(b) 2
(c) 3
(d) 4
(e) 5
登入後即可作答並保存紀錄。
核心觀念
本題考查**遞迴(Recursion)**的基本定義、執行機制與記憶體管理特性,涵蓋以下核心要點:
- 資料 structures 與 Call Stack:系統利用 Stack(堆疊)維護函式呼叫過程,其操作遵循**後進先出(LIFO, Last In First Out)**原則。
- 記憶體配置(Stack Frame / Activation Record):每次函式呼叫皆會在 Call Stack 上建立一個堆疊框架(Stack Frame),用以儲存返回地址、傳入參數與區域變數,會消耗記憶體資源。
- 遞迴的結構要件:遞迴函式必須包含終止條件(Terminating Condition / Base Case)與遞迴步驟(Recursive Step),否則會導致無窮遞迴(Infinite Recursion)並引發 Stack Overflow。
- 遞迴的特性與權衡(Elegance vs. Efficiency):遞迴能將複雜問題簡化為結構相同的子問題,程式碼具備高度簡潔優雅性(Elegance);但由於頻繁的函式呼叫負擔(Function Call Overhead),其**執行與空間效率(Efficiency)**通常低於迭代(Iteration)。
解題方法
本題為觀念計數題,題目要求選出**錯誤(incorrect)**敘述的總數量。
切入點為針對 5 個敘述逐一審視其語意邏輯、電腦科學名詞定義及記憶體運作機制,確定每個敘述的真偽(True / False)後進行統計。
選項分析
-
敘述一:「C language maintains the recursive steps via stack data structure, which follows the "first in first out" principle.」
- 判定:錯誤(Incorrect)
- 解析:C 語言在處理遞迴(及一般函式呼叫)時,雖然確實是利用 Stack(堆疊) 來記錄呼叫狀態,但 Stack 所遵循的存取原則為**「後進先出」(LIFO, Last In First Out)**,而非「先進先出」(FIFO, First In First Out)。FIFO 為 Queue(佇列)的特性。
-
敘述二:「When we use recursion to solve problems, we are interested in elegance and efficiency.」
- 判定:錯誤(Incorrect)
- 解析:使用遞迴解決問題的核心目的在於追求程式碼的簡潔優雅(Elegance)與可讀性,而非「效率(Efficiency)」。