108 年 國立臺灣大學工程科學及海洋工程學系碩士班丁組《離散數學(A)》
第 1 題10 分
證明:有無限多個質數存在。
登入後即可作答並保存紀錄。
核心觀念
本題旨在考察數論(Number Theory)中的基本基礎定理與經典證明手法,核心觀念包含:
- 質數(Prime Number)定義:大於 的整數 ,若其正因數僅有 與 本身,則稱 為質數。
- 算術基本定理(Fundamental Theorem of Arithmetic)之推論:任何大於 的正整數 ,皆可唯一分解為質數的乘積。意即:任何大於 的整數至少存在一個質因數。
- 整除之運算性質:若整數 同時整除 與 (記做 且 ),則對於任意整數 ,皆有 。
- 反證法(Proof by Contradiction):先假設欲證命題之否定成立,透過嚴謹的邏輯推導得出矛盾(如 但 ),進而證實原命題必然成立。
解題方法
採用經典的歐幾里得(Euclid)反證法進行證明:
步驟一:設定反證假設
假設質數的數量是有限的,將世界上所有的質數由小到大排列並窮舉登記為有限集合:
其中 為質數的總個數,。
步驟二:構造輔助整數
構造一個新的正整數 ,定義為所有已知質數的乘積再加上 :
步驟三:分析 的質因數
由於 ,明顯可知 。
根據算術基本定理,整數 必須至少有一個質因數,設此質因數為 (即 為質數,且 )。
步驟四:導出邏輯矛盾
由於集合 已包含世界上「所有」的質數,故質數 必須屬於集合 ,意即存在某個 使得 。
由此可得:
已知 ,利用整除的線性組合性質,可知 亦能整除兩者之差:
將 的定義代入上式:
第 2 題15 分
證明:機率公式。
(提示:條件機率)
登入後即可作答並保存紀錄。
核心觀念
本題考查機率論中的基礎定義與核心定理,重點包含以下觀念:
- 條件機率定義(Definition of Conditional Probability):
對任意兩事件 ,在 的前提下,定義在 發生的條件下 發生的條件機率為:
- 機率乘法公式(Multiplication Rule):
由條件機率定義改寫可得聯合機率(Joint Probability):
- 全機率定理(Law of Total Probability):
若事件 與其對立事件 構成樣本空間 的一組分割(Partition),即 且 ,則對任意事件 ,其發生的總機率可分解為:
- 貝氏定理(Bayes' Theorem):
結合條件機率定義與全機率定理,用以由事前機率(Prior Probability)與似然值(Likelihood)推導出事後機率(Posterior Probability)。
解題方法
本題為證明題,採取由右式(RHS)經由定理化簡推導至左式(LHS)的直接證明法。
前提假設:
假設 、 且 。
詳細推導步驟:
-
分子化簡(套用機率乘法公式):
根據條件機率定義,,等式兩邊同乘以 得:
-
分母化簡(套用全機率定理):
因為 與 互斥且聯集為全域 ,故事件 可表為:
由於 與 為互斥事件,由機率可加性公理:
分別對兩項套用機率乘法公式:
第 3 題15 分
證明:假設 是 的任意一個排列。
如果 為奇數,則 為偶數。
登入後即可作答並保存紀錄。
核心觀念
本題考查整數的奇偶性(Parity)、反證法(Proof by Contradiction)以及排列(Permutation)總和的不變性。
主要運用的定義與定理如下:
- 整數乘積的奇偶性:若干個整數的乘積若為奇數,當且僅當每一個整數因子皆為奇數。若乘積中存在至少一個偶數因子,則整體乘積必為偶數。
- 奇偶數連加規律: 個奇數相加,若 為奇數,則其總和必為奇數;若 為偶數,則其總和必為偶數。
- 排列求和不變性:若 是 的一個排列,則 。
解題方法
採用**反證法(Proof by Contradiction)**切入推導。
完整證明步驟:
-
提出反面假設:
假設乘積 為奇數。 -
分析各項因子的奇偶性:
根據整數乘積奇偶性定理,若 為奇數,則每一個因子 都必須是奇數(對所有 )。 -
計算所有因子的總和:
將這 個因子全部相加,設總和為 :
拆開求和號並利用加法交換律與結合律:
因為 為 的一個排列,其元素的集合與 完全相等,故:
代入可得:
第 4 題15 分
證明:在空間上任意標出九個整數座標的點,其中必至少有兩個點,它們的連線的中點也是整數座標的點。
登入後即可作答並保存紀錄。
核心觀念
本題考查離散數學組合學中的鴿籠原理(Pigeonhole Principle)、數論的同餘與奇偶性(Parity),以及解析幾何中的中點公式。
- 中點公式:在三維空間中,設兩點 與 ,其連線中點座標為:
- 整數座標條件:中點 為整數座標點()的充要條件為:、 與 皆為偶數。
- 同餘與奇偶性:兩整數之和為偶數,若且唯若這兩數具有相同的奇偶性,即:
- 鴿籠原理:若將 個物品放進 個盒子中,且 ,則必定至少有一個盒子包含 2 個或 2 個以上的物品。
解題方法
步驟一:分析中點為整數點的充要條件
設空間中任意兩整數點 與 (其中 )。
其連線中點座標為:
要使 為整數座標點,其三個分量必須皆為整數,即:
依據奇偶性同餘性質,上式可等價轉化為:
亦即, 與 的對應座標分量必須擁有完全相同的奇偶性。
第 5 題15 分
欲使用 200 元、500 元、1000 元、2000 元紙鈔組成 8000 元,請問有多少種方式?
(提示:500 無法被 200 整除)
登入後即可作答並保存紀錄。
設各面額紙鈔張數依序為 ,則
除以 :
等式右側及其餘各項皆為偶數,故 必為偶數。令 ,得
因此只需計算
第 6 題15 分
請設計一個可以辨識連續 1010 的有限狀態機(提示:輸入 1110101001 輸出 NNNNNYNYNN where N=no and Y=yes)並圖示之。
登入後即可作答並保存紀錄。
核心觀念
-
有限狀態機(Finite State Machine, FSM)與米利機(Mealy Machine):
有限狀態機為由有限個狀態、輸入符號、轉移函數及輸出構成的計算模型。本題輸出序列與輸入序列長度相同,且在接收每一個輸入字元時即刻產生相應的輸出( 或 ),故採用**米利機(Mealy Machine)**模型最為直接且狀態數最少。
米利機的數學定義為五元組 :- :有限狀態集合。
- :輸入字母集。
- :輸出字母集。
- :狀態轉移函數。
- :輸出函數。
-
序列模式辨識與重疊處理(Overlapping Pattern Recognition):
辨識目標字串 時,狀態設計的核心為記錄「目前已匹配到目標字串的最長字首(Prefix)長度」。若遇到不匹配的字元,需根據已輸入字串的末尾部分,尋找能與目標字串字首匹配的最長字尾(Suffix),進行正確的狀態回退(此概念同 KMP 演算法)。當成功匹配 時,由於結尾的 同時可作為下一次匹配 的前兩字元(如輸入 會產生兩次 ),故狀態需回退至「已匹配 」的狀態,而非回到初始狀態。
解題方法
1. 狀態定義
根據目標字串 的長度(),定義 個狀態,分別代表目前已連續匹配到的字首長度:
- :初始狀態,表示目前匹配長度為 (無任何有效字首)。
- :表示目前已匹配字首為 (長度為 )。
- :表示目前已匹配字首為 (長度為 )。
- :表示目前已匹配字首為 (長度為 )。
2. 狀態轉移與輸出推導
-
在 狀態(匹配 ""):
- 輸入 :成功推進至字首 ,轉移至 ,輸出 。
- 輸入 :無法匹配,維持在 ,輸出 。
-
在 狀態(匹配 "1"):
- 輸入 :字串變為 ,末尾最長可匹配字首仍為 ,故維持在 ,輸出 。
- 輸入 :成功推進至字首 ,轉移至 ,輸出 。
-
在 狀態(匹配 "10"):
- 輸入 :成功推進至字首 ,轉移至 ,輸出 。
- 輸入 :字串變為 ,無任何有效字首匹配,回退至 ,輸出 。
-
在 狀態(匹配 "101"):
- 輸入 :字串變為 ,末尾最長可匹配字首為 ,回退至 ,輸出 。
- 輸入 :字串變為 ,成功完成匹配!輸出 。由於末尾 為下一輪匹配的字首,故轉移至 。
3. 狀態轉移表(State Transition Table)
| 當前狀態 | 輸入 (次態 / 輸出) | 輸入 (次態 / 輸出) |
|---|---|---|
| (初始) | ||
狀態與轉移分析
由於本題為設計與圖示題,下表對各狀態在不同輸入下的轉移邏輯進行逐一檢驗與說明:
-
轉移分析:
- 輸入 歷史序列末尾為 ,無法形成 的任何前綴 保持 。
- 輸入 歷史序列末尾為 ,匹配 的第一個字元 轉移至 。
-
轉移分析:
- 輸入 歷史序列末尾為 ,匹配前兩個字元 轉移至 。
- 輸入 歷史序列末尾為 ,最後一個 可作為新匹配的開始 保持 。
-
轉移分析:
- 輸入 歷史序列末尾為 ,中斷匹配且無可利用後綴 回退至 。
- 輸入 歷史序列末尾為 ,匹配前三個字元 轉移至 。
-
轉移分析:
- 輸入 歷史序列末尾為 ,達到完整匹配,輸出 ;保留末尾 作為下一次匹配前綴 轉移至 。
- 輸入 歷史序列末尾為 ,最後一個 可作為新匹配的開始 回退至 。
範例追蹤驗證(題目提示:1110101001):
第 7 題15 分
同上,請使用 C/C++/Java 之程式語言,設計一個可以辨識連續 1010 的程式。(提示:有限狀態機可以視為程式的流程圖)
登入後即可作答並保存紀錄。
核心觀念
本題考查有限狀態機(Finite State Machine, FSM)與字串樣式辨識。
將輸入視為只含 0、1 的位元字串,目標是判斷其中是否出現連續子字串 1010。有限狀態機的每個狀態,代表目前已經比對成功的樣式前綴長度:
- :尚未比對到有效前綴
- :目前結尾為
1 - :目前結尾為
10 - :目前結尾為
101 - :已經辨識出
1010,為接受狀態
一旦進入 ,即代表輸入中曾出現 1010,後續字元不影響辨識結果,因此維持在 。
解題方法
依照目前已匹配的字串,建立狀態轉移:
| 目前狀態 | 讀入 0 | 讀入 1 | 意義 |
|---|---|---|---|
| 尚未開始或無有效前綴 | |||
已匹配 1 | |||
已匹配 10 | |||
已匹配 101 | |||
已找到 1010 |
關鍵轉移說明如下:
- 讀入
1後,開始匹配樣式,因此進入 。 - 讀入
0後得到10,進入 。 - 讀入
1後得到101,進入 。 - 讀入
0後得到1010,進入接受狀態 。 - 讀入
1時,最新結尾仍可視為一個新的1,因此留在 。 - 讀入
1時,字串結尾為1011,其中最後一個字元1可作為新比對起點,因此回到 。