大一上離散數學

12996 字
65 分鐘
大一上離散數學

第一章:離散數學基礎與證明邏輯#

1. 命題邏輯與等價關係 (Propositional Logic)#

觀念與公式

直觀意義: 命題就像是一個開關,只能是「絕對的真 (True)」或「絕對的假 (False)」,不能模稜兩可。當我們用邏輯運算子(如 AND, OR, NOT)把多個命題串起來時,就像是在設計電路,透過真值表可以窮舉所有可能的結果。

必背公式與定律:

  • 條件語句 (Conditional Statement): pq¬pqp \rightarrow q \equiv \neg p \vee q
  • 雙條件語句 (Bi-conditional Statement): pq(pq)(qp)p \leftrightarrow q \equiv (p \rightarrow q) \wedge (q \rightarrow p)
  • 笛摩根定律 (De Morgan’s Laws): ¬(pq)¬p¬q\neg (p \vee q) \equiv \neg p \wedge \neg q 以及 ¬(pq)¬p¬q\neg (p \wedge q) \equiv \neg p \vee \neg q
  • 逆反命題 (Contrapositive): pq¬q¬pp \rightarrow q \equiv \neg q \rightarrow \neg p

實戰演練(題型大全)

【題型一:基本真值表判斷】(常考頻率:高)

題目: 證明 (pq)(pq)(p \wedge q) \rightarrow (p \vee q) 是一個恆真句 (Tautology)。

Step-by-step 解答:

  1. 將條件語句轉換為 OR 形式:¬(pq)(pq)\neg(p \wedge q) \vee (p \vee q) (透過 pq¬pqp \rightarrow q \equiv \neg p \vee q)。
  2. 套用笛摩根定律:(¬p¬q)(pq)(\neg p \vee \neg q) \vee (p \vee q)
  3. 使用結合律與交換律重新分組:(¬pp)(¬qq)(\neg p \vee p) \vee (\neg q \vee q)
  4. 套用否定律:T0T0T0T_0 \vee T_0 \equiv T_0 (恆真)。

【題型二:邏輯推理謎題】(重要程度:中)

題目: 在一個島上有兩種人:一種只說真話,一種只說謊話。你遇到 A 和 B 兩人。A 說:「B 總是說真話。」B 說:「我們是不同種類的人。」請問 A 和 B 分別是哪種人?

Step-by-step 解答:

  1. 假設 A 是說真話的人,那麼 B 也必須是說真話的人。
  2. 如果 B 也是說真話的人,B 說的「我們是不同種類的人」就變成假話,這與前提矛盾。
  3. 因此 A 必然是說謊話的人。
  4. 既然 A 說謊,A 說「B 說真話」是假的,代表 B 實際上也是說謊話的人。
  5. B 說「我們是不同種類的人」是謊話,符合兩人都說謊(同種類)的事實。結論:兩人皆為說謊者。

2. 述詞與量詞 (Predicate Calculus)#

觀念與公式

直觀意義: 述詞就像是一個「填空題」P(x)P(x),單看述詞並不知道真假;而量詞則是規定了「範圍」。全稱量詞 (\forall) 代表「每一個都要滿足條件」,存在量詞 (\exists) 代表「只要找到一個符合的即可」。

必背公式與定律:

  • 量詞的笛摩根定律: ¬xP(x)x¬P(x)\neg \forall x P(x) \equiv \exists x \neg P(x) 以及 ¬xP(x)x¬P(x)\neg \exists x P(x) \equiv \forall x \neg P(x)

實戰演練(題型大全)

【題型一:量詞真偽判斷與反例】(常考頻率:高)

題目: 判斷 x(x2x)\forall x (x^2 \ge x) 在不同論域 (Domain) 下的真偽:(a) 所有實數 (b) 所有整數。

Step-by-step 解答:

  1. (a) 在實數領域中為 False。反例 (counter-example):取 x=0.5x = 0.50.52=0.250.5^2 = 0.25,並不 0.5\ge 0.5
  2. (b) 在整數領域中為 True。因為 x2xx(x1)0x0x^2 \ge x \Leftrightarrow x(x-1) \ge 0 \Leftrightarrow x \le 0x1x \ge 1。在整數中,不存在 0<x<10 < x < 1 的數字,故永遠成立。

【題型二:日常語句翻譯成邏輯符號】(常考頻率:極高)

題目: 將「每個人都恰好有一個最要好的朋友」轉換為邏輯表示式。令 B(x,y)B(x, y) 為「yyxx 的最要好朋友」。

Step-by-step 解答:

  1. 「每個人 xx」:x\forall x
  2. 「存在一個朋友 yy」:y\exists y
  3. 「恰好只有這一個 yy」:除了 yy 之外的任何 zz,如果也是好朋友,那麼 zz 必定等於 yy
  4. 結合上述條件,推導邏輯表示法:xy(B(x,y)z(B(x,z)z=y))\forall x \exists y (B(x,y) \wedge \forall z (B(x,z) \rightarrow z=y))

3. 推理規則 (Rules of Inference)#

觀念與公式

直觀意義: 這是偵探辦案的標準流程。如果我們知道某些前提(線索)為真,就可以按照特定的套路(規則)推導出新的結論。最常用的招式是「若 A 則 B,現在 A 發生了,所以 B 一定會發生」。

必背公式與定律:

  • Modus Ponens (肯定前件): p,pqqp, p \rightarrow q \vdash q
  • Modus Tollens (否定後件): ¬q,pq¬p\neg q, p \rightarrow q \vdash \neg p
  • Hypothetical Syllogism (三段論): pq,qrprp \rightarrow q, q \rightarrow r \vdash p \rightarrow r
  • Disjunctive Syllogism (選言三段論): ¬p,pqq\neg p, p \vee q \vdash q

實戰演練(題型大全)

【題型一:複合邏輯推理證明】(重要程度:高)

題目: 已知前提:(1) 如果你寄電子郵件給我,我就會寫完程式。(2) 如果你沒寄電子郵件給我,我就會早點睡覺。(3) 如果我早點睡覺,我就會神清氣爽地醒來。請證明結論:「如果我沒寫完程式,我就會神清氣爽地醒來」。

Step-by-step 解答:

  1. 定義變數:pp = 你寄信、qq = 我寫完程式、rr = 我早睡、ss = 我神清氣爽。
  2. 前提列式:pqp \rightarrow q, ¬pr\neg p \rightarrow r, rsr \rightarrow s。目標結論:¬qs\neg q \rightarrow s
  3. 利用 pqp \rightarrow q 的逆反命題:¬q¬p\neg q \rightarrow \neg p
  4. 利用假言三段論結合 ¬q¬p\neg q \rightarrow \neg p¬pr\neg p \rightarrow r:得出 ¬qr\neg q \rightarrow r
  5. 利用假言三段論結合 ¬qr\neg q \rightarrow rrsr \rightarrow s:得出 ¬qs\neg q \rightarrow s,證明完畢。

4. 證明方法與策略 (Methods of Proving)#

觀念與公式

直觀意義: 面對數學命題的攻擊策略。「直接證明」是正面直拳擊破;「反證法 (Contradiction)」是先假裝對手是對的,然後找出邏輯漏洞自相矛盾;「對偶證明 (Contraposition)」則是閃避正面,從背後(否定結論)攻擊。

實戰演練(題型大全)

【題型一:對偶證明法 Contraposition】(常考頻率:高)

題目: 證明:如果 3n+23n+2 是奇數,則 nn 是奇數。

Step-by-step 解答:

  1. 假設結論的反面:nn 是偶數。
  2. 這表示存在某個整數 kk 使得 n=2kn = 2k
  3. 代入原式:3n+2=3(2k)+2=6k+2=2(3k+1)3n+2 = 3(2k)+2 = 6k+2 = 2(3k+1)
  4. 因為 2(3k+1)2(3k+1) 必定是偶數,代表 3n+23n+2 是偶數。因為結論的否定推導出前提的否定,故原命題成立。

【題型二:反證法 Contradiction】(常考頻率:極高)

題目: 證明 2\sqrt{2} 是無理數。

Step-by-step 解答:

  1. 假設 2\sqrt{2} 是有理數,則它可以表示為兩個最簡整數比 a/ba/b (b0b \neq 0,且 a,ba,b 互質)。
  2. 平方得到 2=a2/b22 = a^2 / b^2,移項得 a2=2b2a^2 = 2b^2。這代表 a2a^2 是偶數,推導出 aa 也必須是偶數。
  3. a=2ca = 2c,代回得 (2c)2=2b24c2=2b2b2=2c2(2c)^2 = 2b^2 \Rightarrow 4c^2 = 2b^2 \Rightarrow b^2 = 2c^2
  4. 這代表 b2b^2 是偶數,推導出 bb 也是偶數。
  5. a,ba, b 皆為偶數,它們有公因數 2,與前提「最簡整數比」矛盾!故假設錯誤,2\sqrt{2} 必為無理數。

【題型三:無效證明與邏輯謬誤】(重要程度:高)

題目: 找出證明 1=21=2 的謬誤。證明步驟為:a=ba2=aba2b2=abb2(ab)(a+b)=b(ab)a+b=b2b=b2=1a=b \Rightarrow a^2=ab \Rightarrow a^2-b^2=ab-b^2 \Rightarrow (a-b)(a+b)=b(a-b) \Rightarrow a+b=b \Rightarrow 2b=b \Rightarrow 2=1

Step-by-step 解答:

  1. 錯誤發生在 (ab)(a+b)=b(ab)(a-b)(a+b)=b(a-b) 轉換到 a+b=ba+b=b 的這一步。
  2. 因為我們初始假設 a=ba=b,所以 (ab)=0(a-b) = 0
  3. 在等式兩邊同除以 (ab)(a-b) 等同於「除以 0」,這在數學上是不允許且無效的操作。

5. 數學歸納法 (Mathematical Induction)#

觀念與公式

直觀意義: 推骨牌效應。你要確保第一張骨牌會倒 (Basic Step, 基礎步 P(1)P(1)),並且證明「只要第 kk 張骨牌倒下,就一定能推倒第 k+1k+1 張」(Inductive Step, 歸納步 P(k)P(k+1)P(k) \rightarrow P(k+1))。全部成立後,所有骨牌都會倒下。

必背公式與定律:

  • 標準歸納法核心: P(1)k(P(k)P(k+1))nP(n)P(1) \wedge \forall k (P(k) \rightarrow P(k+1)) \Rightarrow \forall n P(n)
  • 強歸納法核心: n((P(1)P(2)...P(n))P(n+1))\forall n ((P(1) \wedge P(2) \wedge ... \wedge P(n)) \rightarrow P(n+1))

實戰演練(題型大全)

【題型一:數列總和證明】(常考頻率:極高)

題目: 證明前 nn 個正奇數的總和為 n2n^2

Step-by-step 解答:

  1. 基礎步 (Basic Step):n=1n=1 時,前 1 個正奇數為 1,其總和等於 12=11^2 = 1,成立。
  2. 歸納步 (Inductive Step): 假設 P(k)P(k) 為真,即 1+3+...+(2k1)=k21+3+...+(2k-1) = k^2
  3. 我們要證明 P(k+1)P(k+1) 也為真。將 P(k)P(k) 加上下一個奇數 (2k+1)(2k+1)1+3+...+(2k1)+(2k+1)=k2+(2k+1)1+3+...+(2k-1)+(2k+1) = k^2 + (2k+1)
  4. 化簡等式右邊:k2+2k+1=(k+1)2k^2 + 2k + 1 = (k+1)^2。故得證。

【題型二:歸納法的經典錯誤】(常考頻率:中)

題目: 證明所有貓的顏色都一樣 (P(n)P(n) = 任意 nn 隻貓顏色相同)。假設 P(k)P(k) 成立,當有 k+1k+1 隻貓時,移走其中一隻 yy,剩下的 kk 隻貓顏色一樣。再把 yy 換回來並移走另一隻貓,剩下的 kk 隻貓顏色也一樣,因此所有貓顏色一樣。這個證明哪裡錯了?

Step-by-step 解答:

  1. 這個證明的漏洞在於歸納步從 P(1)P(1) 推向 P(2)P(2) 時失效。
  2. k+1=2k+1 = 2 隻貓時,移走一隻貓 yy,剩下 1 隻貓 (顏色當然自己跟自己一樣)。
  3. 但當你把 yy 換回來並移走另一隻時,這「兩組」剩下的貓(各只有一隻)之間,完全沒有交集 (Overlap) 的貓可以作為顏色相同的橋樑。
  4. 推論中斷,歸納失敗。

6. 鴿籠原理 (Pigeonhole Principle)#

觀念與公式

直觀意義: 如果你有 10 隻鴿子,但只有 9 個籠子,晚上鴿子回籠時,絕對「至少有一個籠子會擠兩隻以上的鴿子」。

必背公式與定律:

  • 廣義鴿籠原理 (Generalized Pigeonhole Principle): 若將 NN 個物件放入 kk 個箱子中,至少會有一個箱子包含 N/k\lceil N/k \rceil 個(或以上)的物件。

實戰演練(題型大全)

【題型一:同月出生問題】(常考頻率:高)

題目: 證明在 80 位以上的學生中,至少有 7 人在同一個月份出生。

Step-by-step 解答:

  1. 將「學生」當作鴿子 (N=80N = 80),將「月份」當作籠子 (k=12k = 12)。
  2. 套用廣義鴿籠原理公式:N/k=80/12\lceil N/k \rceil = \lceil 80 / 12 \rceil
  3. 80/12=6.66...80 / 12 = 6.66...,無條件進位得到 7。
  4. 因此至少有 7 人在同一個月出生,證明完畢。

【題型二:棋盤上的城堡問題】(常考頻率:中)

題目: 證明若將 33 個城堡 (Rooks) 放在標準 8×88\times8 棋盤上,至少有 5 個城堡無法互相攻擊。

Step-by-step 解答:

  1. 城堡的攻擊模式為同行或同列。我們可以在棋盤上標記數字來建立「不互攻」的集合。
  2. 將棋盤劃分成對角線位移的標記區塊(例如對角線依序標上 1~8),同一數字的格子絕不會處於同行或同列。這產生了 8 個彼此獨立的箱子 (k=8k=8)。
  3. 共有 33 個城堡 (N=33N=33)。
  4. 根據鴿籠原理:33/8=4.125=5\lceil 33 / 8 \rceil = \lceil 4.125 \rceil = 5。至少有 5 個城堡落在同一個標記區域,它們必定無法互相攻擊。

⚠️ 第一章考前避坑指南#

  1. 命題邏輯的陷阱: 絕對不要把條件語句 pqp \rightarrow q 和它的逆命題 (Converse) qpq \rightarrow p 搞混,兩者的真值完全不相等!
  2. 量詞的轄域 (Scope) 盲點: 使用全稱或存在量詞時,必須非常明確定義「論域 (Domain)」。同一個命題在整數論域為 True,在實數論域可能就是 False。
  3. 歸納法的虛假安全感: 不要因為 P(1)P(1) 成立,且代了 P(2),P(3)P(2), P(3) 發現好像對了,就直接下結論。歸納法的靈魂在於嚴謹推導 P(k)P(k+1)P(k) \rightarrow P(k+1),且必須注意前後集合重疊的盲點(如前述貓咪顏色的謬誤)。
  4. 證明的除零謬誤: 使用直接證明法操作等式時,要相消或除以代數,務必檢查該代數是否為 0,否則會推導出 1=21=2 的荒謬結論。

第二章:離散數學核心——計數法則、排列與組合#

1. 加法與乘法原理 (Rule of Sum & Product)#

觀念與公式: 計數的最底層邏輯在於事件是否獨立與互斥。這如同在 AtCoder 或 Codeforces 等平台上分析演算法時,並列的迴圈時間複雜度相加,而巢狀迴圈的時間複雜度則相乘。

  • 加法原理 (Rule of Sum):處理「互斥事件」(OR 邏輯)。若事件 A 有 mm 種方法,事件 B 有 nn 種方法,兩者不能同時發生,則總方法數為 m+nm + n
  • 乘法原理 (Rule of Product):處理「連續或獨立事件」(AND 邏輯)。若事件 A 有 mm 種方法,接著事件 B 有 nn 種方法,則總方法數為 m×nm \times n

實戰演練(題型大全):

【題型一:因數個數計算】(常考頻率:高)

題目:請問 1400 共有多少個正因數?

Step-by-step 解答

  1. 進行質因數分解:1400=23×52×71400 = 2^3 \times 5^2 \times 7
  2. 每個質因數的次方數加 1 後相乘(代表取 0 次到最大次方的選擇):(3+1)×(2+1)×(1+1)=24(3+1) \times (2+1) \times (1+1) = 24 個因數。

【題型二:多類別物件選擇】(常考頻率:中)

題目:有 5 本中文書、7 本英文書、10 本法文書,要從中挑選兩本「不同語言」的書,有幾種選法?

Step-by-step 解答

  1. 分為三種互斥情況:中英、中法、英法。
  2. 應用乘法與加法原理:5×7+5×10+7×10=1555 \times 7 + 5 \times 10 + 7 \times 10 = 155 種。

2. 排斥原理與樹狀圖 (Inclusion-Exclusion & Tree Diagrams)#

觀念與公式:

  • 排斥原理 (Principle of Inclusion-Exclusion):當計算兩組事件的方法數時,為避免重複計算交集的部分,必須將其扣除。公式為 AB=A+BAB|A \cup B| = |A| + |B| - |A \cap B|
  • 樹狀圖 (Tree Diagrams):適合用來窮舉並視覺化有條件限制的連續選擇,類似演算法中的深度優先搜尋 (DFS) 遍歷狀態樹。

實戰演練(題型大全):

【題型一:字串條件聯集】(常考頻率:極高)

題目:長度為 8 的位元字串中,有多少個是「以 1 開頭」或「以 00 結尾」?

Step-by-step 解答

  1. 以 1 開頭的字串數:剩下的 7 個位元可任意填,共 27=1282^7 = 128 種。
  2. 以 00 結尾的字串數:前面的 6 個位元可任意填,共 26=642^6 = 64 種。
  3. 同時以 1 開頭且以 00 結尾的字串數:中間 5 個位元可任意填,共 25=322^5 = 32 種。
  4. 總數 =128+6432=160= 128 + 64 - 32 = 160 種。

【題型二:反向扣除法】(常考頻率:高)

題目:350 位求職者中,220 位主修 CS,147 位主修商業,51 位雙主修 CS 與商業。請問有多少位「既沒有主修 CS 也沒有主修商業」?

Step-by-step 解答

  1. 先算出有主修其中至少一項的人數:220+14751=316220 + 147 - 51 = 316
  2. 總人數扣除上述人數:350316=34350 - 316 = 34 位。

3. 排列與組合 (Permutations and Combinations)#

觀念與公式:

  • 排列 (Permutation):從 nn 個相異物件中選出 rr 個並考慮順序。公式:P(n,r)=n!(nr)!P(n,r) = \frac{n!}{(n-r)!}
  • 組合 (Combination):從 nn 個相異物件中選出 rr 個,不考慮順序。公式:C(n,r)=n!r!(nr)!C(n,r) = \frac{n!}{r!(n-r)!}
  • 核心關聯:P(n,r)=P(r,r)×C(n,r)P(n,r) = P(r,r) \times C(n,r)

實戰演練(題型大全):

【題型一:不可區分物件排列(同物排列)】(常考頻率:極高)

題目:重新排列單字 “SUCCESS” 的字母,能產生多少種不同的字串?

Step-by-step 解答

  1. “SUCCESS” 共 7 個字母,若全相異則有 7!7! 種排列。
  2. 處理不可區分的物件:其中有 2 個 ‘C’ 和 3 個 ‘S’ 是不可區分的。
  3. 根據公式 n!n1!n2!...nk!\frac{n!}{n_1! n_2! ... n_k!},答案為 7!2!3!\frac{7!}{2!3!} 種。

4. 重複組合與隔板法 (Combinations with Repetitions)#

觀念與公式: 當從 nn 種不同的物件中選出 rr 個,且不考慮順序、每種物件有無限供應時,此即為重複組合。

  • 隔板法 (Stars and Bars):等價於從 (n1+r)(n-1+r) 個位置中選出 rr 個位置放球,即 C(n1+r,r)C(n-1+r, r)

實戰演練(題型大全):

【題型一:方程式非負整數解】(常考頻率:極高)

題目:方程式 x+y+z=11x+y+z=11 中,若 x,y,zx, y, z 皆為非負整數,共有幾組解?

Step-by-step 解答

  1. 將 11 視為 r=11r=11 顆相同的球,變數 x,y,zx, y, z 視為 n=3n=3 個不同的箱子。
  2. 代入隔板法公式 C(n1+r,r)=C(31+11,11)=C(13,11)C(n-1+r, r) = C(3-1+11, 11) = C(13, 11) 組解。

5. 經典恆等式與二項式定理 (Identities and Binomial Theorem)#

觀念與公式:

  • Pascal 恆等式C(n,r)=C(n1,r)+C(n1,r1)C(n,r) = C(n-1, r) + C(n-1, r-1)
  • 二項式定理(x+y)n=r=0nC(n,r)xnryr(x+y)^n = \sum_{r=0}^n C(n,r) x^{n-r} y^r
  • Vandermonde 恆等式C(m+n,r)=k=0rC(m,rk)C(n,k)C(m+n, r) = \sum_{k=0}^r C(m, r-k) C(n, k)

實戰演練(題型大全):

【題型一:利用 Vandermonde 簡化級數】(常考頻率:高)

題目:化簡 k=0nC(n,k)2\sum_{k=0}^n C(n,k)^2

Step-by-step 解答

  1. 將平方拆解,並利用組合對稱性:k=0nC(n,k)2=k=0nC(n,nk)C(n,k)\sum_{k=0}^n C(n,k)^2 = \sum_{k=0}^n C(n,n-k)C(n,k)
  2. 對照 Vandermonde 恆等式,令 m=nm=nr=nr=n,即可將原式化簡為 C(2n,n)C(2n, n)

⚠️ 第二章考前避坑指南#

  1. 「排列」與「組合」的誤用:看見題目先問自己「順序互換是否代表不同結果?」,若不影響絕對是組合 (CC)。
  2. 同物排列忘記除掉階乘:計算密碼或字串時,若出現相同的字元,最後總排列數務必除以重複字元個數的階乘。
  3. 「至少」題型未用反向扣除:題目若出現「至少包含一個」這類字眼,正面窮舉極易遺漏情況,請立刻切換為「全部情況 - 完全沒有的情況」。

第三章:離散數學底層邏輯——集合、函數與關係#

1. 集合論、勢與排容原理 (Sets, Cardinality & Inclusion-Exclusion)#

觀念與公式: 集合(Set)是無序的物件集合,在資訊工程中,無論是資料庫查詢還是演算法的狀態空間,皆建立在集合操作之上。

  • 冪集 (Power Set): 集合 AA 的所有子集所構成的集合 2A2^A。若 A=n|A| = n,則 2A=2n|2^A| = 2^n
  • 排容原理推廣: 用於精準計算聯集大小。奇數個集合的交集為正號,偶數個集合的交集為負號。

實戰演練(題型大全):

【題型一:排容原理應用】

題目: 請問在 1 到 250 之間的整數中,有多少個數字可以被 2, 3, 5, 或 7 整除?

Step-by-step 解答:

  1. 定義 A2,A3,A5,A7A_2, A_3, A_5, A_7 分別為 1 到 250 之間能被 2, 3, 5, 7 整除的集合。
  2. 計算單一集合大小:A2=250/2=125|A_2| = \lfloor 250/2 \rfloor = 125A3=83|A_3| = 83A5=50|A_5| = 50A7=35|A_7| = 35
  3. 計算兩兩交集(取最小公倍數):A2A3=250/6=41|A_2 \cap A_3| = \lfloor 250/6 \rfloor = 41,依序計算出所有 C24=6C^4_2 = 6 種組合。
  4. 計算三個交集:A2A3A5=250/30=8|A_2 \cap A_3 \cap A_5| = \lfloor 250/30 \rfloor = 8,依序計算出所有 C34=4C^4_3 = 4 種組合。
  5. 計算四個交集:A2A3A5A7=250/210=1|A_2 \cap A_3 \cap A_5 \cap A_7| = \lfloor 250/210 \rfloor = 1
  6. 套用公式:(125+83+50+35)(41+25+17+16+11+7)+(8+5+3+2)1=193(125+83+50+35) - (41+25+17+16+11+7) + (8+5+3+2) - 1 = 193

2. 函數映射與高斯符號 (Functions, Floor & Ceiling)#

觀念與公式:

  • 核心映射關係:

  • Injective (單射): f(a)=f(b)    a=bf(a) = f(b) \implies a = b

  • Surjective (滿射): 對應域等於值域 (Range)。

  • Bijective (雙射): 同時滿足單射與滿射。

  • 高斯符號運算定律 (已知 nn 為整數):

  • x=x\lfloor -x \rfloor = -\lceil x \rceil

  • x+n=x+n\lfloor x+n \rfloor = \lfloor x \rfloor + n

  • x+yx+y\lceil x+y \rceil \neq \lceil x \rceil + \lceil y \rceil

實戰演練(題型大全):

【題型一:高斯符號的代數證明】

題目: 證明 2x=x+x+0.5\lfloor 2x \rfloor = \lfloor x \rfloor + \lfloor x + 0.5 \rfloor 對所有實數 xx 皆成立。

Step-by-step 解答:

  1. 令小數部分 {x}=xx\{x\} = x - \lfloor x \rfloor
  2. 左式 (LHS) =2x+2{x}=2x+2{x}= \lfloor 2\lfloor x \rfloor + 2\{x\} \rfloor = 2\lfloor x \rfloor + \lfloor 2\{x\} \rfloor
  3. Case 1: 0{x}<0.5    02{x}<10 \le \{x\} < 0.5 \implies 0 \le 2\{x\} < 1。左式 =2x+0= 2\lfloor x \rfloor + 0。右式 =x+x+0.5=x+x=2x= \lfloor x \rfloor + \lfloor x + 0.5 \rfloor = \lfloor x \rfloor + \lfloor x \rfloor = 2\lfloor x \rfloor。左式 = 右式。
  4. Case 2: 0.5{x}<1    12{x}<20.5 \le \{x\} < 1 \implies 1 \le 2\{x\} < 2。左式 =2x+1= 2\lfloor x \rfloor + 1。右式 =x+(x+1)=2x+1= \lfloor x \rfloor + (\lfloor x \rfloor + 1) = 2\lfloor x \rfloor + 1。左式 = 右式。

3. 二元關係與遞移閉包 (Binary Relations & Closures)#

觀念與公式: 二元關係直接對應到有向圖的結構。

  • 四大核心性質: 反身性 (Reflexive)、對稱性 (Symmetric)、反對稱性 (Antisymmetric)、遞移性 (Transitive)。 在離散數學中,二元關係(Binary Relation)如果定義在一個集合 AA 上,我們可以用有向圖(Directed Graph)來完美視覺化:

  • 集合中的元素就是圖上的頂點(Vertices)

  • 如果元素 aabb 有關係(即 (a,b)R(a, b) \in R),就在圖上畫一條aa 指向 bb 的有向邊(Edge)

1. 反身性 (Reflexive)#

  • 數學定義: 對於集合中的每一個元素 aa(a,a)(a, a) 都必須在關係中。
  • 圖形特徵: 圖上的每一個頂點,都必須有一條指向自己的「自環」(Loop)。只要有一個頂點漏掉,就不是反身。
  • 生活實例: 「等於(==)」、「大於等於(\ge)」、「實數 a,ba, b 滿足 a×b0a \times b \ge 0」。
  • 例子: 每一個數字都等於自己(5=55 = 5),所以「等於」具備反身性。

2. 對稱性 (Symmetric)#

  • 數學定義: 如果 (a,b)(a, b) 在關係中,那麼顛倒過來的 (b,a)(b, a)必須在關係中。
  • 圖形特徵: 圖上只要有從 aabb 的單向箭頭,就必定同時存在一條從 bbaa 的回頭箭頭。換句話說,所有頂點之間的連線要嘛不連,要連就一定是「雙向道」。
  • 生活實例: 「兄弟姊妹關係」、「同學關係」、「距離小於 5 公里」。
  • 例子: 如果甲是乙的同學,乙就一定是甲的同學。

3. 反對稱性 (Antisymmetric)#

  • 數學定義: 如果 (a,b)(a, b) 在關係中,且 (b,a)(b, a) 也在關係中,那麼 aabb 必須是同一個元素(即 a=ba = b)。
  • 白話文: 絕對不允許出現不同頂點之間的「雙向道」
  • 圖形特徵: 任意兩個不同的頂點之間,最多只能有「單向道」,或者完全沒連線。唯一的雙向道只能發生在頂點自己指自己的「自環」上。
  • 生活實例: 「小於等於(\le)」、「包含於(\subseteq)」。
  • 例子: 如果數字 xyx \le yyxy \le x,這兩個數字唯一的可能就是 x=yx = y

4. 遞移性 (Transitive)#

  • 數學定義: 如果 (a,b)(a, b) 在關係中,且 (b,c)(b, c) 也在關係中,那麼起點到終點的 (a,c)(a, c)必須在關係中。
  • 圖形特徵: 如果圖上有一條路徑可以aa 走到 bb,再從 bb 走到 cc,那麼圖上就必須存在一條「捷徑」直接從 aa 指向 cc
  • 生活實例: 「大於(>>)」、「等於(==)」、「祖先關係」。
  • 例子: 如果張三比李四高(a>ba > b),李四又比王五高(b>cb > c),那張三一定比王五高(a>ca > c)。

這四個性質是後續衍生出兩個離散數學超級大考點的基石:

  1. 等價關係 (Equivalence Relation): 同時具備 反身、對稱、遞移(就像「等於」)。
  2. 偏序關係 (Partial Order Relation): 同時具備 反身、反對稱、遞移(就像「小於等於」)。
  • 遞移閉包演算法: 包含原關係的「最小」遞移關係。在競賽中常使用 Floyd-Warshall 演算法,時間複雜度為 O(n3)O(n^3)

實戰演練(題型大全):

【題型一:遞移閉包的構造】

題目: 尋找關係 R={(1,1),(1,2),(2,3),(2,4),(3,4),(4,2)}R = \{(1,1), (1,2), (2,3), (2,4), (3,4), (4,2)\} 的遞移閉包 (Transitive Closure)。

Step-by-step 解答:

  1. 建立初始有向圖與矩陣 R1=RR^1 = R
  2. 計算 R2R^2 (走兩步可達的點對):因為 (1,2)(1,2)(2,3)(2,3),新增 (1,3)(1,3)。因為 (1,2)(1,2)(2,4)(2,4),新增 (1,4)(1,4)。因為 (3,4)(3,4)(4,2)(4,2),新增 (3,2)(3,2) 等等。
  3. 計算 R3R^3 直到沒有新邊加入為止。
  4. 最終檢查圖中任何一條長度大於 1 的路徑,確保起終點間皆有直接連線,即為遞移閉包矩陣。

4. 等價關係、偏序集與格 (Equivalence Relations, Posets & Lattices)#

觀念與公式:

  • 等價關係: 同時具備反身性、對稱性、遞移性。它會將集合切割成數個互不相交的「等價類」。
  • 偏序集 (Poset): 同時具備反身性、反對稱性、遞移性。
  • Hasse Diagram (哈斯圖): 去除自環、省略遞移邊,統一朝上簡化的圖形。
  • 格 (Lattice): 在偏序集中,若任意兩元素都有唯一的「最小上界 (LUB)」與「最大下界 (GLB)」,則該偏序集稱為格。

實戰演練(題型大全):

【題型一:Hasse Diagram 與格的判斷】

題目: 給定偏序集 ({1,2,3,4,6,8,12},)(\{1,2,3,4,6,8,12\}, |),其中 | 代表整除關係。請建構 Hasse Diagram 並判斷它是否為 Lattice。

Step-by-step 解答:

  1. 建構哈斯圖: 最底層放置 11。上一層放置 2,32, 3。再上一層放置 4,64, 6。最上層放置 8,128, 12。依照整除關係連線並隱藏遞移邊。
  2. 尋找極端值: 極大值 (Maximal) 為頂端沒有對外連線的節點:8,128, 12。極小值 (Minimal) 為底端:11
  3. Lattice 判斷: 考慮點 881212。它們的 LUB 應該是 24,但在集合 {1,2,3,4,6,8,12}\{1,2,3,4,6,8,12\} 中不存在共同的上界,因此該偏序集不是格 (Lattice)。

⚠️ 第三章考前避坑指南#

  1. 空集的陷阱: A\emptyset \subseteq A 永遠成立,但 A\emptyset \in A 不一定成立。務必分清「子集」與「元素」的符號差異。
  2. 反對稱 \neq 不對稱: Antisymmetric 絕對不是 Symmetric 的相反詞!一個關係可以同時是對稱且反對稱的。
  3. 等價類互斥定律: 任意兩個等價類要嘛完全相等,要嘛交集為空,絕對不可能出現「部分重疊」的狀況。

第四章:圖論 (Graph Theory)#

1. 圖的基礎定義與術語 (Graph Basics & Terminology)#

觀念與公式#

直觀意義:圖 (Graph) 是用來描述物件之間「關聯性」的數學結構。想像節點 (Vertices) 是城市,邊 (Edges) 是連接城市的公路。若公路是單行道,則是「有向圖 (Directed Graph)」;若雙向皆可通行,則是「無向圖 (Undirected Graph)」。

  • 圖的正式定義G=(V,E)G = (V, E),其中 VV 是非空頂點集合,EE 是邊集合。

  • 簡單圖 (Simple Graph):沒有自我環 (Self-loop,即起點與終點相同的邊),且兩節點間最多只有一條邊的圖。

  • 分支度 (Degree)deg(v)\deg(v) 代表連接到頂點 vv 的邊數。注意:一個自我環 (Loop) 對該頂點的 deg(v)\deg(v) 會貢獻 2 次

  • 有向圖分支度:分為入分支度 deg(v)\deg^-(v) (箭頭指向 vv) 與出分支度 deg+(v)\deg^+(v) (箭頭離開 vv)。

實戰演練(題型大全)#

基礎考題 1:圖的最大邊數極限 假設有一個具備 nn 個頂點的簡單圖 GG。請問在 (1) GG 是無向圖 (2) GG 是有向圖的情況下,最多可以包含幾條邊?

【Step-by-step 解析】

  • (1) 無向簡單圖:每兩個不同的頂點之間最多只能存在一條邊,且沒有自我環。這是高中排列組合的經典問題:從 nn 個頂點中任選 2 個頂點連線,共有 C(n,2)C(n, 2) 種可能。

Max Edges (Undirected)=(n2)=n(n1)2\text{Max Edges (Undirected)} = \binom{n}{2} = \frac{n(n-1)}{2}

  • (2) 有向簡單圖:每兩個頂點 u,vu, v 之間,可以有 uvu \to v 以及 vuv \to u 兩條邊。因此邊數是無向圖的兩倍。

Max Edges (Directed)=2×(n2)=n(n1)\text{Max Edges (Directed)} = 2 \times \binom{n}{2} = n(n-1)


2. 握手定理 (Handshaking Theorem)#

觀念與公式#

直觀意義:一場派對中,每發生一次「握手」(一條邊),必然會有「兩個人」(兩個頂點) 參與。因此,所有人握手的總次數,一定是實際發生握手事件數量的兩倍。

  • 無向圖握手定理

vVdeg(v)=2m\sum_{v \in V} \deg(v) = 2m

(其中 mm 為總邊數。每條邊必貢獻 2 個分支度)

  • 有向圖握手定理:一條有向邊必然有一個起點和一個終點,故總入分支度必定等於總出分支度,且等於總邊數 mm

vVdeg(v)=uVdeg+(u)=m\sum_{v \in V} \deg^-(v) = \sum_{u \in V} \deg^+(u) = m

  • 必背推論 (Corollary):任何無向圖中,「奇數分支度的頂點」之總數量必定是偶數。這在證明題中極度常考!

實戰演練(題型大全)#

經典證明題:奇數點數量的限制 證明:「在任何無向圖中,奇數分支度 (odd degree) 的頂點個數必定為偶數。」

【Step-by-step 解析】

  1. 將所有頂點集合 VV 拆分為兩個子集:偶數分支度頂點集合 VevenV_{even} 與奇數分支度頂點集合 VoddV_{odd}
  2. 根據握手定理:

2m=vVdeg(v)=vVevendeg(v)+vVodddeg(v)2m = \sum_{v \in V} \deg(v) = \sum_{v \in V_{even}} \deg(v) + \sum_{v \in V_{odd}} \deg(v)

  1. 觀察等式:左式 2m2m 是一個偶數;右式第一項 vVevendeg(v)\sum_{v \in V_{even}} \deg(v) 因為每個項都是偶數,加總必為偶數。
  2. 因此,右式第二項 vVodddeg(v)\sum_{v \in V_{odd}} \deg(v) 也必須是偶數。
  3. 由於 VoddV_{odd} 中每個頂點的分支度都是奇數,要讓一堆奇數相加成為偶數,這些奇數的「個數」必須是偶數。故得證。

3. 特殊簡單圖與二分圖 (Special Simple Graphs & Bipartite Graphs)#

觀念與公式#

熟悉以下幾種標準積木,它們是建構複雜題目的基礎:

  1. 完全圖 (Complete Graph, KnK_n)nn 個頂點,任兩點間皆有連線。
  2. 環狀圖 (Cycle, CnC_n, n3n \ge 3)nn 個頂點排成一個圈。
  3. 輪狀圖 (Wheel, WnW_n, n3n \ge 3):在 CnC_n 中間加上一個「軸心」頂點,並與外圈 nn 個點全部連線。總頂點數為 n+1n+1
  4. NN 維方塊圖 (n-cube, QnQ_n):擁有 2n2^n 個頂點。可想成二進位字串,若兩個頂點的字串只有「1個 bit」不同,則存在一條邊。
  5. 二分圖 (Bipartite Graph):頂點可完美劃分為兩個互不相交的集合 VVWW,使得圖中所有的邊都只跨越這兩個集合之間(集合內部絕對沒有邊)。
  • 完全二分圖 (Km,nK_{m,n}):集合 VVmm 個頂點,集合 WWnn 個頂點,兩集合間「所有可能的連線」都存在。

實戰演練(題型大全)#

常考判斷題:二分圖的著色判別法 說明如何演算法化地檢查一個連通圖是否為二分圖?

【Step-by-step 解析】

  • 定理:一個圖是二分圖     \iff 可以使用「2 種顏色」對所有頂點進行著色,且相鄰頂點顏色不同。

  • 檢驗演算法 (BFS/DFS 著色法)

  1. 挑選任意起始點 uu,塗上「白色」。
  2. uu 的所有鄰居塗成「黑色」。
  3. 將所有「黑色」鄰居的鄰居塗成「白色」,依此類推,直到所有相連點都塗色。
  4. 驗收:檢查圖中是否有任何邊的兩個端點是「同色」。若有同色邊,則回報 NO (非二分圖);若無,回報 YES (是二分圖)。 (補充:圖中若存在「奇數長度的環 (Odd Cycle)」,則絕對不是二分圖,必定著色失敗)

4. 尤拉路徑與迴路 (Euler Paths & Circuits)#

觀念與公式#

直觀意義:「一筆畫問題」。想像你在玩連連看,你要走過所有的邊,且每條邊只能走過一次

  • 尤拉路徑 (Euler Path):經過所有邊恰好一次的路徑。

  • 尤拉迴路 (Euler Circuit):經過所有邊恰好一次,且「起點等於終點」的路徑。

  • 存在性充要條件 (若 GG 為連通圖)

  • 尤拉迴路     \iff 圖中每個頂點的分支度皆為偶數 (even degree)

  • 尤拉路徑 (但非迴路)     \iff 圖中恰好有 2 個頂點的分支度為奇數 (這兩點即為起點與終點)。

實戰演練(題型大全)#

觀念證明題:尤拉迴路定理的必要性證明 證明:若連通圖 GG 具有尤拉迴路,則所有頂點的分支度必為偶數。

【Step-by-step 解析】

  1. 假設圖 GG 存在一條尤拉迴路。

  2. 當我們沿著這條尤拉迴路走訪邊時,對於任意一個頂點 vv,我們每一次「進入」該頂點,必然會立刻接著「離開」該頂點。

  3. 也就是說,每經過一次頂點 vv,都會消耗掉相連於 vv22 條邊 (一進一出)。

  4. 因為尤拉迴路會精準涵蓋圖上的「每一條邊」恰好一次,且最終回到起點,所以對任何頂點 vv 而言,總進入次數必等於總離開次數。

  5. 因此,頂點 vv 身上連接著的總邊數 (即分支度) 必然是 22 的倍數。得證所有頂點的分支度皆為偶數。


5. 漢密爾頓路徑與迴路 (Hamilton Paths & Circuits)#

觀念與公式#

直觀意義:「推銷員問題」。推銷員必須拜訪每個城市,但他不在乎是否走過每一條公路。條件是:每個「頂點」必須恰好走過一次

  • Hamilton Path / Circuit:恰好走訪每個頂點一次的路徑/迴路。

  • 難度陷阱:不像尤拉路徑有簡單的充要條件判斷,漢密爾頓迴路問題是 NP-Complete,目前不存在多項式時間的高效演算法。

  • 充分條件 (Sufficient Conditions):如果圖的「邊夠密集」,就能保證有漢密爾頓迴路。

  1. Dirac’s Theorem:若每個頂點的 deg(v)n/2\deg(v) \ge n/2,必有漢密爾頓迴路。

  2. Ore’s Theorem:對任意「不相鄰」的兩頂點 u,vu, v,只要 deg(u)+deg(v)n\deg(u) + \deg(v) \ge n,必有漢密爾頓迴路。

  3. Bondy-Chvátal Theorem:圖 GG 擁有漢密爾頓迴路     \iff GGHamilton Closure 擁有漢密爾頓迴路。(Hamilton Closure 的作法:若兩不相鄰點度數和 n\ge n,則補上一條邊,遞迴進行直到不能補為止。)

實戰演練(題型大全)#

操作題:Hamilton Closure 求法 試描述尋找 Hamilton Closure 的演算法,並解釋如何藉此判斷迴路存在性。

【Step-by-step 解析】

  1. 掃描圖中所有「尚未有邊相連 (non-adjacent)」的點對 (u,v)(u, v)

  2. 檢查它們的分支度之和:如果 deg(u)+deg(v)n\deg(u) + \deg(v) \ge n (其中 nn 為總點數),則在此兩點間強制「加上一條邊」。

  3. 由於加上新邊會導致 uuvv 的度數增加,這可能觸發其他原本度數不夠的點對達標。因此,必須遞迴且反覆執行步驟 1 與 2,直到沒有任何一對不相鄰點滿足該條件為止。

  4. 最終產生出來的圖即為 Hamilton Closure。

  5. 結論推演:如果最終得到的 Closure 是一個完全圖 KnK_n (當 n3n \ge 3 時完全圖必有漢密爾頓迴路),我們就能保證原本的圖 GG 也必然有漢密爾頓迴路。


6. 平面圖與尤拉公式 (Planar Graphs & Euler’s Formula)#

觀念與公式#

直觀意義:電路板佈線問題。一堆節點要在二維平面上連線,能不能做到「任何兩條線都不會交叉」?如果可以,這張圖就是平面圖 (Planar Graph)。

  • 尤拉平面公式 (Euler’s Planar Formula): 對於任何連通平面圖,令 VV 為節點數,EE 為邊數,FF 為平面被切割出的區域數 (Regions,務必包含最外面那圈無限大的區域 Infinite Region):

V+F=E+2V + F = E + 2

  • 平面圖的極限邊數 (必要條件): 若 V3V \ge 3,每一個區域 (包含無限區域) 至少由 3 條邊圍成。推導得出極大邊數不等式:

E3V6E \le 3V - 6

(注意:若圖是二分圖,則沒有奇數環,區域最少由 4 條邊圍成,公式縮緊為 E2V4E \le 2V - 4)

實戰演練(題型大全)#

經典證明題 1:證明 K5K_5K3,3K_{3,3} 不是平面圖 這兩張圖是平面圖的兩大「地雷」,請用尤拉不等式嚴格證明它們無法畫在平面上。

【Step-by-step 解析】

  • 證明 K5K_5 (5個頂點的完全圖) 非平面圖
  1. K5K_5 的節點數 V=5V = 5。因為是完全圖,邊數 E=(52)=10E = \binom{5}{2} = 10

  2. 代入極限邊數不等式檢驗:3V6=3(5)6=93V - 6 = 3(5) - 6 = 9

  3. 發現 E(10)≰3V6(9)E (10) \not\le 3V - 6 (9),矛盾!故 K5K_5 絕對不可能是平面圖。

  • 證明 K3,3K_{3,3} (兩個集合各3點的完全二分圖) 非平面圖
  1. K3,3K_{3,3} 的節點數 V=6V = 6,邊數 E=3×3=9E = 3 \times 3 = 9

  2. 第一眼檢查 3V6=186=123V - 6 = 18 - 6 = 129129 \le 12 似乎通過了?不,我們有更緊的不等式!

  3. 因為 K3,3K_{3,3} 是二分圖,內部絕對不可能存在長度為 3 的三角形環。所以如果它是平面圖,它切割出的每一個區域 FF,至少都要由 4 條邊包圍。

  4. 邊與區域的關係式為:4F2E    F2E/4=18/4=44F \le 2E \implies F \le \lfloor 2E/4 \rfloor = \lfloor 18/4 \rfloor = 4

  5. 但尤拉公式告訴我們 F=EV+2=96+2=5F = E - V + 2 = 9 - 6 + 2 = 5

  6. 發現公式要求 F=5F=5,但邊數限制 F4F \le 4,矛盾!故 K3,3K_{3,3} 非平面圖。

經典證明題 2:柏拉圖立體 (Platonic Solids) 的數量極限 為什麼正多面體 (所有面都是全等正多邊形、所有頂點連接相同邊數) 在三維宇宙中「恰好只有 5 種」?

【Step-by-step 解析】

  1. 將多面體壓扁成 2D 視為平面圖。令每個面由 nn 條邊組成,每個頂點連接 mm 條邊。立體圖要求 n3n \ge 3m3m \ge 3

  2. 計算總邊數:每個面有 nn 條邊,共 FF 個面,每條邊被兩個面共用     nF=2E\implies nF = 2E。同理,頂點數     mV=2E\implies mV = 2E

  3. 代入尤拉公式 V+F=E+2V + F = E + 2

2Em+2En=E+2\frac{2E}{m} + \frac{2E}{n} = E + 2

同除以 2E2E

1m+1n=12+1E\frac{1}{m} + \frac{1}{n} = \frac{1}{2} + \frac{1}{E}

  1. 因為 E>0E > 0,所以右邊大於 12\frac{1}{2}。這代表 1m+1n>12\frac{1}{m} + \frac{1}{n} > \frac{1}{2}

  2. 已知 m,n3m, n \ge 3。如果兩者都 4\ge 4,則 14+14=12\frac{1}{4} + \frac{1}{4} = \frac{1}{2},不等式無法成立!這意味著 m,nm, n 之中必然至少有一個等於 3

  3. 窮舉可能解:

  • n=3n = 3 (面是正三角形):mm 可以是 3,4,53, 4, 5 (分別對應正四面體、正八面體、正二十面體)。

  • m=3m = 3 (每個頂點連三條邊):nn 可以是 3,4,53, 4, 5 (分別對應正四面體、正六面體/立方體、正十二面體)。

  1. 結論:宇宙中僅存在這 5 組整數解,對應恰好 5 種柏拉圖立體!

7. 庫拉托夫斯基定理與著色問題 (Kuratowski’s Theorem & Coloring)#

觀念與公式#

直觀意義:如何從一張極度複雜的圖中,一眼看穿它「註定會發生線條交叉」(即非平面圖)?

  • 庫拉托夫斯基定理 (Kuratowski’s Theorem):一個圖是「非平面圖」     \iff 它裡面隱藏了 (包含子圖同構於) K5K_5K3,3K_{3,3} 的結構。 (同構 Homeomorphic 定義:兩張圖可藉由反覆「在一條邊中間插入一個新節點」或反向消除節點而變得完全一樣)

  • 圖著色 (Graph Coloring):給予相鄰頂點不同顏色的過程。

  • 五色定理 (Five Color Theorem)任何平面圖,絕對可以用「最多 5 種顏色」完成合法塗色。 (著名的四色定理 Appel-Haken 證明極其複雜,需要電腦驗證近兩千種 Case,故考試頂多考五色定理的建構)。

  • 對偶圖 (Dual Graph):針對地圖塗色問題,可以將地圖的「每一個區域 (Region)」轉化為一個「頂點 (Vertex)」。若兩個區域相鄰,則在兩頂點間連一條邊。地圖的合法塗色,等價於對偶圖的合法頂點著色。

實戰演練(題型大全)#

證明題:五色定理 (Five Color Theorem) 證明策略 證明所有平面圖都能以 5 色合法著色。

【Step-by-step 解析】

  1. 數學歸納法:假設頂點數為 n1n-1 的所有平面圖都能 5 色著色。現在要證明 nn 個頂點的圖也可以。

  2. 由前述公式 E3V6E \le 3V - 6 推導總分支度 2E6V122E \le 6V - 12。這表示平均分支度嚴格小於 6。換句話說,圖中必然存在至少一個頂點 vv,其分支度 deg(v)5\deg(v) \le 5

  3. 暫時將頂點 vv 從圖中拔除。剩下的圖有 n1n-1 個頂點,依據歸納法假設,可以合法塗上 5 種顏色。

  4. 現在把 vv 放回來。我們觀察 vv 的鄰居顏色:

  • 情況一:若 vv 的鄰居使用的顏色總數 4\le 4 色。那麼 5 種顏色中必有剩下第 5 種沒被用到的顏色,直接塗給 vv 即可,收工!

  • 情況二:若 vv 剛好有 5 個鄰居,且分別塗滿了紅、藍、黃、綠、橘 5 種不同的顏色。

  1. Kempe Chain 切換法 (Switching Path) 解決情況二
  • 我們試著將其中一個鄰居 (例如黃色鄰居) 強制換成另一個顏色 (例如藍色)。

  • 為了保持圖的合法性,如果黃鄰居變藍,那原本連著它的藍點就要變黃,引發「藍黃交替」的連鎖反應路徑 (Kempe Chain)。

  • 如果這條「藍黃交替路徑」沒有連到 vv 另一側原本的藍色鄰居,我們就可以成功完成這串顏色的對調,把原本的黃鄰居變成藍色,此時 vv 旁邊就空出了黃色可以塗,收工!

  • 萬一「藍黃路徑」不幸連通了 (形成一堵牆) 怎麼辦?因為平面圖的邊「不可交叉」性質,這道藍黃牆會把內外的綠色和橘色鄰居物理性隔絕

  • 此時我們改對綠色與橘色鄰居進行「綠橘交替」連鎖反應。因為路徑被藍黃牆擋住,綠橘路徑絕對不可能連通,所以綠橘交替必定能成功完成切換。

  • 切換後,vv 旁空出了綠色或橘色,著色成功!得證。


⚠️ 考前避坑指南 (Exam Pitfall Guide)#

  1. Self-loop 的度數計算極易錯:當你手算總分支度或判定尤拉迴路時,如果圖中有一條自我環 (Loop),該頂點的 Degree 要 +2+2,千萬不要只加 1。

  2. 握手定理適用對象:無論無向圖還是有向圖,定理等式兩側的意涵不同。證明題中極愛考「奇數度頂點數量必為偶數」,這是從 2m=Even+Odd2m = \text{Even} + \text{Odd} 移項得來的觀念,必考倒扣。

  3. 尤拉 vs 漢密爾頓 的判定邏輯差異

  • 尤拉迴路:看「邊」(Edges)。充要條件為「全為偶數度」。條件是「若且唯若 (iff)」,看到奇數點直接判死刑。

  • 漢密爾頓迴路:看「頂點」(Vertices)。Dirac 和 Ore 定理只給了「充分條件 (Sufficient)」。如果題目給的圖不滿足這兩個定理(例如每個點度數都小於 n/2n/2),不代表它沒有漢密爾頓迴路!(例如一個正方形 C4C_4,不滿足充分條件,但明明就有漢密爾頓迴路) 選擇題極容易在這邊埋陷阱,反推必錯。

  1. 尤拉公式中的 Region 計算:在代入 V+F=E+2V + F = E + 2 運算或是看圖數區域時,永遠記得包含最外側的無限區域 (Infinite Region),漏算 FF 就會少 1 導致公式不平。

  2. 平面圖的不等式誤用E3V6E \le 3V - 6 (或二分圖的 E2V4E \le 2V - 4) 只是平面圖的「必要條件 (Necessary)」。

  • E>3V6E > 3V - 6,則必定「非平面圖」。
  • E3V6E \le 3V - 6不能保證它是平面圖!如果要證明它是,請乖乖畫出來;如果要證明不是,請找庫拉托夫斯基的子圖 K5K_5K3,3K_{3,3}

第五章:樹 (Trees)#

1. 樹的基礎性質與節點計算 (Properties of Trees)#

觀念與公式#

樹 (Tree) 的直觀意義就是一個「沒有迴圈的連通網路」——想像家族族譜或是水系分佈,任何兩點之間必然只有唯一一條簡單路徑可達。若圖中包含多個不相連的樹,則稱為森林 (Forest)

對於將每個分支嚴格限制數量的 m 元樹 (m-ary tree),特別是當每個內部節點都恰好有 mm 個子節點時(稱為 Full m-ary tree),我們可以利用以下必背公式快速秒殺節點計算題:

  • 邊數公式:任何擁有 nn 個節點的樹,必定剛好有 n1n-1 條邊。
  • 總節點公式:具備 ii 個內部節點的 Full m-ary tree,總節點數為 mi+1mi + 1
  • 葉節點公式:具備 ii 個內部節點的 Full m-ary tree,葉節點數量為 mii+1mi - i + 1
  • 樹高與葉節點極限:高度為 hh 的 m-ary tree 最多擁有 mhm^h 個葉節點。
  • 平衡樹高度公式:若一棵 Full m-ary tree 是平衡的(所有葉節點都在 hhh1h-1 層)且有 xx 個葉節點,其樹高 h=logmxh = \lceil \log_m x \rceil

實戰演練(題型大全)#

【題型 1:連鎖信件計算問題】

  • 常考頻率:⭐⭐⭐⭐
  • 重要程度:高(常作為基礎送分題,考驗對葉節點與內部節點的代數轉換)
  • 題目:Peter 發起了一封連鎖信。每個收到信的人被要求轉寄給其他 4 個人。有些人照做了,有些人沒有。現在已知有 100 個人收到了信但「沒有」轉寄出去。假設沒有人收到超過一封信,請問總共有多少人轉寄了這封信?
  • Step-by-step 解答
  1. 將問題轉化為樹的結構:寄信人是內部節點 (ii),收到信但不轉寄的人是葉節點 (xx)。
  2. 由於每個人規定要轉寄給 4 個人,這是一棵 Full 4-ary tree (m=4m = 4)。
  3. 已知葉節點數 x=100x = 100
  4. 代入葉節點公式:x=mii+1x = mi - i + 1
  5. 100=4ii+1100 = 4i - i + 1
  6. 99=3i99 = 3i,解得內部節點 i=33i = 33
  7. 答案:共有 33 個人轉寄了信件。

2. 決策樹 (Decision Trees) 與複雜度下界#

觀念與公式#

決策樹將「解決問題的連續決策過程」具象化。每一個內部節點代表一次「判斷或決策」,而它的子節點代表該決策的「可能結果」。最底層的葉節點就是最終的解答。

  • 排序比較下界公式:在最壞的情況下,使用比較法對 nn 個相異數字進行排序,至少需要 log2n!\lceil \log_2 n! \rceil 次比較。

實戰演練(題型大全)#

【題型 1:假幣秤重問題】

  • 常考頻率:⭐⭐⭐
  • 重要程度:中(經典邏輯題,考驗決策樹構建)
  • 題目:有 6 枚重量相同的真幣,以及 1 枚重量較輕的假幣。如果這 7 枚硬幣混在一起,如何使用天平在「兩次」秤重內找出假幣?
  • Step-by-step 解答
  1. 將 7 枚硬幣編號為 1 到 7。
  2. 第一次決策 (Root):將 {1, 2, 3} 放在左秤,{4, 5, 6} 放在右秤。
  3. 結果分支 A (左 < 右):代表假幣在 {1, 2, 3} 中。
  • 第二次決策:秤 {1} 與 {2}。若 1 輕,假幣為 1;若 2 輕,假幣為 2;若相等,假幣為未秤的 3。
  1. 結果分支 B (左 = 右):代表天平上的都是真幣,假幣是未放上天平的 7。
  2. 結果分支 C (左 > 右):代表假幣在 {4, 5, 6} 中。
  • 第二次決策:秤 {4} 與 {5}。若 4 輕,假幣為 4;若 5 輕,假幣為 5;若相等,假幣為未秤的 6。

【題型 2:排序比較次數分析】

  • 常考頻率:⭐⭐⭐⭐
  • 重要程度:高(連結資料結構中 Sorting 複雜度的底層證明)
  • 題目:欲排序 3 個與 4 個相異數字,分別保證充分的最少比較次數為何?
  • Step-by-step 解答
  1. 利用下界公式評估 3 個數字:log23!=log26=3\lceil \log_2 3! \rceil = \lceil \log_2 6 \rceil = 3 次。
  2. 利用下界公式評估 4 個數字:log24!=log224=5\lceil \log_2 4! \rceil = \lceil \log_2 24 \rceil = 5 次。
  3. 4 個數字的具體排法 (A, B, C, D)
  • Step 1:用 3 次比較將 A, B, C 排序好 (假設結果為 A < B < C)。
  • Step 2:將 D 與中間的 B 進行比較 (第 4 次)。
  • Step 3:根據 Step 2 的結果,將 D 拿去與 A 或 C 比較 (第 5 次),即可確定 D 的最終位置。

3. 最佳前綴碼與霍夫曼樹 (Optimal Prefix Code)#

觀念與公式#

為了節省儲存空間,我們希望出現頻率高的字元使用較短的編碼,頻率低的字元使用較長的編碼(變長編碼)。為了避免解碼時產生歧義(例如編碼 001 同時存在會造成混淆),我們規定「任何字元的編碼都不能是其他字元編碼的前綴」,這就是 Prefix Code

  • 霍夫曼樹兩大黃金定律:
  1. 在最佳前綴碼樹中,每一個內部節點必定有「兩個」子節點。
  2. 出現頻率最低的兩個字元,必定是樹中最深處的兄弟葉節點 (Sibling leaves farthest from the root)。

實戰演練(題型大全)#

【題型 1:建構 Optimal Prefix Code Tree】

  • 常考頻率:⭐⭐⭐⭐⭐
  • 重要程度:極高(必考大題,嚴格要求演算法執行步驟正確)
  • 題目:已知字元的相對頻率為 A: 40, B: 20, C: 15, D: 50, E: 25,請建構對應的最佳前綴碼樹。
  • Step-by-step 解答
  1. 列出目前所有節點的頻率:{A:40, B:20, C:15, D:50, E:25}。
  2. 找出頻率最低的兩個節點:B(20) 與 C(15)。將它們合併為一個父節點,頻率為 35。
  3. 更新節點池:{A:40, D:50, E:25, BC:35}。
  4. 找出頻率最低的兩個節點:E(25) 與 BC(35)。將它們合併為一個父節點,頻率為 60。
  5. 更新節點池:{A:40, D:50, EBC:60}。
  6. 找出頻率最低的兩個節點:A(40) 與 D(50)。將它們合併為一個父節點,頻率為 90。
  7. 更新節點池:{EBC:60, AD:90}。
  8. 將最後兩個節點合併,形成 Root,總頻率為 150。左子樹為 AD(90),右子樹為 EBC(60)。

4. 生成樹與 Prüfer Code (Spanning Trees & Prüfer Codes)#

觀念與公式#

生成樹 (Spanning Tree) 是一個保留原圖所有節點、但刪除多餘邊直到剛好形成「樹」的子圖。證明圖是否連通的等價條件,就是看它是否存在生成樹。

Prüfer Code 則是一種神奇的數學映射,它能將任何一棵帶有編號的生成樹,唯一對應到一串長度為 n2n-2 的數字序列。

  • 公式 1:凱萊公式 (Cayley’s formula) 指出,包含 nn 個節點的完全圖 KnK_n,總共可以產生 nn2n^{n-2} 種不同的生成樹。
  • 公式 2:對應 nn 個節點的 Prüfer code 序列,其長度必定剛好是 n2n-2

實戰演練(題型大全)#

【題型 1:由 Tree 產生 Prüfer Code】

  • 常考頻率:⭐⭐⭐⭐
  • 重要程度:高(手動模擬題型,需極度細心)
  • 題目:給定一棵樹,邊連接為 (1,2), (2,4), (3,4), (2,5),請寫出其 Prüfer Code。
  • Step-by-step 解答
  1. 觀察目前所有的葉節點為:1, 3, 5。
  2. 回合 1:找出編號最小的葉節點「1」。記錄它的唯一鄰居「2」。將節點 1 移除。序列目前為:2
  3. 觀察剩餘樹的葉節點為:3, 5。
  4. 回合 2:找出編號最小的葉節點「3」。記錄它的唯一鄰居「4」。將節點 3 移除。序列目前為:2, 4
  5. 觀察剩餘樹的葉節點為:4, 5。
  6. 回合 3:找出編號最小的葉節點「4」。記錄它的唯一鄰居「2」。將節點 4 移除。序列目前為:2, 4, 2
  7. 由於樹中只剩下 2 個節點 (2, 5),演算法停止。
  8. 答案:Prüfer Code 為 2, 4, 2

【題型 2:由 Prüfer Code 還原 Tree】

  • 常考頻率:⭐⭐⭐⭐
  • 重要程度:高(逆向工程,失分率極高的題型)
  • 題目:給定 Prüfer Code 為 2, 4, 2,已知 n=5n=5,請還原其生成樹的連接邊。
  • Step-by-step 解答
  1. 準備所有節點列表:{1, 2, 3, 4, 5}。
  2. 回合 1:目前序列為 2, 4, 2。找出「未出現在序列中」且「未被連線」的最小節點,即為「1」。將 1 連接到序列的第一個數字「2」。將 1 標記為已連線,並劃掉序列第一個 2。
  3. 回合 2:目前序列為 4, 2。未被連線且未出現在序列的最節點為「3」。將 3 連接到序列第一個數字「4」。將 3 標記為已連線,劃掉序列第一個 4。
  4. 回合 3:目前序列為 2。未被連線且未出現在序列的最小節點為「4」。將 4 連接到序列第一個數字「2」。將 4 標記為已連線,劃掉序列第一個 2。
  5. 序列空了。將最後剩下的兩個未標記節點「2」和「5」直接相連。
  6. 答案:連線邊為 (1,2), (3,4), (4,2), (2,5)。

⚠️ 考前避坑指南#

  1. 不要混淆 Tree 與 Binary Tree 的公式:在計算 m-ary tree 的節點數時,切記 mm 不一定是 2。遇到 x=mii+1x = mi - i + 1 時,一定要先確認題目規定的 mm 是多少。
  2. 建構 Huffman Tree 絕對不能排錯順序:每次合併完產生「新的內部節點頻率」後,必須重新將其放回候選池中參與下一次的「取最小兩個」的比較。很多學生會忘記把剛合併的數字與原本剩餘的節點重新排序,導致樹的結構完全錯誤。
  3. Prüfer Code 的致命盲點
  • 產生 Code 時:每次刪除的是當前編號最小的葉節點,不是隨便挑一個葉節點。
  • 還原 Tree 時:尋找配對節點的條件是「未出現在『當前剩餘』序列中」的最小可用數字。如果某個數字前面被劃掉了,但在剩餘序列中已不存在,它就有資格被選為葉節點。
  • 停止條件:當節點數剩下 2 個時就必須停止,切勿將最後兩個節點也寫進 Code 裡!Code 的長度永遠死守 n2n-2

文章分享

如果這篇文章對你有幫助,歡迎分享給更多人!

大一上離散數學
https://github.com/posts/大一上離散數學/
作者
Guo-hua
發布於
2026-05-13
許可協議
CC BY-NC-SA 4.0
Profile Image of the Author
Guo-hua
夏天還會再來...
公告
歡迎來到我的網站~
音樂
封面

音樂

暫未播放

0:00 0:00
暫無歌詞
分類
標籤
站點統計
文章
8
分類
4
標籤
23
總字數
53,865
運行時長
0
最後活動
0 天前

文章目錄