离散数学 · 知识点全解

> 参考教材:屈婉玲、耿素云、张立昂《离散数学》第二版

> 适用对象:计算机科学、软件工程、信息安全等专业


目录结构

部分章节范围核心主题难度
第1-5章 数理逻辑命题逻辑、一阶逻辑、推理
第6-8章 集合论集合、关系、函数
第9-11章 代数结构群、环、域、格、布尔代数
第12-13章 组合数学计数原理、递推方程、生成函数
第14-18章 图论图、欧拉图、树、平面图
第19章 初等数论素数、同余、欧拉定理

第一部分:数理逻辑

第1章 命题逻辑的基本概念

命题: 能判断真假的陈述句

  • 联结词: ¬(非)、∧(且)、∨(或)、→(蕴含)、↔(等价)
  • 真值表:命题公式在各种赋值下的取值
  • 命题公式:由命题变元和联结词构成的合法表达式
  • 第2章 命题逻辑等值演算

  • 等值式: A↔B 为永真式 ⇒ A⇔B
  • 基本等值式:幂等律、交换律、结合律、分配律、德摩根律、吸收律
  • 范式: 析取范式(DNF) 与 合取范式(CNF)
  • 极小项与极大项、主析取范式、主合取范式
  • 联结词的完备集
  • 第3章 命题逻辑的推理理论

  • 推理的形式结构:前提 ⊢ 结论
  • 自然推理系统 P(12条推理规则)
  • 重要的推理规则:
  • 假言推理:A→B, A ⇒ B
  • 拒取式:A→B, ¬B ⇒ ¬A
  • 析取三段论:A∨B, ¬A ⇒ B
  • 第4章 一阶逻辑基本概念

  • 个体词、谓词(一元/多元)、量词(∀全称、∃存在)
  • 一阶逻辑公式及其解释
  • 自由变元与约束变元
  • 第5章 一阶逻辑等值演算与推理

  • 量词否定等值式
  • 量词辖域收缩与扩张
  • 前束范式
  • 一阶逻辑的自然推理系统

  • 第二部分:集合论

    第6章 集合代数

  • 集合的基本概念(子集、幂集、空集、全集)
  • 集合运算: 并、交、差、对称差、补
  • 有穷集的计数(容斥原理
  • 集合恒等式:幂等律、交换律、结合律、分配律、德摩根律
  • 第7章 二元关系

  • 有序对与笛卡儿积
  • 关系的定义域与值域
  • 关系的运算: 复合(∘)、逆(⁻¹)、幂
  • 关系的性质: 自反、反自反、对称、反对称、传递
  • 关系的闭包:自反闭包r(R)、对称闭包s(R)、传递闭包t(R)
  • 等价关系: 自反+对称+传递 ⇒ 等价类、商集、划分
  • 偏序关系: 自反+反对称+传递 ⇒ 哈斯图、最大/小元、上/下界
  • 第8章 函数

  • 函数的定义(单值、处处有定义)
  • 单射、满射、双射
  • 函数的复合与反函数
  • 双射函数与集合的基数
  • 可数集与不可数集

  • 第三部分:代数结构

    第9章 代数系统

  • 二元运算及其性质(交换律、结合律、分配律、幂等律)
  • 代数系统的单位元、零元、逆元
  • 同态与同构: 保持运算的映射
  • 第10章 群与环

  • 群的定义: 封闭+结合律+单位元+逆元
  • 群的阶、元素的阶
  • 子群、陪集、拉格朗日定理
  • 循环群、置换群
  • 环与域: 两个二元运算的代数系统
  • 第11章 格与布尔代数

  • 格的定义: 偏序集+任意二元有上确界和下确界
  • 分配格、有补格
  • 布尔代数: 有补分配格(有界+分配+有补)
  • 布尔表达式与布尔函数

  • 第四部分:组合数学

    第12章 基本的组合计数公式

  • 加法法则与乘法法则
  • 排列:P(n,r) = n!/(n−r)!
  • 组合:C(n,r) = n!/(r!(n−r)!)
  • 二项式定理:(x+y)ⁿ = ΣC(n,k)xⁿ⁻ᵏyᵏ
  • 多项式定理
  • 第13章 递推方程与生成函数

  • 递推方程的定义与实例(Hanoi塔、Fibonacci数列)
  • 齐次递推方程的特征根法
  • 非齐次递推方程的特解
  • 生成函数: 用幂级数研究数列
  • Catalan数与Stirling数

  • 第五部分:图论

    第14章 图的基本概念

  • 图:G=,无向图、有向图
  • 度数:握手定理 Σd(v)=2|E|
  • 通路与回路
  • 图的连通性:连通图、连通分支
  • 第15章 欧拉图与哈密顿图

  • 欧拉图: 经过每条边恰好一次(欧拉回路)
  • 判定:所有顶点度数为偶数
  • 哈密顿图: 经过每个顶点恰好一次(哈密顿回路)
  • 必要条件(Pósa定理)/充分条件(Dirac定理)
  • 第16章 树

  • 无向树:连通无回路的图,|E|=|V|−1
  • 生成树与最小生成树(Kruskal算法、Prim算法)
  • 根树(m叉树、二叉树)
  • 最优二叉树(Huffman编码)
  • 第17章 平面图

  • 平面图:边不相交地画在平面上
  • 欧拉公式: n − m + r = 2(n顶点、m边、r面)
  • 平面图的判断(Kuratowski定理)
  • 第18章 支配集、覆盖集、匹配与着色

  • 点支配集、点覆盖集、点独立集
  • 匹配与最大匹配(二部图:Hall定理)
  • 图的着色: 点着色、边着色、地图着色
  • 四色定理:平面图可4-着色

  • 第六部分:初等数论

    第19章 初等数论

  • 素数、合数、算术基本定理
  • 最大公约数(欧几里得算法/辗转相除法)
  • 最小公倍数
  • 同余: a≡b(mod m) ⇔ m|(a−b)
  • 一次同余方程:ax≡b(mod m)
  • 欧拉定理: a^φ(m) ≡ 1(mod m),gcd(a,m)=1
  • 费马小定理: a^(p−1) ≡ 1(mod p),p为素数
  • RSA公钥密码体制的数论基础

  • 🔑 重要公式速查

    类别公式
    德摩根律(命题)¬(A∨B)⇔¬A∧¬B, ¬(A∧B)⇔¬A∨¬B
    主范式极小项求和=主析取范式
    传递闭包t(R) = ∪Rⁿ (n≥1)
    握手定理Σd(v) = 2\E\
    欧拉公式n−m+r = 2
    欧拉图判定所有顶点偶数度
    树的边数\E\= \V\−1
    二项式定理(x+y)ⁿ = ΣC(n,k)xⁿ⁻ᵏyᵏ
    欧拉定理a^φ(m)≡1(mod m)
    费马小定理a^(p−1)≡1(mod p)
    拉格朗日定理子群阶整除群阶

    📝 配套练习题


    第一部分 · 数理逻辑 练习题

    练习1 — 命题逻辑的基本概念

    第1题 基础

    判断下列语句是否是命题,如果是命题请给出真值:

    (1) 2 + 3 = 5

    (2) 请安静!

    (3) 今天是星期五吗?

    (4) 存在外星人。

    📖 答案:

    (1) 是命题,真值为 真(T)(2+3确实等于5)

    (2) 不是命题(祈使句,不能判断真假)

    (3) 不是命题(疑问句,不能判断真假)

    (4) 是命题,真值为 假(F)(目前没有证据表明存在外星人,但这是可以判断真假的陈述句)

    💡 命题的判断标准:能判断真假的陈述句

    第2题 进阶

    设 p: 今天下雨,q: 今天刮风。用自然语言表述下列命题公式:

    (1) p ∧ q

    (2) p ∨ ¬q

    (3) p → q

    (4) p ↔ q

    📖 答案:

    (1) 今天下雨 刮风

    (2) 今天下雨 不刮风

    (3) 如果今天下雨,那么今天刮风

    (4) 今天下雨 当且仅当 今天刮风

    💡 牢记联结词的含义:¬(非)、∧(且)、∨(或)、→(蕴含)、↔(等价)。

    第3题 挑战

    构造公式 (p → q) ∧ (q → r) → (p → r) 的真值表,判断它是否为永真式。

    📖 答案:

    设 A = (p → q) ∧ (q → r) → (p → r),真值表如下:

    p | q | r | p→q | q→r | (p→q)∧(q→r) | p→r | A

    T | T | T | T | T | T | T | T

    T | T | F | T | F | F | F | T

    T | F | T | F | T | F | T | T

    T | F | F | F | T | F | F | T

    F | T | T | T | T | T | T | T

    F | T | F | T | F | F | T | T

    F | F | T | T | T | T | T | T

    F | F | F | T | T | T | T | T

    所有赋值下A均为真,所以是永真式

    💡 该公式对应逻辑上的"三段论"推理规则。

    练习2 — 命题逻辑等值演算

    第1题 基础

    利用基本等值式化简下列公式:

    (1) p ∧ (p ∨ q)

    (2) p ∨ (p ∧ q)

    (3) ¬(p ∨ q) ∨ (¬p ∧ q)

    📖 答案:

    (1) p ∧ (p ∨ q) ⇔ p(吸收律)

    (2) p ∨ (p ∧ q) ⇔ p(吸收律)

    (3) ¬(p ∨ q) ∨ (¬p ∧ q)

     ⇔ (¬p ∧ ¬q) ∨ (¬p ∧ q)(德摩根律)

     ⇔ ¬p ∧ (¬q ∨ q)(分配律)

     ⇔ ¬p ∧ T ⇔ ¬p(排中律 + 同一律)

    💡 吸收律和德摩根律是化简命题公式的常用工具。

    第2题 进阶

    求公式 (p ∧ q) ∨ (¬p ∧ r) 的主析取范式和主合取范式。

    📖 答案:

    先补充缺失变元:

    (p ∧ q) ∨ (¬p ∧ r)

    ⇔ (p ∧ q ∧ (r ∨ ¬r)) ∨ (¬p ∧ (q ∨ ¬q) ∧ r)

    ⇔ (p ∧ q ∧ r) ∨ (p ∧ q ∧ ¬r) ∨ (¬p ∧ q ∧ r) ∨ (¬p ∧ ¬q ∧ r)

    主析取范式:m₇ ∨ m₆ ∨ m₃ ∨ m₁
    主合取范式:M₀ ∧ M₂ ∧ M₄ ∧ M₅

    💡 主析取范式看真值为1的极小项,主合取范式看真值为0的极大项。

    练习3 — 命题逻辑的推理理论

    第1题 基础

    识别下列推理使用的推理规则:

    (1) 如果今天下雨,则地面会湿。今天下雨了,所以地面湿了。

    (2) 如果下雨,则地面会湿。地面没有湿,所以没下雨。

    (3) 小明要么是北京人,要么是上海人。小明不是北京人,所以他是上海人。

    📖 答案:

    (1) 假言推理(A→B, A ⇒ B)

    (2) 拒取式(A→B, ¬B ⇒ ¬A)

    (3) 析取三段论(A∨B, ¬A ⇒ B)

    💡 这是自然推理系统P中最常用的三条推理规则。

    第2题 进阶

    用自然推理系统P证明:前提 p → q, q → r, ¬r,结论 ¬p 成立。

    📖 答案:

    证明:

    ① p → q   前提引入

    ② q → r   前提引入

    ③ p → r   ①②假言三段论(HS)

    ④ ¬r   前提引入

    ⑤ ¬p   ③④拒取式

    所以 ¬p 成立。

    练习4 — 一阶逻辑基本概念

    第1题 基础

    将下列自然语言翻译成一阶逻辑公式:

    (1) 所有的鸟都会飞。

    (2) 存在一个实数x,使得 x² = 2。

    (3) 不是所有人都喜欢数学。

    📖 答案:

    设 Bird(x): x是鸟,Fly(x): x会飞,Real(x): x是实数,Math(x): x喜欢数学。

    (1) ∀x(Bird(x) → Fly(x))

    (2) ∃x(Real(x) ∧ x² = 2)

    (3) ¬∀x(Math(x)) 或 ∃x(¬Math(x))

    💡 注意全称量词用"→",存在量词用"∧"连接。

    第2题 进阶

    指出下列公式中的自由变元和约束变元:

    ∀x(P(x) → Q(x, y)) ∧ ∃yR(y, z)

    📖 答案:

    在 ∀x(P(x) → Q(x, y)) 中:

     x 受 ∀x 约束 → 约束变元

     y 未被量词约束 → 自由变元

    在 ∃yR(y, z) 中:

     y 受 ∃y 约束 → 约束变元

     z 未被量词约束 → 自由变元

    所以整个公式中:约束变元为 x 和 y,自由变元为 y 和 z。

    💡 注意y在不同子公式中可能一个是约束、一个是自由,但整体上属于不同出现。

    练习5 — 一阶逻辑等值演算与推理

    第1题 基础

    利用量词否定等值式写出下列公式的等价形式:

    (1) ¬∀xP(x)

    (2) ¬∃x∀yQ(x, y)

    📖 答案:

    (1) ¬∀xP(x) ⇔ ∃x¬P(x)

    (2) ¬∃x∀yQ(x, y) ⇔ ∀x∃y¬Q(x, y)

    💡 量词否定口诀:"全称变存在,存在变全称,谓词加否定"。

    第2题 进阶

    将公式 ∀x(P(x) → ∃yQ(x, y)) 化为前束范式。

    📖 答案:

    原式:∀x(P(x) → ∃yQ(x, y))

    消去蕴含:∀x(¬P(x) ∨ ∃yQ(x, y))

    将量词提到前面(两者无约束冲突):

    前束范式:∀x∃y(¬P(x) ∨ Q(x, y))

    💡 前束范式的所有量词都在公式最前面,且辖域延伸到公式末尾。

    第3题 挑战

    证明:∀x(P(x) → Q(x)), ∀x(Q(x) → R(x)) ⇒ ∀x(P(x) → R(x))

    📖 答案:

    证明:

    ① ∀x(P(x) → Q(x))   前提引入

    ② ∀x(Q(x) → R(x))   前提引入

    ③ P(y) → Q(y)   ①全称量词消去(∀-)

    ④ Q(y) → R(y)   ②全称量词消去(∀-)

    ⑤ P(y) → R(y)   ③④假言三段论(HS)

    ⑥ ∀x(P(x) → R(x))   ⑤全称量词引入(∀+)

    所以结论成立。

    💡 一阶逻辑推理的关键:先用∀-消去量词,进行命题推理,再用∀+引入量词。


    第二部分 · 集合论 练习题

    练习1 — 集合代数

    第1题 基础

    设全集 U = {1,2,3,4,5,6,7,8,9,10},A = {1,2,3,4,5},B = {4,5,6,7},求:

    (1) A ∪ B

    (2) A ∩ B

    (3) A − B

    (4) A ⊕ B(对称差)

    (5) ~A(补集)

    📖 答案:

    (1) A ∪ B = {1,2,3,4,5,6,7}

    (2) A ∩ B = {4,5}

    (3) A − B = {1,2,3}

    (4) A ⊕ B = (A−B) ∪ (B−A) = {1,2,3,6,7}

    (5) ~A = {6,7,8,9,10}

    💡 对称差也可以理解为属于A或B但不同时属于两者的元素。

    第2题 进阶

    某班有50名学生,25人喜欢打篮球,30人喜欢踢足球,10人两种都喜欢。问:

    (1) 至少喜欢一种运动的有多少人?

    (2) 两种都不喜欢的有多少人?

    (3) 只喜欢篮球的有多少人?

    📖 答案:

    用容斥原理:|A∪B| = |A| + |B| − |A∩B|

    (1) |A∪B| = 25 + 30 − 10 = 45(人)

    (2) 两种都不喜欢 = 50 − 45 = 5(人)

    (3) 只喜欢篮球 = 25 − 10 = 15(人)

    💡 容斥原理是解决有穷集计数问题的核心工具。

    第3题 挑战

    用集合恒等式证明:A − (B ∪ C) = (A − B) ∩ (A − C)

    📖 答案:

    证明:

    A − (B ∪ C)

    = A ∩ ~(B ∪ C)  (差的定义)

    = A ∩ (~B ∩ ~C)  (德摩根律)

    = (A ∩ ~B) ∩ (A ∩ ~C)  (幂等律、交换律、结合律)

    = (A − B) ∩ (A − C)  (差的定义)

    所以等式成立。

    💡 集合证明的核心技巧:将差运算转化为交和补运算,再利用集合恒等式进行演算。

    练习2 — 二元关系

    第1题 基础

    设 A = {1,2,3},B = {a,b},求 A × B 和 B × A,并说明两者是否相等。

    📖 答案:

    A × B = {(1,a), (1,b), (2,a), (2,b), (3,a), (3,b)}

    B × A = {(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}

    A × B=B × A

    💡 笛卡儿积不满足交换律,结果与顺序有关。

    第2题 进阶

    设 A = {1,2,3},R = {(1,1), (1,2), (2,1), (2,2), (3,3)}。判断R是否具有下列性质:

    (1) 自反   (2) 反自反   (3) 对称   (4) 反对称   (5) 传递

    📖 答案:

    (1) 是自反的:所有1,2,3都有(1,1),(2,2),(3,3) ∈ R

    (2) 不是反自反的:反自反要求无任何(x,x) ∈ R,但(1,1),(2,2),(3,3)都在R中

    (3) 是对称的:有(1,2)就有(2,1),其余元素的自反对也满足对称

    (4) 不是反对称的:存在(1,2)和(2,1)且1≠2,违反了反对称的条件

    (5) 是传递的:检查所有可能的三元组均满足传递性

    💡 判断关系性质的关键是找到反例:一个反例即可否定。

    第3题 挑战

    设 R = {(1,2), (2,3), (3,1)} 是集合 A = {1,2,3} 上的关系。求R的自反闭包r(R)、对称闭包s(R)和传递闭包t(R)。

    📖 答案:

    r(R) = R ∪ {(1,1), (2,2), (3,3)}

     = {(1,1), (1,2), (2,2), (2,3), (3,1), (3,3)}

    s(R) = R ∪ {(2,1), (3,2), (1,3)}

     = {(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)}

    t(R) = R ∪ R² ∪ R³

    R² = R∘R = {(1,3), (2,1), (3,2)}

    R³ = R²∘R = {(1,1), (2,2), (3,3)}

    t(R) = {(1,2), (1,3), (1,1), (2,3), (2,1), (2,2), (3,1), (3,2), (3,3)}

    💡 传递闭包 t(R) = ∪Rⁿ (n≥1),在有限集上总存在某个N使得t(R)=R∪R²∪⋯∪Rᴺ。

    练习3 — 函数

    第1题 基础

    判断下列函数是否为单射、满射或双射:

    (1) f: ℤ → ℤ, f(x) = 2x

    (2) f: ℝ → ℝ, f(x) = x³

    (3) f: ℤ → ℕ, f(x) = |x|

    📖 答案:

    (1) 单射(若2x₁=2x₂,则x₁=x₂);不是满射(值域为偶数集,奇数没有原像);不是双射

    (2) 单射(x³是严格递增函数);满射(∀y∈ℝ,∃x=∛y使x³=y);是双射

    (3) 不是单射(f(1)=f(-1)=1但1≠-1);不是满射(值域为ℕ,但ℕ中的0...等下,ℕ通常不含负整数...f:ℤ→ℕ,值域为{0,1,2,...},但ℕ包含0时就是满射...);实际上是满射(∀n∈ℕ,取x=n或x=-n,f(x)=n)

    💡 单射:不同输入→不同输出;满射:每个输出都有输入对应。

    第2题 进阶

    设 A = {1,2,3},B = {a,b,c},f: A → B 定义为 f(1)=a, f(2)=b, f(3)=c。求 f 的逆函数 f⁻¹ 以及 f∘f⁻¹ 和 f⁻¹∘f。

    📖 答案:

    f是双射(单射+满射),所以存在逆函数:

    f⁻¹: B → A, f⁻¹(a)=1, f⁻¹(b)=2, f⁻¹(c)=3

    f∘f⁻¹: B → B, 对于∀y∈B,有 f∘f⁻¹(y) = f(f⁻¹(y)) = y,即恒等函数 I_B

    f⁻¹∘f: A → A, 对于∀x∈A,有 f⁻¹∘f(x) = f⁻¹(f(x)) = x,即恒等函数 I_A

    💡 双射函数才有逆函数,且 f∘f⁻¹ = I_B,f⁻¹∘f = I_A。


    第三部分 · 代数结构 练习题

    练习1 — 代数系统

    第1题 基础

    在整数集ℤ上定义运算"★":a ★ b = a + b + 1。判断该运算是否满足:

    (1) 交换律   (2) 结合律

    📖 答案:

    (1) 满足交换律:a ★ b = a + b + 1 = b + a + 1 = b ★ a

    (2) 满足结合律

     (a ★ b) ★ c = (a + b + 1) ★ c = (a + b + 1) + c + 1 = a + b + c + 2

     a ★ (b ★ c) = a ★ (b + c + 1) = a + (b + c + 1) + 1 = a + b + c + 2

     所以 (a ★ b) ★ c = a ★ (b ★ c)

    💡 该运算的单位元是 -1:a ★ (-1) = a + (-1) + 1 = a

    第2题 进阶

    设代数系统 ⟨ℤ, ★⟩ 中 a ★ b = a + b + 1,求:

    (1) 单位元   (2) 每个元素a的逆元

    📖 答案:

    (1) 设单位元为e,则对∀a∈ℤ:a ★ e = a + e + 1 = a

     → e = -1。验证:(-1) ★ a = -1 + a + 1 = a ✓

    单位元为 -1

    (2) 设a的逆元为a⁻¹,则 a ★ a⁻¹ = e = -1

     a + a⁻¹ + 1 = -1 → a⁻¹ = -a - 2

     验证:a ★ (-a-2) = a + (-a-2) + 1 = -1 ✓

    每个元素a的逆元为 -a - 2

    💡 在代数系统中,不要求运算一定是普通加法或乘法,逆元的定义依赖于具体的运算和单位元。

    练习2 — 群与环

    第1题 基础

    判断下列集合关于指定运算是否构成群:

    (1) ⟨ℤ, +⟩(整数集关于加法)

    (2) ⟨ℕ, +⟩(自然数集关于加法)

    (3) ⟨{1, -1, i, -i}, ×⟩(四个复数关于乘法)

    📖 答案:

    (1) 是群:封闭 ✓,结合律 ✓,单位元0 ✓,逆元为相反数 ✓

    (2) 不是群:封闭 ✓,结合律 ✓,单位元0 ✓,但除0外其他元素无加法逆元(如1的逆元应为-1,但-1∉ℕ)✗

    (3) 是群:封闭 ✓(1×1=1, 1×(-1)=-1, (-i)×i=1等),结合律 ✓,单位元1 ✓,1⁻¹=1, (-1)⁻¹=-1, i⁻¹=-i, (-i)⁻¹=i ✓

    💡 群需要验证四条性质:封闭性、结合律、单位元、逆元。

    第2题 进阶

    设群 G 中元素 a 的阶为 n(即 |a| = n),证明:aᵐ = e 当且仅当 n | m。

    📖 答案:

    证明:

    (⇒) 设 aᵐ = e。由带余除法,m = qn + r,其中0 ≤ r < n。

    aᵐ = a^(qn+r) = (aⁿ)ᵠ · aʳ = eᵠ · aʳ = aʳ = e

    因为 r < n 且 n 是使 aⁿ = e 的最小正整数,所以 r = 0,即 n | m。

    (⇐) 若 n | m,则 m = kn,aᵐ = a^(kn) = (aⁿ)ᵏ = eᵏ = e。

    所以结论成立。

    💡 群的元素阶是群论中最重要的概念之一,与拉格朗日定理密切相关。

    第3题 挑战

    设 G 是群,H 是 G 的子群。证明:|H| 整除 |G|(拉格朗日定理)。

    应用:求 4 阶群和 5 阶群的子群可能有哪些阶?

    📖 答案:
    拉格朗日定理的证明思路:

    用H的陪集划分G。G被划分为若干个互不相交的左陪集(或右陪集),每个陪集的大小都等于|H|。

    设 [G:H] 是H在G中的指数(即不同陪集的个数),则 |G| = [G:H] · |H|,所以|H|整除|G|。

    应用:

    4阶群:可能子群阶数为 1, 2, 4(1和4是平凡子群,可能有2阶子群)

    5阶群:可能子群阶数为 1, 5(只有平凡子群)

    因为5是素数,由拉格朗日定理,5阶群只有1阶和5阶子群。

    💡 拉格朗日定理是群论中最基本的定理之一,它给出了子群阶与群阶之间的关系。

    练习3 — 格与布尔代数

    第1题 基础

    判断下列偏序集是否构成格:

    (1) ⟨ℕ, ≤⟩(自然数集关于通常的大小关系)

    (2) ⟨{1,2,3,4,6,12}, |⟩(整除关系)

    (3) 画出(2)的哈斯图。

    📖 答案:

    (1) 是格:任意两个自然数都有上确界max(a,b)和下确界min(a,b)

    (2) 是格:任意两个数的上确界为lcm(最小公倍数),下确界为gcd(最大公约数)

    (3) 哈斯图:

        12

       /  \

       4   6

       |   / \

       2  3

      /  \

      1

    💡 格要求偏序集中任意两个元素都有唯一的上确界(并)和下确界(交)。

    第2题 进阶

    在布尔代数 ⟨{0,1}, ∨, ∧, ¬⟩ 中,验证分配律:x ∧ (y ∨ z) = (x ∧ y) ∨ (x ∧ z)

    📖 答案:

    通过真值表验证所有4种赋值:

    x | y | z | y∨z | x∧(y∨z) | x∧y | x∧z | (x∧y)∨(x∧z)

    0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

    0 | 0 | 1 | 1 | 0 | 0 | 0 | 0

    0 | 1 | 0 | 1 | 0 | 0 | 0 | 0

    0 | 1 | 1 | 1 | 0 | 0 | 0 | 0

    1 | 0 | 0 | 0 | 0 | 0 | 0 | 0

    1 | 0 | 1 | 1 | 1 | 0 | 1 | 1

    1 | 1 | 0 | 1 | 1 | 1 | 0 | 1

    1 | 1 | 1 | 1 | 1 | 1 | 1 | 1

    两列完全一致,所以分配律成立。

    💡 布尔代数是计算机逻辑电路设计的数学基础。

    第3题 挑战

    设 B 是布尔代数,对 ∀a, b ∈ B,证明:a ≤ b 当且仅当 a ∧ ¬b = 0。

    📖 答案:

    证明:

    (⇒) 若 a ≤ b,则 a ∧ b = a(格的吸收性质)。

    a ∧ ¬b = (a ∧ b) ∧ ¬b (因为 a ∧ b = a)

    = a ∧ (b ∧ ¬b) (结合律)

    = a ∧ 0 = 0

    (⇐) 若 a ∧ ¬b = 0,则:

    a = a ∧ 1 = a ∧ (b ∨ ¬b) = (a ∧ b) ∨ (a ∧ ¬b) = (a ∧ b) ∨ 0 = a ∧ b

    所以 a ∧ b = a,由格的等价定义可知 a ≤ b。

    所以结论成立。

    💡 布尔代数中的许多性质可以通过将关系问题转化为代数等式来证明。


    第四部分 · 组合数学 练习题

    练习1 — 基本的组合计数公式

    第1题 基础

    计算:

    (1) P(6,3) = 6 × 5 × 4

    (2) C(8,3)

    (3) C(10,7)(提示:C(n,k)=C(n,n−k))

    📖 答案:

    (1) P(6,3) = 6 × 5 × 4 = 120

    (2) C(8,3) = 8! / (3! × 5!) = (8 × 7 × 6) / (3 × 2 × 1) = 336 / 6 = 56

    (3) C(10,7) = C(10,3) = (10 × 9 × 8) / (3 × 2 × 1) = 720 / 6 = 120

    💡 组合数公式 C(n,k) = n! / (k!(n−k)!),利用C(n,k)=C(n,n−k)可以简化计算。

    第2题 进阶

    从10名同学中选出3人组成班委会:

    (1) 如果3人分别担任班长、学习委员、体育委员,有多少种选法?

    (2) 如果3人不区分职务,有多少种选法?

    📖 答案:

    (1) 有顺序的选法(排列):P(10,3) = 10 × 9 × 8 = 720(种)

    (2) 无顺序的选法(组合):C(10,3) = 10! / (3! × 7!) = (10×9×8) / (3×2×1) = 120(种)

    💡 区分排列与组合的关键在于是否"考虑顺序"。

    第3题 挑战

    利用二项式定理证明:C(n,0) + C(n,1) + C(n,2) + … + C(n,n) = 2ⁿ

    📖 答案:

    证明:

    由二项式定理:(x + y)ⁿ = ΣC(n,k)xⁿ⁻ᵏyᵏ (k从0到n)

    令 x = 1, y = 1:

    (1 + 1)ⁿ = ΣC(n,k) · 1ⁿ⁻ᵏ · 1ᵏ

    2ⁿ = ΣC(n,k) (k从0到n)

    即 C(n,0) + C(n,1) + C(n,2) + … + C(n,n) = 2ⁿ

    证毕。

    💡 这个等式的组合意义:n个元素的所有子集个数等于2ⁿ。

    练习2 — 递推方程与生成函数

    第1题 基础

    Fibonacci数列定义为 F₀ = 0, F₁ = 1, Fₙ = Fₙ₋₁ + Fₙ₋₂ (n ≥ 2)。求:

    (1) F₂, F₃, F₄, F₅ 的值

    📖 答案:

    F₂ = F₁ + F₀ = 1 + 0 = 1

    F₃ = F₂ + F₁ = 1 + 1 = 2

    F₄ = F₃ + F₂ = 2 + 1 = 3

    F₅ = F₄ + F₃ = 3 + 2 = 5

    💡 Fibonacci数列是递推方程最经典的例子,广泛出现在自然界的各种模式中。

    第2题 进阶

    用特征根法求解递推方程:aₙ = 3aₙ₋₁ − 2aₙ₋₂,初始条件 a₀ = 2, a₁ = 3。

    📖 答案:

    特征方程:x² − 3x + 2 = 0

    因式分解:(x − 1)(x − 2) = 0

    特征根:r₁ = 1, r₂ = 2

    通解形式:aₙ = A · 1ⁿ + B · 2ⁿ = A + B · 2ⁿ

    代入初始条件:

    n = 0:A + B = 2

    n = 1:A + 2B = 3

    解方程组得:A = 1, B = 1

    所以 aₙ = 1 + 2ⁿ

    验证:a₂ = 1 + 4 = 5 = 3a₁ − 2a₀ = 9 − 4 = 5 ✓

    💡 齐次线性递推方程的标准解法:特征方程→特征根→通解→待定系数。

    第3题 进阶

    Hanoi塔问题:n个圆盘从A柱移到C柱,每次只能移动一个圆盘,且大盘不能在小盘之上。递推关系为 Tₙ = 2Tₙ₋₁ + 1,T₁ = 1。求Tₙ的通项公式。

    📖 答案:

    非齐次递推方程:Tₙ = 2Tₙ₋₁ + 1

    齐次解:Tₙ⁽ʰ⁾ = A · 2ⁿ

    特解形式:设 Tₙ⁽ᵖ⁾ = c(常数),代入得 c = 2c + 1 → c = −1

    通解:Tₙ = A · 2ⁿ − 1

    代入初始条件 T₁ = 1:A · 2¹ − 1 = 1 → 2A = 2 → A = 1

    所以 Tₙ = 2ⁿ − 1

    验证:T₁=1, T₂=3, T₃=7, T₄=15, ...

    💡 64个圆盘需要 2⁶⁴ − 1 ≈ 1.84 × 10¹⁹ 步,假设每秒移动一次,需要约5849亿年!

    第4题 挑战

    Catalan数Cₙ满足递推关系:C₀ = 1,Cₙ = ΣCₖCₙ₋₁₋ₖ (k从0到n−1)。求C₁, C₂, C₃, C₄的值。

    📖 答案:

    C₀ = 1

    C₁ = C₀C₀ = 1 × 1 = 1

    C₂ = C₀C₁ + C₁C₀ = 1×1 + 1×1 = 2

    C₃ = C₀C₂ + C₁C₁ + C₂C₀ = 1×2 + 1×1 + 2×1 = 5

    C₄ = C₀C₃ + C₁C₂ + C₂C₁ + C₃C₀ = 1×5 + 1×2 + 2×1 + 5×1 = 14

    通项公式:Cₙ = (1/(n+1)) · C(2n,n)

    💡 Catalan数出现在许多组合问题中:n对括号的合法匹配数、n个结点的不同二叉树数等。


    第五部分 · 图论 练习题

    练习1 — 图的基本概念

    第1题 基础

    一个无向图有8个顶点,每个顶点的度数分别为:3,3,4,4,5,5,6,6。

    (1) 求该图的总度数。

    (2) 求该图的边数。

    📖 答案:

    (1) 总度数 = 3 + 3 + 4 + 4 + 5 + 5 + 6 + 6 = 36

    (2) 由握手定理 Σd(v) = 2|E|,得:

     2|E| = 36 → |E| = 18(条边)

    💡 握手定理是图论最基本的定理,它告诉我们所有顶点的度数之和等于边数的两倍。

    第2题 进阶

    判断下列命题是否正确,并说明理由:

    (1) "存在一个5个顶点的图,其中每个顶点的度数都不同"

    (2) "存在一个5个顶点的图,其中每个顶点的度数都是2"

    📖 答案:

    (1) 错误。一个n个顶点的简单图中,每个顶点的度数取值范围是0到n−1。但度数为0的顶点(孤立点)和度数为n−1的顶点不能同时出现(度数为n−1说明与所有其他顶点相连,而度数为0说明不与任何顶点相连,矛盾)。对于5个顶点,可能的度数为{0,1,2,3,4},但0和4不能共存,所以最多有4种不同的度数,无法使5个顶点度数各不相同。

    (2) 正确。5个顶点的圈(5-cycle)中每个顶点的度数都是2。

    💡 度数序列的可图化问题需要满足握手定理以及一些必要约束条件。

    练习2 — 欧拉图与哈密顿图

    第1题 基础

    判断下列图是否存在欧拉回路或欧拉通路:

    (1) 一个所有顶点度数均为偶数的连通图。

    (2) 一个恰有两个顶点度数为奇数、其余为偶数的连通图。

    (3) 一个有4个奇度顶点的连通图。

    📖 答案:

    (1) 存在欧拉回路(所有顶点偶数度 → 可以一笔画回到起点)

    (2) 存在欧拉通路但不存欧拉回路(两个奇度顶点为起点和终点,欧拉一笔画)

    (3) 既无欧拉回路也无欧拉通路(多于2个奇度顶点无法一笔画)

    💡 欧拉图判定定理:连通图有欧拉回路⇔所有顶点度数均为偶数;有欧拉通路⇔恰有0或2个奇度顶点。

    第2题 进阶

    设G是有n个顶点的简单图,若每个顶点的度数都至少为 n/2(Dirac定理),证明G是哈密顿图。

    应用:一个6个顶点的简单图,每个顶点度数至少为3,问是否一定是哈密顿图?

    📖 答案:
    Dirac定理:若n≥3且简单图G中每个顶点的度数 ≥ n/2,则G是哈密顿图(存在哈密顿回路)。
    应用:n=6,n/2=3,每个顶点度数≥3,满足Dirac定理条件。

    所以一定是哈密顿图

    💡 注意:Dirac定理是充分条件而非必要条件。即使不满足Dirac定理,图仍可能是哈密顿图。

    练习3 — 树

    第1题 基础

    一棵树有10个顶点,请问它有多少条边?如果知道它有3个度为1的顶点、2个度为2的顶点,其余顶点度数为3,求度数为3的顶点有多少个?

    📖 答案:

    树的性质:|E| = |V| − 1 = 10 − 1 = 9(条边)

    设度数为3的顶点有x个,则总顶点数:3 + 2 + x = 10 → x = 5

    验证度数之和:3×1 + 2×2 + 5×3 = 3 + 4 + 15 = 22

    握手定理:总度数 = 2|E| = 2 × 9 = 18?

    等等,这里有矛盾:22 ≠ 18!

    重新计算:3个度1 + 2个度2 + 5个度3 = 3 + 4 + 15 = 22,但2|E|=18。

    矛盾说明数据有误。设度数为3的顶点有 x 个:

    总顶点数:3 + 2 + x = 5 + x = 10 → x = 5

    总度数:3×1 + 2×2 + 5×3 = 3 + 4 + 15 = 22

    总边数 = 22/2 = 11,但 n=10 时边数应为 9。

    数据不一致。正确解法:

    设度3的顶点有 x 个,则:3 + 2 + x = 10 → x = 5

    总度数 = 3 + 4 + 5×3 = 22,边数 = 11。

    但树要求边数 = 9,所以这样的树不存在。

    💡 检查树的存在性不仅要满足树的性质 |E|=|V|−1,还要满足握手定理 Σd(v)=2|E|。

    第2题 进阶

    用Prim算法求下图的最小生成树(从顶点A开始),边权如下:AB=4, AC=2, BC=1, BD=5, CD=3, CE=6, DE=4。

    📖 答案:

    Prim算法步骤(从A开始):

    Step 1: A → 当前集合{A},最小边 AC=2,加入C → {A,C},权值和=2

    Step 2: 从{A,C}出发,可选边:AB=4, BC=1, CD=3, CE=6,最小边 BC=1,加入B → {A,B,C},权值和=3

    Step 3: 从{A,B,C}出发,可选边:AB=4(已连), AC=2(已连), BC=1(已连), BD=5, CD=3, CE=6,最小边 CD=3,加入D → {A,B,C,D},权值和=6

    Step 4: 从{A,B,C,D}出发,可选边:DE=4, CE=6,最小边 DE=4,加入E → {A,B,C,D,E},权值和=10

    最小生成树边集:AC(2), BC(1), CD(3), DE(4),总权值 = 10

    💡 Prim算法每一步从未处理的顶点中选择与已选集合距离最近的顶点加入。

    练习4 — 平面图

    第1题 基础

    一个连通平面图有6个顶点和10条边,求它的面数。

    📖 答案:

    由欧拉公式:n − m + r = 2

    代入 n=6, m=10:

    6 − 10 + r = 2

    r = 2 + 4 = 6(个面)

    💡 欧拉公式 n − m + r = 2 是平面图理论中最重要的公式之一。

    第2题 进阶

    证明:K₅(5个顶点的完全图)不是平面图。

    📖 答案:

    证明(反证法):

    假设K₅是平面图。K₅有 n=5, m=10。

    对于简单平面图,每个面至少由3条边围成,每条边至多属于两个面,因此有:

    3r ≤ 2m → r ≤ 2m/3 = 20/3 ≈ 6.67

    代入欧拉公式:n − m + r = 2 → 5 − 10 + r = 2 → r = 7

    但 r = 7 > 6.67,矛盾!

    所以K₅不是平面图

    💡 K₅和K₃,₃是图示性的"非平面图",所有非平面图都包含它们的细分(Kuratowski定理)。

    练习5 — 支配集、覆盖集、匹配与着色

    第1题 基础

    一个地图需要用4种颜色给相邻区域涂不同颜色。已知四色定理:任何平面图都可4-着色。请问一个由8个区域组成的平面地图,至少需要几种颜色?最多需要几种颜色?

    📖 答案:

    四色定理:任何平面图最多需要4种颜色即可保证相邻区域不同色。

    最少:如果8个区域互不相邻(例如都是孤立的),则1种颜色就足够了。

    最多:如果8个区域两两相邻(构成完全图K₈),但K₈不是平面图。作为平面图,最多的情况是某些区域互相邻接...例如4个区域两两相邻需要4种颜色。但任何平面图都可用4种颜色着色。

    所以:最少 1种,最多 4种

    💡 四色定理是图论中最著名的定理之一,也是第一个借助计算机证明的数学定理。

    第2题 进阶

    二部图 G = (X, Y, E),其中 X = {x₁, x₂, x₃},Y = {y₁, y₂, y₃},边集为 {x₁y₁, x₁y₂, x₂y₁, x₂y₃, x₃y₂}。求G的最大匹配。

    📖 答案:

    用增广路径法(匈牙利算法)求最大匹配:

    初始匹配 M = ∅

    ① 选x₁,匹配y₁ → M = {(x₁, y₁)}

    ② 选x₂,y₁已被占,找增广路径:x₂→y₁→x₁→y₂

     增广路径存在,更新匹配:M = {(x₂, y₁), (x₁, y₂)}

    ③ 选x₃,y₂已被占,找增广路径:x₃→y₂→x₁→y₁→x₂→y₃

     增广路径存在,更新匹配:M = {(x₃, y₂), (x₁, y₁), (x₂, y₃)}

    最大匹配:{(x₁, y₁), (x₂, y₃), (x₃, y₂)},大小为3(完美匹配)

    💡 二部图的最大匹配可以通过不断寻找增广路径来扩大匹配,直到不存在增广路径为止。


    第六部分 · 初等数论 练习题

    练习1 — 初等数论综合

    第1题 基础

    用欧几里得算法(辗转相除法)求 252 和 105 的最大公约数。

    📖 答案:

    252 ÷ 105 = 2 余 42

    105 ÷ 42 = 2 余 21

    42 ÷ 21 = 2 余 0

    gcd(252, 105) = 21

    💡 欧几里得算法:反复用较大数除以较小数,直到余数为0,最后的除数就是最大公约数。

    第2题 基础

    判断下列同余式是否成立:

    (1) 17 ≡ 5 (mod 12)

    (2) 23 ≡ 3 (mod 5)

    (3) 100 ≡ 0 (mod 25)

    (4) 35 ≡ 1 (mod 7)

    📖 答案:

    (1) 17 − 5 = 12,12能被12整除 → 成立

    (2) 23 − 3 = 20,20能被5整除 → 成立

    (3) 100 − 0 = 100,100能被25整除 → 成立

    (4) 35 − 1 = 34,34不能被7整除 → 不成立

    💡 a ≡ b (mod m) 的含义是 m | (a−b)。

    第3题 进阶

    求解一次同余方程:5x ≡ 3 (mod 7)

    📖 答案:

    方法一(试除法):依次尝试 x = 0, 1, 2, ...

    x=0: 5×0=0≡0≠3

    x=1: 5×1=5≡5≠3

    x=2: 5×2=10≡3 ✓

    所以 x ≡ 2 (mod 7)

    方法二(求逆元):5在模7下的逆元是3(因为5×3=15≡1 mod 7)

    两边同乘3:x ≡ 3×3 = 9 ≡ 2 (mod 7)

    解为 x ≡ 2 (mod 7),即 x = 7k + 2 (k ∈ ℤ)

    💡 解一次同余方程 ax ≡ b (mod m) 的关键是求a在模m下的逆元(前提是gcd(a,m)=1)。

    第4题 进阶

    用费马小定理计算 3²⁰²⁴ mod 7 的值。

    📖 答案:

    7是素数,由费马小定理:3^(7−1) ≡ 3⁶ ≡ 1 (mod 7)

    2024 ÷ 6 = 337 余 2

    所以 3²⁰²⁴ = 3^(6×337 + 2) = (3⁶)^337 × 3² ≡ 1^337 × 9 ≡ 2 (mod 7)

    3²⁰²⁴ mod 7 = 2

    💡 费马小定理 a^(p−1) ≡ 1 (mod p) 是简化大指数模运算的利器。

    第5题 进阶

    用欧拉定理求 5^φ(12) mod 12 的值,验证欧拉定理的正确性。

    📖 答案:

    12 = 2² × 3

    φ(12) = 12 × (1 − 1/2) × (1 − 1/3) = 12 × 1/2 × 2/3 = 4

    由欧拉定理:5^φ(12) ≡ 5⁴ ≡ 1 (mod 12)(因为gcd(5,12)=1)

    验证:5² = 25 ≡ 1 (mod 12),所以 5⁴ = (5²)² ≡ 1² = 1 (mod 12) ✓

    欧拉定理成立。

    💡 欧拉定理 a^φ(m) ≡ 1 (mod m) 是费马小定理的推广,其中φ(m)是欧拉函数。

    第6题 挑战

    RSA密码体制中,选取两个素数 p=11, q=13,公钥 e=7。

    (1) 计算 n 和 φ(n)。

    (2) 求私钥 d(满足 ed ≡ 1 (mod φ(n)))。

    (3) 加密明文 m=5,计算密文 c = mᵉ mod n。

    (4) 解密密文c,验证是否恢复出明文m。

    📖 答案:

    (1) n = p × q = 11 × 13 = 143

     φ(n) = (p−1)(q−1) = 10 × 12 = 120

    (2) 求d使得 7d ≡ 1 (mod 120),即 7d = 120k + 1

     用扩展欧几里得算法:7 × 17 + 120 × (−1) = 119 − 120 = −1

     7 × (−17) + 120 × 1 = −119 + 120 = 1

     所以 d ≡ −17 ≡ 103 (mod 120)

     验证:7 × 103 = 721 = 6 × 120 + 1 ✓

    私钥 d = 103

    (3) 密文 c = 5⁷ mod 143

     5² = 25, 5⁴ = 25² = 625 mod 143 = 625 − 4×143 = 625 − 572 = 53

     5⁷ = 5⁴ × 5² × 5¹ = 53 × 25 × 5 = 53 × 125 = 6625

     6625 mod 143 = 6625 − 46×143 = 6625 − 6578 = 47

    (4) 解密:m = 47¹⁰³ mod 143

     由欧拉定理,47^φ(143) = 47¹²⁰ ≡ 1 (mod 143)

     47¹⁰³ = 47^(120−17) = 47¹²⁰ × 47^(−17) ≡ 1 × (47⁻¹)¹⁷ (mod 143)

     实际上我们只需要验证 47⁷ mod 143 = 5 即可(因为RSA的加解密互为逆运算)。

     直接验证较复杂,但由RSA的正确性定理保证 m ≡ cᵈ ≡ (mᵉ)ᵈ ≡ m (mod n)。

     所以解密后得到 m = 5

    💡 RSA的安全性基于大整数分解的困难性:已知n分解出p和q是计算上不可行的。

    第7题 挑战

    证明:若p是素数,则对于任意整数a,有 aᵖ ≡ a (mod p)。

    📖 答案:

    证明:

    情况1:若 p | a,则 a ≡ 0 (mod p),aᵖ ≡ 0 (mod p),所以 aᵖ ≡ a (mod p) ✓

    情况2:若 p ∤ a,则 gcd(a, p) = 1,由费马小定理:a^(p−1) ≡ 1 (mod p)

     两边同乘a:aᵖ ≡ a (mod p) ✓

    所以对于任意整数a,aᵖ ≡ a (mod p) 成立。

    💡 这是一个常用的费马小定理的等价形式,不要求gcd(a,p)=1的额外条件。

    第8题 挑战

    求所有整数x,使得 x² ≡ 1 (mod 15)。

    📖 答案:

    15 = 3 × 5,由中国剩余定理,x² ≡ 1 (mod 15) 等价于方程组:

    x² ≡ 1 (mod 3) 且 x² ≡ 1 (mod 5)

    模3:x² ≡ 1 (mod 3) → x ≡ ±1 (mod 3),即 x ≡ 1 或 2 (mod 3)

    模5:x² ≡ 1 (mod 5) → x ≡ ±1 (mod 5),即 x ≡ 1 或 4 (mod 5)

    四种组合:

    (x≡1 mod 3, x≡1 mod 5) → x ≡ 1 (mod 15)

    (x≡1 mod 3, x≡4 mod 5) → x ≡ 4 (mod 15)

    (x≡2 mod 3, x≡1 mod 5) → x ≡ 11 (mod 15)

    (x≡2 mod 3, x≡4 mod 5) → x ≡ 14 (mod 15)

    验证:1²=1, 4²=16≡1, 11²=121≡1, 14²=196≡1 (mod 15) ✓

    解为 x ≡ 1, 4, 11, 14 (mod 15)

    💡 注意模合数时,二次同余方程的解通常多于2个!