108 年 國立臺灣大學工程科學及海洋工程學系碩士班丁組《離散數學(A)》

📄 試題原卷 免費註冊後即可對照原始考卷 PDF免費註冊

第 1 題10 分

證明:有無限多個質數存在。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題旨在考察數論(Number Theory)中的基本基礎定理與經典證明手法,核心觀念包含:

  1. 質數(Prime Number)定義:大於 11 的整數 pp,若其正因數僅有 11 與 pp 本身,則稱 pp 為質數。
  2. 算術基本定理(Fundamental Theorem of Arithmetic)之推論:任何大於 11 的正整數 nn,皆可唯一分解為質數的乘積。意即:任何大於 11 的整數至少存在一個質因數。
  3. 整除之運算性質:若整數 dd 同時整除 aa 與 bb(記做 d∣ad \mid a 且 d∣bd \mid b),則對於任意整數 x,yx, y,皆有 d∣(ax+by)d \mid (ax + by)。
  4. 反證法(Proof by Contradiction):先假設欲證命題之否定成立,透過嚴謹的邏輯推導得出矛盾(如 d∣1d \mid 1 但 d>1d > 1),進而證實原命題必然成立。

解題方法

採用經典的歐幾里得(Euclid)反證法進行證明:

步驟一:設定反證假設
假設質數的數量是有限的,將世界上所有的質數由小到大排列並窮舉登記為有限集合:
P={p1,p2,p3,…,pk}P = \{p_1, p_2, p_3, \dots, p_k\}
其中 kk 為質數的總個數,p1=2,p2=3,p3=5,…p_1 = 2, p_2 = 3, p_3 = 5, \dots。

步驟二:構造輔助整數
構造一個新的正整數 NN,定義為所有已知質數的乘積再加上 11:
N=(p1⋅p2⋅p3⋯pk)+1N = (p_1 \cdot p_2 \cdot p_3 \cdots p_k) + 1

步驟三:分析 NN 的質因數
由於 p1≥2p_1 \ge 2,明顯可知 N>1N > 1。
根據算術基本定理,整數 NN 必須至少有一個質因數,設此質因數為 qq(即 qq 為質數,且 q∣Nq \mid N)。

步驟四:導出邏輯矛盾
由於集合 P={p1,p2,…,pk}P = \{p_1, p_2, \dots, p_k\} 已包含世界上「所有」的質數,故質數 qq 必須屬於集合 PP,意即存在某個 i∈{1,2,…,k}i \in \{1, 2, \dots, k\} 使得 q=piq = p_i。
由此可得:
q∣(p1⋅p2⋅p3⋯pk)q \mid (p_1 \cdot p_2 \cdot p_3 \cdots p_k)

已知 q∣Nq \mid N,利用整除的線性組合性質,可知 qq 亦能整除兩者之差:
q∣[N−(p1⋅p2⋅p3⋯pk)]q \mid \left[ N - (p_1 \cdot p_2 \cdot p_3 \cdots p_k) \right]
將 NN 的定義代入上式:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 2 題15 分

證明:機率公式。
Pr⁡(A∩B)Pr⁡(B)=Pr⁡(A)Pr⁡(B∣A)Pr⁡(A)Pr⁡(B∣A)+Pr⁡(Aˉ)Pr⁡(B∣Aˉ)\frac{\Pr(A \cap B)}{\Pr(B)} = \frac{\Pr(A)\Pr(B|A)}{\Pr(A)\Pr(B|A) + \Pr(\bar{A})\Pr(B|\bar{A})}
(提示:條件機率)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查機率論中的基礎定義與核心定理,重點包含以下觀念:

  1. 條件機率定義(Definition of Conditional Probability):
    對任意兩事件 E1,E2E_1, E_2,在 Pr⁡(E2)>0\Pr(E_2) > 0 的前提下,定義在 E2E_2 發生的條件下 E1E_1 發生的條件機率為:
    Pr⁡(E1∣E2)=Pr⁡(E1∩E2)Pr⁡(E2)\Pr(E_1|E_2) = \frac{\Pr(E_1 \cap E_2)}{\Pr(E_2)}
  2. 機率乘法公式(Multiplication Rule):
    由條件機率定義改寫可得聯合機率(Joint Probability):
    Pr⁡(E1∩E2)=Pr⁡(E1)Pr⁡(E2∣E1)=Pr⁡(E2)Pr⁡(E1∣E2)\Pr(E_1 \cap E_2) = \Pr(E_1)\Pr(E_2|E_1) = \Pr(E_2)\Pr(E_1|E_2)
  3. 全機率定理(Law of Total Probability):
    若事件 AA 與其對立事件 Aˉ\bar{A} 構成樣本空間 SS 的一組分割(Partition),即 A∩Aˉ=∅A \cap \bar{A} = \emptyset 且 A∪Aˉ=SA \cup \bar{A} = S,則對任意事件 BB,其發生的總機率可分解為:
    Pr⁡(B)=Pr⁡(A∩B)+Pr⁡(Aˉ∩B)=Pr⁡(A)Pr⁡(B∣A)+Pr⁡(Aˉ)Pr⁡(B∣Aˉ)\Pr(B) = \Pr(A \cap B) + \Pr(\bar{A} \cap B) = \Pr(A)\Pr(B|A) + \Pr(\bar{A})\Pr(B|\bar{A})
  4. 貝氏定理(Bayes' Theorem):
    結合條件機率定義與全機率定理,用以由事前機率(Prior Probability)與似然值(Likelihood)推導出事後機率(Posterior Probability)。

解題方法

本題為證明題,採取由右式(RHS)經由定理化簡推導至左式(LHS)的直接證明法。

前提假設:
假設 Pr⁡(A)>0\Pr(A) > 0、Pr⁡(Aˉ)>0\Pr(\bar{A}) > 0 且 Pr⁡(B)>0\Pr(B) > 0。

詳細推導步驟:

  1. 分子化簡(套用機率乘法公式):
    根據條件機率定義,Pr⁡(B∣A)=Pr⁡(A∩B)Pr⁡(A)\Pr(B|A) = \frac{\Pr(A \cap B)}{\Pr(A)},等式兩邊同乘以 Pr⁡(A)\Pr(A) 得:
    Pr⁡(A)Pr⁡(B∣A)=Pr⁡(A∩B)\Pr(A)\Pr(B|A) = \Pr(A \cap B)

  2. 分母化簡(套用全機率定理):
    因為 AA 與 Aˉ\bar{A} 互斥且聯集為全域 SS,故事件 BB 可表為:
    B=B∩S=B∩(A∪Aˉ)=(A∩B)∪(Aˉ∩B)B = B \cap S = B \cap (A \cup \bar{A}) = (A \cap B) \cup (\bar{A} \cap B)
    由於 (A∩B)(A \cap B) 與 (Aˉ∩B)(\bar{A} \cap B) 為互斥事件,由機率可加性公理:
    Pr⁡(B)=Pr⁡(A∩B)+Pr⁡(Aˉ∩B)\Pr(B) = \Pr(A \cap B) + \Pr(\bar{A} \cap B)
    分別對兩項套用機率乘法公式:

    • Pr⁡(A∩B)=Pr⁡(A)Pr⁡(B∣A)\Pr(A \cap B) = \Pr(A)\Pr(B|A)
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 3 題15 分

證明:假設 a1,a2,…,ana_1, a_2, \dots, a_n 是 1,2,…,n1, 2, \dots, n 的任意一個排列。
如果 nn 為奇數,則 (1−a1)(2−a2)…(n−an)(1-a_1)(2-a_2)\dots(n-a_n) 為偶數。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查整數的奇偶性(Parity)、反證法(Proof by Contradiction)以及排列(Permutation)總和的不變性。

主要運用的定義與定理如下:

  1. 整數乘積的奇偶性:若干個整數的乘積若為奇數,當且僅當每一個整數因子皆為奇數。若乘積中存在至少一個偶數因子,則整體乘積必為偶數。
  2. 奇偶數連加規律:nn 個奇數相加,若 nn 為奇數,則其總和必為奇數;若 nn 為偶數,則其總和必為偶數。
  3. 排列求和不變性:若 a1,a2,…,ana_1, a_2, \dots, a_n 是 1,2,…,n1, 2, \dots, n 的一個排列,則 ∑i=1nai=∑i=1ni\sum_{i=1}^{n} a_i = \sum_{i=1}^{n} i。

解題方法

採用**反證法(Proof by Contradiction)**切入推導。

完整證明步驟:

  1. 提出反面假設:
    假設乘積 P=(1−a1)(2−a2)…(n−an)P = (1-a_1)(2-a_2)\dots(n-a_n) 為奇數。

  2. 分析各項因子的奇偶性:
    根據整數乘積奇偶性定理,若 PP 為奇數,則每一個因子 (i−ai)(i - a_i) 都必須是奇數(對所有 i=1,2,…,ni = 1, 2, \dots, n)。

  3. 計算所有因子的總和:
    將這 nn 個因子全部相加,設總和為 SS:
    S=∑i=1n(i−ai)S = \sum_{i=1}^{n} (i - a_i)
    拆開求和號並利用加法交換律與結合律:
    S=∑i=1ni−∑i=1naiS = \sum_{i=1}^{n} i - \sum_{i=1}^{n} a_i
    因為 a1,a2,…,ana_1, a_2, \dots, a_n 為 1,2,…,n1, 2, \dots, n 的一個排列,其元素的集合與 {1,2,…,n}\{1, 2, \dots, n\} 完全相等,故:
    ∑i=1nai=∑i=1ni\sum_{i=1}^{n} a_i = \sum_{i=1}^{n} i
    代入可得:
    S=0S = 0

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 4 題15 分

證明:在空間上任意標出九個整數座標的點,其中必至少有兩個點,它們的連線的中點也是整數座標的點。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查離散數學組合學中的鴿籠原理(Pigeonhole Principle)、數論的同餘與奇偶性(Parity),以及解析幾何中的中點公式。

  1. 中點公式:在三維空間中,設兩點 P1=(x1,y1,z1)P_1 = (x_1, y_1, z_1) 與 P2=(x2,y2,z2)P_2 = (x_2, y_2, z_2),其連線中點座標為:
    M=(x1+x22,y1+y22,z1+z22)M = \left(\frac{x_1 + x_2}{2}, \frac{y_1 + y_2}{2}, \frac{z_1 + z_2}{2}\right)
  2. 整數座標條件:中點 MM 為整數座標點(M∈Z3M \in \mathbb{Z}^3)的充要條件為:x1+x2x_1 + x_2、y1+y2y_1 + y_2 與 z1+z2z_1 + z_2 皆為偶數。
  3. 同餘與奇偶性:兩整數之和為偶數,若且唯若這兩數具有相同的奇偶性,即:
    a+b≡0(mod2)  ⟺  a≡b(mod2)a + b \equiv 0 \pmod 2 \iff a \equiv b \pmod 2
  4. 鴿籠原理:若將 nn 個物品放進 kk 個盒子中,且 n>kn > k,則必定至少有一個盒子包含 2 個或 2 個以上的物品。

解題方法

步驟一:分析中點為整數點的充要條件

設空間中任意兩整數點 Pi=(xi,yi,zi)P_i = (x_i, y_i, z_i) 與 Pj=(xj,yj,zj)P_j = (x_j, y_j, z_j)(其中 xi,yi,zi∈Zx_i, y_i, z_i \in \mathbb{Z})。
其連線中點座標為:
Mij=(xi+xj2,yi+yj2,zi+zj2)M_{ij} = \left(\frac{x_i + x_j}{2}, \frac{y_i + y_j}{2}, \frac{z_i + z_j}{2}\right)
要使 MijM_{ij} 為整數座標點,其三個分量必須皆為整數,即:
xi+xj≡0(mod2),yi+yj≡0(mod2),zi+zj≡0(mod2)x_i + x_j \equiv 0 \pmod 2, \quad y_i + y_j \equiv 0 \pmod 2, \quad z_i + z_j \equiv 0 \pmod 2
依據奇偶性同餘性質,上式可等價轉化為:
xi≡xj(mod2),yi≡yj(mod2),zi≡zj(mod2)x_i \equiv x_j \pmod 2, \quad y_i \equiv y_j \pmod 2, \quad z_i \equiv z_j \pmod 2
亦即,PiP_i 與 PjP_j 的對應座標分量必須擁有完全相同的奇偶性。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 5 題15 分

欲使用 200 元、500 元、1000 元、2000 元紙鈔組成 8000 元,請問有多少種方式?
(提示:500 無法被 200 整除)

登入後即可作答並保存紀錄。

這一題的完整詳解

設各面額紙鈔張數依序為 a,b,c,d≥0a,b,c,d\ge 0,則

200a+500b+1000c+2000d=8000.200a+500b+1000c+2000d=8000.

除以 100100:

2a+5b+10c+20d=80.2a+5b+10c+20d=80.

等式右側及其餘各項皆為偶數,故 bb 必為偶數。令 b=2kb=2k,得

a+5k+5c+10d=40,a+5k+5c+10d=40,

因此只需計算

k+c+2d≤8k+c+2d\le 8

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 6 題15 分

請設計一個可以辨識連續 1010 的有限狀態機(提示:輸入 1110101001 輸出 NNNNNYNYNN where N=no and Y=yes)並圖示之。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

  1. 有限狀態機(Finite State Machine, FSM)與米利機(Mealy Machine):
    有限狀態機為由有限個狀態、輸入符號、轉移函數及輸出構成的計算模型。本題輸出序列與輸入序列長度相同,且在接收每一個輸入字元時即刻產生相應的輸出(YY 或 NN),故採用**米利機(Mealy Machine)**模型最為直接且狀態數最少。
    米利機的數學定義為五元組 M=(Q,Σ,Γ,δ,λ)M = (Q, \Sigma, \Gamma, \delta, \lambda):

    • QQ:有限狀態集合。
    • Σ={0,1}\Sigma = \{0, 1\}:輸入字母集。
    • Γ={N,Y}\Gamma = \{N, Y\}:輸出字母集。
    • δ:Q×Σ→Q\delta: Q \times \Sigma \to Q:狀態轉移函數。
    • λ:Q×Σ→Γ\lambda: Q \times \Sigma \to \Gamma:輸出函數。
  2. 序列模式辨識與重疊處理(Overlapping Pattern Recognition):
    辨識目標字串 10101010 時,狀態設計的核心為記錄「目前已匹配到目標字串的最長字首(Prefix)長度」。若遇到不匹配的字元,需根據已輸入字串的末尾部分,尋找能與目標字串字首匹配的最長字尾(Suffix),進行正確的狀態回退(此概念同 KMP 演算法)。當成功匹配 10101010 時,由於結尾的 1010 同時可作為下一次匹配 10101010 的前兩字元(如輸入 101010101010 會產生兩次 YY),故狀態需回退至「已匹配 1010」的狀態,而非回到初始狀態。


解題方法

1. 狀態定義
根據目標字串 10101010 的長度(44),定義 44 個狀態,分別代表目前已連續匹配到的字首長度:

  • S0S_0:初始狀態,表示目前匹配長度為 00(無任何有效字首)。
  • S1S_1:表示目前已匹配字首為 11(長度為 11)。
  • S2S_2:表示目前已匹配字首為 1010(長度為 22)。
  • S3S_3:表示目前已匹配字首為 101101(長度為 33)。

2. 狀態轉移與輸出推導

  • 在 S0S_0 狀態(匹配 ""):

    • 輸入 11:成功推進至字首 11,轉移至 S1S_1,輸出 NN。
    • 輸入 00:無法匹配,維持在 S0S_0,輸出 NN。
  • 在 S1S_1 狀態(匹配 "1"):

    • 輸入 11:字串變為 1111,末尾最長可匹配字首仍為 11,故維持在 S1S_1,輸出 NN。
    • 輸入 00:成功推進至字首 1010,轉移至 S2S_2,輸出 NN。
  • 在 S2S_2 狀態(匹配 "10"):

    • 輸入 11:成功推進至字首 101101,轉移至 S3S_3,輸出 NN。
    • 輸入 00:字串變為 100100,無任何有效字首匹配,回退至 S0S_0,輸出 NN。
  • 在 S3S_3 狀態(匹配 "101"):

    • 輸入 11:字串變為 10111011,末尾最長可匹配字首為 11,回退至 S1S_1,輸出 NN。
    • 輸入 00:字串變為 10101010,成功完成匹配!輸出 YY。由於末尾 1010 為下一輪匹配的字首,故轉移至 S2S_2。

3. 狀態轉移表(State Transition Table)

當前狀態 q∈Qq \in Q輸入 00(次態 / 輸出)輸入 11(次態 / 輸出)
S0S_0(初始)S0/NS_0 / NS1/NS_1 / N
S1S_1S2/NS_2 / NS1/NS_1 / N
S2S_2S0/NS_0 / NS3/NS_3 / N
S3S_3S2/YS_2 / YS1/NS_1 / N

狀態與轉移分析

由於本題為設計與圖示題,下表對各狀態在不同輸入下的轉移邏輯進行逐一檢驗與說明:

  • S0S_0 轉移分析:

    • 輸入 00 →\to 歷史序列末尾為 00,無法形成 10101010 的任何前綴 →\to 保持 S0/NS_0 / N。
    • 輸入 11 →\to 歷史序列末尾為 11,匹配 10101010 的第一個字元 →\to 轉移至 S1/NS_1 / N。
  • S1S_1 轉移分析:

    • 輸入 00 →\to 歷史序列末尾為 1010,匹配前兩個字元 →\to 轉移至 S2/NS_2 / N。
    • 輸入 11 →\to 歷史序列末尾為 1111,最後一個 11 可作為新匹配的開始 →\to 保持 S1/NS_1 / N。
  • S2S_2 轉移分析:

    • 輸入 00 →\to 歷史序列末尾為 100100,中斷匹配且無可利用後綴 →\to 回退至 S0/NS_0 / N。
    • 輸入 11 →\to 歷史序列末尾為 101101,匹配前三個字元 →\to 轉移至 S3/NS_3 / N。
  • S3S_3 轉移分析:

    • 輸入 00 →\to 歷史序列末尾為 10101010,達到完整匹配,輸出 YY;保留末尾 1010 作為下一次匹配前綴 →\to 轉移至 S2/YS_2 / Y。
    • 輸入 11 →\to 歷史序列末尾為 10111011,最後一個 11 可作為新匹配的開始 →\to 回退至 S1/NS_1 / N。

範例追蹤驗證(題目提示:1110101001):

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 7 題15 分

同上,請使用 C/C++/Java 之程式語言,設計一個可以辨識連續 1010 的程式。(提示:有限狀態機可以視為程式的流程圖)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查有限狀態機(Finite State Machine, FSM)與字串樣式辨識。

將輸入視為只含 0、1 的位元字串,目標是判斷其中是否出現連續子字串 1010。有限狀態機的每個狀態,代表目前已經比對成功的樣式前綴長度:

  • q0q_0:尚未比對到有效前綴
  • q1q_1:目前結尾為 1
  • q2q_2:目前結尾為 10
  • q3q_3:目前結尾為 101
  • q4q_4:已經辨識出 1010,為接受狀態

一旦進入 q4q_4,即代表輸入中曾出現 1010,後續字元不影響辨識結果,因此維持在 q4q_4。

解題方法

依照目前已匹配的字串,建立狀態轉移:

目前狀態讀入 0讀入 1意義
q0q_0q0q_0q1q_1尚未開始或無有效前綴
q1q_1q2q_2q1q_1已匹配 1
q2q_2q0q_0q3q_3已匹配 10
q3q_3q4q_4q1q_1已匹配 101
q4q_4q4q_4q4q_4已找到 1010

關鍵轉移說明如下:

  1. q0q_0 讀入 1 後,開始匹配樣式,因此進入 q1q_1。
  2. q1q_1 讀入 0 後得到 10,進入 q2q_2。
  3. q2q_2 讀入 1 後得到 101,進入 q3q_3。
  4. q3q_3 讀入 0 後得到 1010,進入接受狀態 q4q_4。
  5. q1q_1 讀入 1 時,最新結尾仍可視為一個新的 1,因此留在 q1q_1。
  6. q3q_3 讀入 1 時,字串結尾為 1011,其中最後一個字元 1 可作為新比對起點,因此回到 q1q_1。

C++ 程式

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

其他考古題