本文档汇总离散数学的核心概念、公式和定理,方便快速查阅。
数理逻辑
命题联结词
| 联结词 | 符号 | 读法 | 真值条件 |
|---|
| 否定 | ¬p | 非 p | ¬T=F, ¬F=T |
| 合取 | p∧q | p 且 q | 仅当 p=T 且 q=T 时为真 |
| 析取 | p∨q | p 或 q | 仅当 p=F 且 q=F 时为假 |
| 蕴含 | p→q | 如果 p 则 q | 仅当 p=T 且 q=F 时为假 |
| 等价 | p↔q | p 当且仅当 q | p 和 q 同真或同假 |
| 异或 | p⊕q | p 异或 q | p 和 q 恰一为真 |
逻辑等价式
德摩根律:
¬(p∧q)≡¬p∨¬q
¬(p∨q)≡¬p∧¬q
蕴含等价式:
p→q≡¬p∨q
逆否命题:
p→q≡¬q→¬p
量词否定:
¬∀xP(x)≡∃x¬P(x)
¬∃xP(x)≡∀x¬P(x)
文字:命题变量或其否定(p 或 ¬p)
子句:文字的析取(p∨¬q∨r)
CNF(合取范式):子句的合取 (p∨¬q)∧(¬p∨r)
DNF(析取范式):合取项的析取 (p∧¬q)∨(¬p∧r)
CNF 转换步骤:
- 消除蕴含:p→q≡¬p∨q
- 德摩根律将否定内移
- 消除双重否定
- 分配律:p∨(q∧r)≡(p∨q)∧(p∨r)
前束范式(PNF)
定义:所有量词都在公式开头的形式
Q1x1Q2x2⋯QnxnB
其中 $Q_i \in \lbrace\forall, \exists\rbrace$,B 不含量词
转换步骤:
- 消除蕴含和等价
- 将否定内移(使用量词否定规则)
- 标准化变量(重命名避免冲突)
- 将量词移到前面
量词移动规则(x 不在 A 中自由出现):
A∧∃xB(x)≡∃x(A∧B(x))
A∨∀xB(x)≡∀x(A∨B(x))
∀x∀yP(x,y)≡∀y∀xP(x,y)
∃x∃yP(x,y)≡∃y∃xP(x,y)
注意:∀x∃yP(x,y)≡∃y∀xP(x,y)
谓词逻辑等价式
分配性:
∀x(P(x)∧Q(x))≡∀xP(x)∧∀xQ(x)
∃x(P(x)∨Q(x))≡∃xP(x)∨∃xQ(x)
不可分配:
∀x(P(x)∨Q(x))≡∀xP(x)∨∀xQ(x)
∃x(P(x)∧Q(x))≡∃xP(x)∧∃xQ(x)
谓词逻辑推理规则
| 规则 | 形式 | 说明 |
|---|
| 全称实例化 | ∀xP(x)⊢P(c) | 从全称推出具体实例 |
| 全称推广 | P(c)⊢∀xP(x) | c 必须是任意元素 |
| 存在实例化 | ∃xP(x)⊢P(c∗) | c∗ 必须是新符号 |
| 存在推广 | P(c)⊢∃xP(x) | 从具体推出存在 |
注意:先存在实例化,后全称实例化
Skolem化
目的:消除存在量词,得到只含全称量词的公式
Skolem常量:存在量词前无全称量词时使用
| 原公式 | Skolem化结果 |
|---|
| ∃xP(x) | P(c) |
| ∀y∃xP(x,y) | ∀yP(f(y),y) |
| ∃x∀y∃zP(x,y,z) | ∀yP(c,y,f(y)) |
重要性质:Skolem化保持可满足性,但不保持逻辑等价
消解原理
消解规则:
C1∨C2C1∨LC2∨¬L
消解反驳步骤:
- 否定结论
- 转换为CNF(命题逻辑)或Skolem CNF(一阶逻辑)
- 应用消解规则推导
- 若推出空子句 □,则原命题成立
一阶逻辑消解:需要合一(Unification)算法
合一示例:P(x,f(y)) 和 P(a,f(b)) 合一为 P(a,f(b)),替换 {x↦a,y↦b}
证明方法
| 方法 | 适用场景 |
|---|
| 直接证明 | 证明 p→q:假设 p,推导 q |
| 反证法 | 假设结论为假,导出矛盾 |
| 逆否证明 | 证明 ¬q→¬p 等价于 p→q |
| 数学归纳法 | 与自然数相关的命题 |
| 构造性证明 | 存在性命题,直接构造对象 |
| 分情况证明 | 命题涉及多种互斥情况 |
集合论
集合运算
| 运算 | 定义 |
|---|
| 并集 | A∪B={x∣x∈A∨x∈B} |
| 交集 | A∩B={x∣x∈A∧x∈B} |
| 差集 | A−B={x∣x∈A∧x∈/B} |
| 补集 | A=U−A |
| 对称差 | A△B=(A−B)∪(B−A) |
集合恒等式
德摩根律:
A∪B=A∩B
A∩B=A∪B
分配律:
A∪(B∩C)=(A∪B)∩(A∪C)
A∩(B∪C)=(A∩B)∪(A∩C)
容斥原理:
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
笛卡尔积与幂集
- 笛卡尔积:A×B={(a,b)∣a∈A,b∈B}
- 幂集:P(A)={S∣S⊆A},∣P(A)∣=2∣A∣
函数与关系
函数类型
| 类型 | 定义 | 条件 |
|---|
| 单射 | 不同输入映射不同输出 | f(x1)=f(x2)⇒x1=x2 |
| 满射 | 值域等于陪域 | ∀y∈Y,∃x:f(x)=y |
| 双射 | 既是单射又是满射 | 一一对应 |
关系的性质
| 性质 | 定义 |
|---|
| 自反性 | ∀x:xRx |
| 对称性 | xRy⇒yRx |
| 反对称性 | xRy∧yRx⇒x=y |
| 传递性 | xRy∧yRz⇒xRz |
特殊关系
- 等价关系:自反 + 对称 + 传递
- 偏序关系:自反 + 反对称 + 传递
组合数学
排列与组合
| 概念 | 公式 | 说明 |
|---|
| 排列 | P(n,r)=(n−r)!n! | 有序选取 |
| 组合 | C(n,r)=(rn)=r!(n−r)!n! | 无序选取 |
| 圆排列 | (n−1)! | 环状排列 |
| 可重组合 | C(n+r−1,r) | 允许重复选取 |
二项式定理
(a+b)n=∑k=0n(kn)an−kbk
常用等式:
∑k=0n(kn)=2n
∑k=0n(−1)k(kn)=0
鸽巢原理
- 基本形式:n+1 个物品放入 n 个盒子,至少一个盒子有 ≥2 个物品
- 一般形式:n 个物品放入 m 个盒子,至少一个盒子有 ≥⌈n/m⌉ 个物品
递推关系
斐波那契数列:Fn=Fn−1+Fn−2,F0=0,F1=1
通项公式:
Fn=51[(21+5)n−(21−5)n]
基本概念
| 概念 | 定义 |
|---|
| 阶(Order) | 顶点数 $ |
| 规模(Size) | 边数 $ |
| 度数(Degree) | 与顶点关联的边数 |
| 握手定理 | $\sum_{v} \deg(v) = 2\vert E\vert$ |
特殊图
| 图类型 | 描述 | 边数 |
|---|
| 完全图 Kn | 任意两点都有边 | 2n(n−1) |
| 二分图 | 顶点分成两部分,边只连接两部分之间 | — |
| 完全二分图 Km,n | 两部分间所有点对都有边 | mn |
| 树 | 连通无环图 | n−1 |
图的遍历
| 算法 | 数据结构 | 应用 |
|---|
| DFS | 栈 | 路径搜索、拓扑排序、检测环 |
| BFS | 队列 | 最短路径(无权)、层次遍历 |
最短路径算法
| 算法 | 适用图 | 时间复杂度 |
|---|
| BFS | 无权图 | O(V+E) |
| Dijkstra | 非负权重 | O((V+E)logV) |
| Floyd-Warshall | 任意权重 | O(V3) |
最小生成树
| 算法 | 策略 | 时间复杂度 |
|---|
| Prim | 从顶点扩展 | O(ElogV) |
| Kruskal | 按边权排序 | O(ElogE) |
欧拉路径与哈密顿路径
欧拉路径判定条件:
| 情况 | 条件 |
|---|
| 欧拉回路 | 连通且所有顶点度数为偶数 |
| 欧拉路径(非回路) | 连通且恰有 2 个奇数度顶点 |
Hierholzer 算法:O(E) 时间复杂度
哈密顿路径:判定是 NP 完全问题
| 定理 | 条件 |
|---|
| Dirac 定理 | 每个顶点度数 ≥n/2 则存在哈密顿回路 |
| Ore 定理 | 任意不相邻顶点 u,v 满足 deg(u)+deg(v)≥n |
平面图
欧拉公式:V−E+F=2
边的上界:简单连通平面图 E≤3V−6
四色定理:平面图最多需要 4 种颜色着色
Kuratowski 定理:平面图 ⇔ 不含 K5 或 K3,3 的细分
树的等价定义
以下命题等价:
- 连通且无环
- 连通且 ∣E∣=∣V∣−1
- 无环且 ∣E∣=∣V∣−1
- 任意两点间有唯一路径
二叉树性质
- 第 i 层最多 2i 个节点
- 深度 k 的二叉树最多 2k+1−1 个节点
- 叶子数 n0 = 度为 2 的节点数 n2 + 1
遍历序列
| 遍历 | 顺序 | 用途 |
|---|
| 前序 | 根→左→右 | 复制树、前缀表达式 |
| 中序 | 左→根→右 | BST 排序输出、中缀表达式 |
| 后序 | 左→右→根 | 删除树、后缀表达式 |
| 层次 | 逐层从左到右 | 层次遍历 |
Cayley 公式
n 个标号顶点的树有 nn−2 种。
整除与同余
| 概念 | 记号 | 定义 |
|---|
| 整除 | a∣b | ∃k:b=ak |
| 同余 | a≡b(modm) | m∣(a−b) |
GCD 与 LCM
gcd(a,b)×lcm(a,b)=∣ab∣
Bezout 定理:存在整数 x,y 使得 ax+by=gcd(a,b)
欧拉函数
ϕ(n)=n∏p∣n(1−p1)
特殊值:ϕ(p)=p−1(p 为素数)
重要定理
欧拉定理:若 gcd(a,n)=1,则 aϕ(n)≡1(modn)
费马小定理:若 p 为素数且 p∤a,则 ap−1≡1(modp)
威尔逊定理:n>1 是素数当且仅当 (n−1)!≡−1(modn)
中国剩余定理:若 m1,…,mk 两两互质,则同余方程组有唯一解。
模逆元
a 模 m 的逆元存在当且仅当 gcd(a,m)=1。
当 p 为素数时:a−1≡ap−2(modp)
算法基础
渐近记号
| 记号 | 定义 | 含义 |
|---|
| O(g) | ∃C,k:∥f(n)∥≤C∥g(n)∥,∀n>k | 上界 |
| Ω(g) | ∃C,k:∥f(n)∥≥C∥g(n)∥,∀n>k | 下界 |
| Θ(g) | f 是 O(g) 且 f 是 Ω(g) | 精确阶 |
常见复杂度级别
1<logn<n<n<nlogn<n2<n3<2n<n!<nn
复杂度层次
| 复杂度 | 名称 | 典型算法 |
|---|
| O(1) | 常数时间 | 数组访问 |
| O(logn) | 对数时间 | 二分搜索 |
| O(n) | 线性时间 | 线性搜索 |
| O(nlogn) | 线性对数 | 快速排序 |
| O(n2) | 平方时间 | 冒泡排序 |
| O(2n) | 指数时间 | 子集枚举 |
循环不变式
证明正确性的三步骤:
- 初始化:循环开始前不变式成立
- 保持性:迭代过程中不变式保持成立
- 终止性:循环终止时不变式提供正确性证明
布尔代数
布尔运算真值表
与运算(AND):
| x | y | x∧y |
|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
或运算(OR):
| x | y | x∨y |
|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
非运算(NOT):
布尔代数定律
交换律:x∧y=y∧x,x∨y=y∨x
分配律:x∧(y∨z)=(x∧y)∨(x∧z)
德摩根律:
¬(x∧y)=¬x∨¬y
¬(x∨y)=¬x∧¬y
吸收律:x∧(x∨y)=x,x∨(x∧y)=x
双重否定:¬¬x=x
标准形式
析取范式(DNF):最小项的析取(积之和)
合取范式(CNF):最大项的合取(和之积)
逻辑门
| 门 | 符号 | 函数 |
|---|
| AND | $\land$ | $x \land y$ |
| OR | $\lor$ | $x \lor y$ |
| NOT | $\neg$ | $\neg x$ |
| NAND | $\uparrow$ | $\neg(x \land y)$ |
| NOR | $\downarrow$ | $\neg(x \lor y)$ |
| XOR | $\oplus$ | $x \oplus y$ |
完备性:{NAND} 和 {NOR} 都是功能完备的门集合
离散概率
概率基本公式
条件概率:
P(A∣B)=P(B)P(A∩B)
乘法公式:
P(A∩B)=P(A)⋅P(B∣A)
全概率公式(B1,…,Bn 为划分):
P(A)=∑i=1nP(Bi)⋅P(A∣Bi)
贝叶斯定理:
P(Bi∣A)=∑jP(Bj)⋅P(A∣Bj)P(Bi)⋅P(A∣Bi)
独立性
两事件独立:P(A∩B)=P(A)⋅P(B)
等价于 P(A∣B)=P(A)
期望与方差
期望:E[X]=∑xx⋅P(X=x)
方差:Var(X)=E[X2]−(E[X])2
性质:
- E[aX+b]=aE[X]+b
- Var(aX+b)=a2Var(X)
- E[X+Y]=E[X]+E[Y]
- 若 X,Y 独立:E[XY]=E[X]⋅E[Y],Var(X+Y)=Var(X)+Var(Y)
常见离散分布
| 分布 | PMF | 期望 | 方差 |
|---|
| 伯努利 Bern(p) | P(X=1)=p,P(X=0)=1−p | p | p(1−p) |
| 二项 Bin(n,p) | (kn)pk(1−p)n−k | np | np(1−p) |
| 几何 Geo(p) | (1−p)k−1p | p1 | p21−p |
| 泊松 Poi(λ) | k!λke−λ | λ | λ |
极限定理
大数定律:XˉnPE[X]
中心极限定理:σ/nXˉn−μdN(0,1)
常用算法复杂度
| 算法 | 时间复杂度 |
|---|
| 欧几里得算法(GCD) | O(log(min(a,b))) |
| 快速幂 | O(logn) |
| 埃拉托斯特尼筛法 | O(nloglogn) |
| DFS/BFS | O(V+E) |
| Dijkstra | O((V+E)logV) |
| Prim/Kruskal | O(ElogV) |
| 线性搜索 | O(n) |
| 二分搜索 | O(logn) |
| 归并排序 | O(nlogn) |
常用数学公式速查
求和公式
等差数列求和:
∑k=1nk=2n(n+1)
等差数列一般形式:
∑k=0n−1(a+kd)=na+2n(n−1)d
等比数列求和:
∑k=0nrk=r−1rn+1−1(r=1)
平方和:
∑k=1nk2=6n(n+1)(2n+1)
立方和:
∑k=1nk3=(2n(n+1))2
对数恒等式
loga(xy)=logax+logay
loga(x/y)=logax−logay
loga(xn)=nlogax
logax=logbalogbx(换底公式)
阶乘与斯特林公式
n!=n×(n−1)×⋯×2×1
斯特林近似:
n!≈2πn(en)n
常见错误与陷阱
逻辑推理中的常见错误
- 肯定后件:p→q,q⊢p(错误)
- 否定前件:p→q,¬p⊢¬q(错误)
- 混淆充分与必要:p→q 中 p 是 q 的充分条件,q 是 p 的必要条件
集合论中的常见错误
- 混淆 ∈ 和 ⊆:x∈A 与 x⊆A 不同
- 忽略空集:空集是任何集合的子集
- 幂集大小:∣P(A)∣=2∣A∣,不是 2∣A∣
组合数学中的常见错误
- 排列与组合混淆:排列考虑顺序,组合不考虑顺序
- 重复计数:使用乘法原理时忘记检查步骤是否独立
- 遗漏情况:分类讨论时遗漏某些情况
图论中的常见错误
- 混淆度数与边数:握手定理 ∑deg(v)=2∣E∣
- 欧拉路径条件:度数为奇数的顶点个数必须是 0 或 2
- 平面图边数上界:E≤3V−6 仅适用于简单连通平面图
概率论中的常见错误
- 条件概率方向:P(A∣B)=P(B∣A)
- 独立性误判:P(A∩B)=0 不意味着独立
- 贝叶斯定理应用:分母必须是所有情况的总和