108 年 國立臺灣聯合大學系統(清華、政治、陽明交通、中央四校聯招)研究所電機類《離散數學》
第 1 題8 分
Two players take turns removing 1, 2, 3, 4, or 5 cards from a stack of 2020 cards. The player who takes the last card loses. Is there a strategy for one of the players to always win? If yes, which player is this and what is his strategy? If not, why not? Briefly explain.
登入後即可作答並保存紀錄。
核心觀念
本題考的是「取石子/取牌遊戲」的必勝策略,以及逆向分析中的必勝局面與必敗局面。
- 必勝局面(N-position):輪到自己操作時,可以透過適當取牌,將局面交給對手,使對手處於必敗局面。
- 必敗局面(P-position):輪到自己操作時,不論取多少牌,都會把必勝局面交給對手。
本題規則特別之處在於:拿走最後一張牌的人輸掉,因此屬於 misère(反常規)取牌遊戲。
解題方法
設目前剩下 張牌,分析較小的情況:
- :輪到玩家時只能拿走最後一張,立即輸掉。因此 是必敗局面。
- :拿走 張,留下 張給對手。對手被迫拿走最後一張而輸,因此 是必勝局面。
- :玩家可以分別拿走 張,留下 張給對手,因此皆為必勝局面。
- :無論拿走 張,都會留下 張,這些都是對手的必勝局面。因此 是必敗局面。
之後必敗局面每隔 張出現一次:
也就是剩餘牌數滿足
時,輪到玩家者必敗。
初始有
因此初始局面不是必敗局面,先手可以把牌數調整成 。先手第一次拿走 張:
而
第 2 題12 分
Include all relevant calculations and explanations:
(a) [6 points] Find all integers that satisfy the congruence .
(b) [6 points] Find the remainder of .
登入後即可作答並保存紀錄。
核心觀念
- 線性同餘方程式 (Linear Congruence Equation):對於方程式 ,若 ,當且僅當 時方程式有解。當 時,可利用擴充歐幾里得演算法 (Extended Euclidean Algorithm) 求出 模 的乘法逆元 (Multiplicative Inverse) ,進而求解 。
- 費馬小定理 (Fermat's Little Theorem):設 為質數,若整數 與 互質(即 ),則:
利用此定理可將高次冪的同餘指數進行降次簡約(將指數取模 ),大幅簡化大數餘數計算。
解題方法
(a) 求解同餘方程式
步驟一:約分與判定解的存在性
觀察同餘式 。因為 ,兩邊可同除以 2,原式化簡為:
由於 89 為質數,且 ,故 27 模 89 的乘法逆元必定存在,且此同餘方程式在模 89 下有唯一解。
步驟二:利用擴充歐幾里得演算法求乘法逆元
使用歐幾里得演算法對 89 與 27 進行輾轉相除:
反向代回求一次不定方程式 的整數解:
由此可知:
即 27 模 89 的乘法逆元為 。
步驟三:求出所有整數解
將 兩邊同乘以 33:
因此,滿足原同餘方程式的所有整數解為:
(b) 求解 的餘數
第 3 題12 分
Let denote the number of ways to tile a grid of squares using tiles.
(a) [6 points] Derive a recurrence relation for .
(b) [6 points] Solve for explicitly.
登入後即可作答並保存紀錄。
第 3 題
(a) 遞迴關係式推導
設 為以 多米諾骨牌鋪滿 棋盤的方法數,並設 為鋪滿 棋盤且「角落缺一格(即留下一格 未鋪)」的方法數。
觀察左側邊界的骨牌擺放型態:
-
對於 :
- 垂直擺放 1 塊骨牌與水平擺放 1 塊骨牌,會使剩餘區域形成缺少一格的結構,共有上、下對稱的 2 種型態:
- 垂直擺放 1 塊骨牌與水平擺放 1 塊骨牌,會使剩餘區域形成缺少一格的結構,共有上、下對稱的 2 種型態:
-
對於 :
- 補滿缺失的一格只有 1 種推導方式,會分別產生鋪滿 的型態或繼續保留缺少一格的型態:
- 補滿缺失的一格只有 1 種推導方式,會分別產生鋪滿 的型態或繼續保留缺少一格的型態:
由 關係式可得 。將其代回 關係式:
又由 ,代入上式消去 項:
初值計算:
- (空棋盤視為 1 種)
- ( 棋盤有 3 種鋪法)
【答案】
遞迴關係式為:
第 4 題9 分
For two positive integers, we write if the sum of the (distinct) prime factors of the first is less than or equal to the product of the (distinct) prime factors of the second. For example, , because .
(a) [3 points] Is this relation reflexive? Explain.
(b) [3 points] Is this relation transitive? Explain.
(c) [3 points] Is this relation anti-symmetric? Explain.
登入後即可作答並保存紀錄。
核心觀念
-
二元關係(Binary Relation)性質定義
設 為正整數集合 上的一個二元關係,題目記作 ,定義為 ,其中:- 表示 的所有相異質因數之和(Sum of distinct prime factors)。
- 表示 的所有相異質因數之積(Product of distinct prime factors)。
對於集合 上的二元關係 :
- 自反性(Reflexivity):若對任意 ,皆滿足 ,則 具有自反性。
- 遞移性(Transitivity):若對任意 , 且 可導出 ,則 具有遞移性。
- 反對稱性(Anti-symmetry):若對任意 , 且 可導出 ,則 具有反對稱性。
-
質因數之和與質因數之積的基本定理
設正整數 的相異質因數集合為 :- 若 (即 ),空集合的元素和 ,元素積 。
- 若 ,因所有質數 ,必有 。
解題方法
本題需分別對三項關係性質進行論證:
- 自反性:證明對任意正整數 ,恆成立 (即 )。將正整數依據相異質因數個數 進行分類討論()。
- 遞移性:若要否決遞移性,只需尋找一組正整數反例 ,滿足 且 ,但 。
- 反對稱性:若要否決反對稱性,只需尋找一組相異正整數反例 ,滿足 且 。
選項分析
(a) 自反性(Reflexivity)分析
- 結論:是(Reflexive)。
- 詳細說明與推導:
對任意正整數 ,設其相異質因數集合為 :- 當 時,相異質因數集合為空集合,故 且 。因為 ,所以 成立。
- 當 且 時, 僅有一個質因數 ,此時 且 。因為 ,所以 成立。
- 當 且 時,設 為其相異質因數。
對於 ,由於 且 ,有:
經由數學歸納法可知,當 時,有限個質數之和必嚴格小於其連乘積,即:
第 5 題10 分
Use Figure 1 to answer the following questions.
(a) [5 points] What's the chromatic number of this graph? Show your work.
(b) [5 points] Show where to delete an edge to decrease the chromatic number.
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
圖中可分成上下兩部分:
- 上方三個頂點記為 ,其中最外側的 由上方繞行的邊相連。
- 下方五個頂點記為 ,相鄰頂點依序相連,且最外側的 由下方繞行的邊相連,因此下方形成一個五邊形 。
- 上方每個頂點都與下方每個頂點相連,形成完整二分圖 。
使用的基本事實為:
- 邊相連的兩頂點不能使用相同顏色。
- 奇圈 的色數為 。
- 上方子圖含有邊 ,因此至少需要 種顏色。
- 上下兩部分完全相連,所以兩部分使用的顏色不能重複。
(a) Chromatic number
下方五邊形為奇圈:
上方至少需要兩種顏色,因為 與 相鄰:
由於上方每一個頂點都與下方每一個頂點相連,上下兩部分的顏色集合必須完全分開,因此:
另一方面,可以實際使用五種顏色完成著色:
第 5 題10 分
Use Figure 1 to answer the following questions.
(a) [5 points] What's the chromatic number of this graph? Show your work.
(b) [5 points] Show where to delete an edge to decrease the chromatic number.
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
圖中可分成上下兩部分:
- 上方三個頂點記為 ,其中最外側的 由上方繞行的邊相連。
- 下方五個頂點記為 ,相鄰頂點依序相連,且最外側的 由下方繞行的邊相連,因此下方形成一個五邊形 。
- 上方每個頂點都與下方每個頂點相連,形成完整二分圖 。
使用的基本事實為:
- 邊相連的兩頂點不能使用相同顏色。
- 奇圈 的色數為 。
- 上方子圖含有邊 ,因此至少需要 種顏色。
- 上下兩部分完全相連,所以兩部分使用的顏色不能重複。
(a) Chromatic number
下方五邊形為奇圈:
上方至少需要兩種顏色,因為 與 相鄰:
由於上方每一個頂點都與下方每一個頂點相連,上下兩部分的顏色集合必須完全分開,因此:
另一方面,可以實際使用五種顏色完成著色:
第 6 題14 分
To build a minimum spanning tree, at each step, Prim's algorithm proposes to add the edge such that the weight of is minimum among all edges where is in the tree and is not in the tree. Therefore, each step maintains a minimum spanning tree of the vertices that have been included thus far. When all vertices have been included, a MST is constructed.
(a) [7 points] Prove the correctness of Prim's algorithm.
(b) [7 points] Prove or disprove that there is a unique minimum spanning tree in a connected weighted graph if the weights of the edges are all different.
登入後即可作答並保存紀錄。
核心觀念
本題考驗圖形理論(Graph Theory)中**最小生成樹(Minimum Spanning Tree, MST)**的經典演算法證明與結構性質:
- 割集性質(Cut Property / Cut Lemma):若劃分頂點集 為 與 形成一個割(Cut),跨越此割集的所有邊中,權重嚴格最小者必包含於某棵最小生成樹中。
- 貪婪選擇性質(Greedy Choice Property)與切換論證(Exchange Argument):證明貪婪演算法(Greedy Algorithm)每一步所採取的局部最佳選擇,皆可擴展或調整為全局最佳解。
- 數學歸納法(Mathematical Induction):用於維護演算法執行過程中的迴圈不變性(Loop Invariant)。
- 邊權重相異性與唯一性定理(Uniqueness of MST):當連通圖中所有邊的權重兩兩相異時,最小生成樹具有唯一性。
解題方法
-
(a) Prim 演算法正確性證明:
採用數學歸納法結合切換論證(Exchange Argument)。定義迴圈不變性:「在演算法第 步所選取的邊集合 ,必為圖 某棵 MST 的子集」。在歸納步驟中,設演算法選取了跨越割集 的最小權重邊 。若 ,則透過將 加入 形成簡單環,並替換掉環上另一條跨越該割集的邊 ,構造出一棵新的生成樹 。利用權重最小性證明 ,進而推導出 亦為 MST 且包含 。 -
(b) 邊權重完全不相同時 MST 唯一性證明:
採用反證法(Proof by Contradiction)。假設圖中存在兩棵不同的最小生成樹 與 。考慮兩樹邊集合的對稱差(Symmetric Difference),取其中權重嚴格最小的邊 。利用 切割 所產生的割集,在 中找到另一條跨越該割集的邊 。由於所有邊權重相異且 為最小差異邊,必有 。將 中的 替換為 後可構造出總權重更小的生成樹 ,與 為 MST 的前提產生矛盾,從而證實 MST 必為唯一。
子題詳解與證明
(a) Prove the correctness of Prim's algorithm.
【證明】
-
命題定義(迴圈不變性 Loop Invariant):
設 為一個連通無向權重圖。設 為第 步時已被納入樹中的頂點集合, 為已選擇的 條邊所構成的邊集合。
歸納假設(Inductive Hypothesis): 對於任意步驟 , 為圖 的某棵最小生成樹 的子集(即 )。 -
基礎階(Base Step):
當 時,已被選取的邊集合為空集合 。空集合顯然為任何 MST 的子集,故歸納假設成立。 -
歸納階(Inductive Step):
假設在第 步時,已選取的邊集合 滿足 ( 為某棵 MST)。
在第 步,Prim 演算法考慮割集 (即一端在 內、另一端在 的邊),並挑選其中權重最小的邊 (其中 ),更新狀態為 ,。我們需證明存在一棵 MST 使得 :
- 情況一:若
則 ,直接取 即可滿足條件。 - 情況二:若
將邊 加入 中,會在 上形成唯一的簡單環(Simple Cycle)。
由於 跨越割集 ,環 上必定存在另一條跨越割集 的邊 ,其中 。- 因為 中所有的邊兩端點都在 內部,故 絕不可能屬於 (即 )。
- 依據 Prim 演算法的選擇規則, 是所有跨越割集 的邊中權重最小者,因此 。
- 我們構造一個新的邊集合 :
- 生成樹性質:從簡單環 中刪除邊 並加入邊 ,保持了圖的連通性且無環,故 仍為圖 的生成樹。
- 最小權重性質: 的總權重為 。因為 ,得 。
- 情況一:若
第 7 題16 分
Please write a recurrence relation for describing the worst case time complexity of each of the following algorithms and determine the asymptotic complexity of the function defined by the recurrence relation. Please justify your solution using either substitution, a recursion tree or induction. Note that:
- You CANNOT use the Master theorem.
- All arithmetic operations take constant time.
- Simplify and express your answer as or wherever possible.
- Just give exponential lower bounds if the algorithm takes exponential time.
(a) [8 points]
Algorithm 1 FunctionA(array1,n)
1: // array1 is an array of n integers
2: if n ≤ 18 then
3: return (array1[n]);
4: end if
5: x ← 0;
6: for i ← 1 to 4 do
7: for j ← 1 to [n/2] do
8:
9:
10:
11:
12:
13: end for
14: return x
end for
x ← x + FunctionA(array1, [n/2]);
end for
(b) [8 points]
Algorithm 2 FunctionB(array1,n)
1: // array1 is an array of n integers
2: if n ≤ 3 then
3: return (array1[1]);
4: end if
5: for i ← 1 to n do
6: for j ← [n/3] to [2n/3] do
7:
8:
end for
array1[j] ← array1[i] – array1[j];
9: end for
10: x ← FunctionB(array1, [2n/3]);
11: return x
登入後即可作答並保存紀錄。
核心觀念
本題考查遞迴演算法的時間複雜度分析,重點包括:
- 由程式中的遞迴呼叫次數與子問題規模建立遞迴式。
- 計算每一層非遞迴工作的成本。
- 使用遞迴樹求出總時間複雜度。
- 忽略常數、取整數造成的微小差異,使用漸近符號表示結果。
題目禁止使用 Master theorem,因此以下採用遞迴樹分析。
(a)Algorithm 1:FunctionA
解題方法
外層迴圈執行 次;每一次外層迴圈中,內層迴圈執行約 次,每次只進行常數時間的運算,因此單次呼叫的非遞迴成本為
每一次外層迴圈結束後,會遞迴呼叫一次規模為 的問題,因此總共產生 個子問題。
所以遞迴式為
基本條件為
取整數符號不影響漸近複雜度,可簡寫為
遞迴樹分析
第 層只有 個問題,每個問題的非遞迴成本為 ,因此該層成本為
第 層有 個問題,每個問題規模為 ,因此該層成本為
第 層有 個問題,每個問題規模為 ,因此該層成本為
一般而言,第 層的總成本為
遞迴深度約為
因此,從根節點到接近葉節點的各層成本形成幾何級數:
最後一層的成本為
幾何級數由最後幾項主導,因此
解題技巧
判斷此題的快速方法:
- 每次遞迴將問題縮小為 。
- 每個問題產生 個子問題。
- 第 層的問題數為 ,每題規模為 。
- 葉節點數約為
因此即使忽略每層的迴圈成本,也可立即得到至少 ;而所有內部節點成本總和同樣不超過 ,故答案為 。
(b)Algorithm 2:FunctionB
第 8 題10 分
Let be a function from a set to a set and be a function from a set to a set . Suppose that is a one-to-one correspondence.
(a) [5 points] Should be a one-to-one correspondence? If not, what condition should satisfy? Provide proofs and/or examples justifying your answers.
(b) [5 points] Should be a one-to-one correspondence? If not, what condition must satisfy? Provide proofs and/or examples justifying your answers.
登入後即可作答並保存紀錄。
8.
(a)
【答案】
不必然是一對一對應(Bijective)。 必須滿足一對一(Injective / One-to-one)。
【證明與反例】
-
必須是一對一(Injective):
設 且 。
兩邊取 得 ,即 。
因為 為一對一對應,故 是一對一,得 。
因此 必為一對一。 -
不必定為映上(Surjective,即不必然是一對一對應):
反例:設 ,,。
定義 ;,。
此時 ,為從 到 的一對一對應。
但 ,故 不是映上(Surjective),亦即 不是一對一對應。
第 9 題9 分
In RSA, the plaintext message can be recovered from a ciphertext message when the decryption key , which is an inverse of modulo , is known. To see this, note that if , there is an integer such that . It follows that
. (1)
By Fermat's little theorem, it follows that and .
Consequently, we have .
(a) [5 points] Let , and . What's the decryption key ? Briefly justify your answer.
(b) [4 points] Explain why it is that one can find the decryption key in part (a), but in general having only or will not let you easily find the decryption key for real-world instances of RSA.
登入後即可作答並保存紀錄。
核心觀念
本題考查數論(Number Theory)在密碼學中 RSA 公鑰加密系統(RSA Cryptosystem) 的運算原理與安全性基石:
- 歐拉總體函數(Euler's Totient Function):若 且 為相異質數,則 。
- 同餘反元素(Modular Multiplicative Inverse):解密金鑰 為加密金鑰 模 的乘法反元素,滿足同餘式 。
- 質因數分解難題(Integer Factorization Problem, IFP):RSA 系統的安全性建立在「將極大合數 分解為兩大質數 在計算上極度困難」的理論基礎之上。
解題方法
子題 (a) 推導過程:
- 質因數分解模數 :
已知 ,分解為兩個質數之積:
- 計算歐拉總體函數值 :
根據歐拉總體函數定義:
- 求解解密金鑰 :
解密金鑰 滿足同餘關係式 。代入已知 與 :
利用同餘運算求解:
取最小正整數解,得 。
子題 (b) 理論說明:
- (a) 小題可輕易破解之原因:
在 (a) 中,合數 的數值極小,可以直接透過試除法在瞬間完成質因數分解求得 ,從而精確計算出 。已知 後,便能以擴充歐幾里得演算法在對數時間內求得解密金鑰 。 - 實務 RSA 無法輕易求得解密金鑰之原因:
- 大數分解之計算艱難度:實務應用的 RSA 系統中, 為長度達 2048 位元至 4096 位元的超大合數。
- 已知資訊限制:攻擊者或第三者僅擁有 與 。若要計算 ,必須先得知 ,這完全等價於需要先對 進行質因數分解。
- 演算法複雜度限制:在古典電腦架構下,目前尚未發現任何可以在多項式時間內對大數進行質因數分解的有效演算法(最先進的一般數體篩法 General Number Field Sieve 耗時仍呈亞指數成長)。