跳到主要内容

离散数学速查表

本文档汇总离散数学的核心概念、公式和定理,方便快速查阅。

数理逻辑​

命题联结词​

联结词符号读法真值条件
否定¬p\neg p非 p¬T=F\neg T = F, ¬F=T\neg F = T
合取p∧qp \land qp 且 q仅当 p=Tp = T 且 q=Tq = T 时为真
析取p∨qp \lor qp 或 q仅当 p=Fp = F 且 q=Fq = F 时为假
蕴含p→qp \to q如果 p 则 q仅当 p=Tp = T 且 q=Fq = F 时为假
等价p↔qp \leftrightarrow qp 当且仅当 qpp 和 qq 同真或同假
异或p⊕qp \oplus qp 异或 qpp 和 qq 恰一为真

逻辑等价式​

德摩根律:

¬(p∧q)≡¬p∨¬q\neg(p \land q) \equiv \neg p \lor \neg q

¬(p∨q)≡¬p∧¬q\neg(p \lor q) \equiv \neg p \land \neg q

蕴含等价式:

p→q≡¬p∨qp \to q \equiv \neg p \lor q

逆否命题:

p→q≡¬q→¬pp \to q \equiv \neg q \to \neg p

量词否定:

¬∀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)

范式​

文字:命题变量或其否定(pp 或 ¬p\neg p)

子句:文字的析取(p∨¬q∨rp \lor \neg q \lor r)

CNF(合取范式):子句的合取 (p∨¬q)∧(¬p∨r)(p \lor \neg q) \land (\neg p \lor r)

DNF(析取范式):合取项的析取 (p∧¬q)∨(¬p∧r)(p \land \neg q) \lor (\neg p \land r)

CNF 转换步骤:

  1. 消除蕴含:p→q≡¬p∨qp \to q \equiv \neg p \lor q
  2. 德摩根律将否定内移
  3. 消除双重否定
  4. 分配律:p∨(q∧r)≡(p∨q)∧(p∨r)p \lor (q \land r) \equiv (p \lor q) \land (p \lor r)

前束范式(PNF)​

定义:所有量词都在公式开头的形式

Q1x1Q2x2⋯Qnxn BQ_1 x_1 Q_2 x_2 \cdots Q_n x_n \, B

其中 $Q_i \in \lbrace\forall, \exists\rbrace$,BB 不含量词

转换步骤:

  1. 消除蕴含和等价
  2. 将否定内移(使用量词否定规则)
  3. 标准化变量(重命名避免冲突)
  4. 将量词移到前面

量词移动规则(xx 不在 AA 中自由出现):

A∧∃x B(x)≡∃x (A∧B(x))A \land \exists x \, B(x) \equiv \exists x \, (A \land B(x))

A∨∀x B(x)≡∀x (A∨B(x))A \lor \forall x \, B(x) \equiv \forall x \, (A \lor B(x))

∀x∀y P(x,y)≡∀y∀x P(x,y)\forall x \forall y \, P(x,y) \equiv \forall y \forall x \, P(x,y)

∃x∃y P(x,y)≡∃y∃x P(x,y)\exists x \exists y \, P(x,y) \equiv \exists y \exists x \, P(x,y)

注意:∀x∃y P(x,y)≢∃y∀x P(x,y)\forall x \exists y \, P(x,y) \not\equiv \exists y \forall x \, P(x,y)

谓词逻辑等价式​

分配性:

∀x (P(x)∧Q(x))≡∀x P(x)∧∀x Q(x)\forall x \, (P(x) \land Q(x)) \equiv \forall x \, P(x) \land \forall x \, Q(x)

∃x (P(x)∨Q(x))≡∃x P(x)∨∃x Q(x)\exists x \, (P(x) \lor Q(x)) \equiv \exists x \, P(x) \lor \exists x \, Q(x)

不可分配:

∀x (P(x)∨Q(x))≢∀x P(x)∨∀x Q(x)\forall x \, (P(x) \lor Q(x)) \not\equiv \forall x \, P(x) \lor \forall x \, Q(x)

∃x (P(x)∧Q(x))≢∃x P(x)∧∃x Q(x)\exists x \, (P(x) \land Q(x)) \not\equiv \exists x \, P(x) \land \exists x \, Q(x)

谓词逻辑推理规则​

规则形式说明
全称实例化∀xP(x)⊢P(c)\forall x P(x) \vdash P(c)从全称推出具体实例
全称推广P(c)⊢∀xP(x)P(c) \vdash \forall x P(x)cc 必须是任意元素
存在实例化∃xP(x)⊢P(c∗)\exists x P(x) \vdash P(c^*)c∗c^* 必须是新符号
存在推广P(c)⊢∃xP(x)P(c) \vdash \exists x P(x)从具体推出存在

注意:先存在实例化,后全称实例化

Skolem化​

目的:消除存在量词,得到只含全称量词的公式

Skolem常量:存在量词前无全称量词时使用

原公式Skolem化结果
∃x P(x)\exists x \, P(x)P(c)P(c)
∀y∃x P(x,y)\forall y \exists x \, P(x, y)∀y P(f(y),y)\forall y \, P(f(y), y)
∃x∀y∃z P(x,y,z)\exists x \forall y \exists z \, P(x, y, z)∀y P(c,y,f(y))\forall y \, P(c, y, f(y))

重要性质:Skolem化保持可满足性,但不保持逻辑等价

消解原理​

消解规则:

C1∨LC2∨¬LC1∨C2\frac{C_1 \lor L \quad C_2 \lor \neg L}{C_1 \lor C_2}

消解反驳步骤:

  1. 否定结论
  2. 转换为CNF(命题逻辑)或Skolem CNF(一阶逻辑)
  3. 应用消解规则推导
  4. 若推出空子句 □\square,则原命题成立

一阶逻辑消解:需要合一(Unification)算法

合一示例:P(x,f(y))P(x, f(y)) 和 P(a,f(b))P(a, f(b)) 合一为 P(a,f(b))P(a, f(b)),替换 {x↦a,y↦b}\{x \mapsto a, y \mapsto b\}

证明方法​

方法适用场景
直接证明证明 p→qp \to q:假设 pp,推导 qq
反证法假设结论为假,导出矛盾
逆否证明证明 ¬q→¬p\neg q \to \neg p 等价于 p→qp \to q
数学归纳法与自然数相关的命题
构造性证明存在性命题,直接构造对象
分情况证明命题涉及多种互斥情况

集合论​

集合运算​

运算定义
并集A∪B={x∣x∈A∨x∈B}A \cup B = \{x \mid x \in A \lor x \in B\}
交集A∩B={x∣x∈A∧x∈B}A \cap B = \{x \mid x \in A \land x \in B\}
差集A−B={x∣x∈A∧x∉B}A - B = \{x \mid x \in A \land x \notin B\}
补集A‾=U−A\overline{A} = U - A
对称差A△B=(A−B)∪(B−A)A \triangle B = (A - B) \cup (B - A)

集合恒等式​

德摩根律:

A∪B‾=A‾∩B‾\overline{A \cup B} = \overline{A} \cap \overline{B}

A∩B‾=A‾∪B‾\overline{A \cap B} = \overline{A} \cup \overline{B}

分配律:

A∪(B∩C)=(A∪B)∩(A∪C)A \cup (B \cap C) = (A \cup B) \cap (A \cup C)

A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)

容斥原理:

∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|

笛卡尔积与幂集​

  • 笛卡尔积:A×B={(a,b)∣a∈A,b∈B}A \times B = \{(a, b) \mid a \in A, b \in B\}
  • 幂集:P(A)={S∣S⊆A}\mathcal{P}(A) = \{S \mid S \subseteq A\},∣P(A)∣=2∣A∣|\mathcal{P}(A)| = 2^{|A|}

函数与关系​

函数类型​

类型定义条件
单射不同输入映射不同输出f(x1)=f(x2)⇒x1=x2f(x_1) = f(x_2) \Rightarrow x_1 = x_2
满射值域等于陪域∀y∈Y,∃x:f(x)=y\forall y \in Y, \exists x: f(x) = y
双射既是单射又是满射一一对应

关系的性质​

性质定义
自反性∀x:xRx\forall x: xRx
对称性xRy⇒yRxxRy \Rightarrow yRx
反对称性xRy∧yRx⇒x=yxRy \land yRx \Rightarrow x = y
传递性xRy∧yRz⇒xRzxRy \land yRz \Rightarrow xRz

特殊关系​

  • 等价关系:自反 + 对称 + 传递
  • 偏序关系:自反 + 反对称 + 传递

组合数学​

排列与组合​

概念公式说明
排列P(n,r)=n!(n−r)!P(n, r) = \frac{n!}{(n-r)!}有序选取
组合C(n,r)=(nr)=n!r!(n−r)!C(n, r) = \binom{n}{r} = \frac{n!}{r!(n-r)!}无序选取
圆排列(n−1)!(n-1)!环状排列
可重组合C(n+r−1,r)C(n+r-1, r)允许重复选取

二项式定理​

(a+b)n=∑k=0n(nk)an−kbk(a + b)^n = \sum_{k=0}^{n} \binom{n}{k} a^{n-k} b^k

常用等式:

∑k=0n(nk)=2n\sum_{k=0}^{n} \binom{n}{k} = 2^n

∑k=0n(−1)k(nk)=0\sum_{k=0}^{n} (-1)^k \binom{n}{k} = 0

鸽巢原理​

  • 基本形式:n+1n+1 个物品放入 nn 个盒子,至少一个盒子有 ≥2\geq 2 个物品
  • 一般形式:nn 个物品放入 mm 个盒子,至少一个盒子有 ≥⌈n/m⌉\geq \lceil n/m \rceil 个物品

递推关系​

斐波那契数列:Fn=Fn−1+Fn−2F_n = F_{n-1} + F_{n-2},F0=0F_0 = 0,F1=1F_1 = 1

通项公式:

Fn=15[(1+52)n−(1−52)n]F_n = \frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^n - \left(\frac{1-\sqrt{5}}{2}\right)^n\right]

图论​

基本概念​

概念定义
阶(Order)顶点数 $
规模(Size)边数 $
度数(Degree)与顶点关联的边数
握手定理$\sum_{v} \deg(v) = 2\vert E\vert$

特殊图​

图类型描述边数
完全图 KnK_n任意两点都有边n(n−1)2\frac{n(n-1)}{2}
二分图顶点分成两部分,边只连接两部分之间—
完全二分图 Km,nK_{m,n}两部分间所有点对都有边mnmn
树连通无环图n−1n-1

图的遍历​

算法数据结构应用
DFS栈路径搜索、拓扑排序、检测环
BFS队列最短路径(无权)、层次遍历

最短路径算法​

算法适用图时间复杂度
BFS无权图O(V+E)O(V + E)
Dijkstra非负权重O((V+E)log⁡V)O((V + E) \log V)
Floyd-Warshall任意权重O(V3)O(V^3)

最小生成树​

算法策略时间复杂度
Prim从顶点扩展O(Elog⁡V)O(E \log V)
Kruskal按边权排序O(Elog⁡E)O(E \log E)

欧拉路径与哈密顿路径​

欧拉路径判定条件:

情况条件
欧拉回路连通且所有顶点度数为偶数
欧拉路径(非回路)连通且恰有 2 个奇数度顶点

Hierholzer 算法:O(E)O(E) 时间复杂度

哈密顿路径:判定是 NP 完全问题

定理条件
Dirac 定理每个顶点度数 ≥n/2\geq n/2 则存在哈密顿回路
Ore 定理任意不相邻顶点 u,vu, v 满足 deg⁡(u)+deg⁡(v)≥n\deg(u) + \deg(v) \geq n

平面图​

欧拉公式:V−E+F=2V - E + F = 2

边的上界:简单连通平面图 E≤3V−6E \leq 3V - 6

四色定理:平面图最多需要 4 种颜色着色

Kuratowski 定理:平面图 ⇔\Leftrightarrow 不含 K5K_5 或 K3,3K_{3,3} 的细分

树​

树的等价定义​

以下命题等价:

  1. 连通且无环
  2. 连通且 ∣E∣=∣V∣−1|E| = |V| - 1
  3. 无环且 ∣E∣=∣V∣−1|E| = |V| - 1
  4. 任意两点间有唯一路径

二叉树性质​

  • 第 ii 层最多 2i2^i 个节点
  • 深度 kk 的二叉树最多 2k+1−12^{k+1} - 1 个节点
  • 叶子数 n0n_0 = 度为 2 的节点数 n2n_2 + 1

遍历序列​

遍历顺序用途
前序根→左→右复制树、前缀表达式
中序左→根→右BST 排序输出、中缀表达式
后序左→右→根删除树、后缀表达式
层次逐层从左到右层次遍历

Cayley 公式​

nn 个标号顶点的树有 nn−2n^{n-2} 种。

数论​

整除与同余​

概念记号定义
整除a∣ba \mid b∃k:b=ak\exists k: b = ak
同余a≡b(modm)a \equiv b \pmod{m}m∣(a−b)m \mid (a - b)

GCD 与 LCM​

gcd⁡(a,b)×lcm(a,b)=∣ab∣\gcd(a, b) \times \text{lcm}(a, b) = |ab|

Bezout 定理:存在整数 x,yx, y 使得 ax+by=gcd⁡(a,b)ax + by = \gcd(a, b)

欧拉函数​

ϕ(n)=n∏p∣n(1−1p)\phi(n) = n \prod_{p \mid n} \left(1 - \frac{1}{p}\right)

特殊值:ϕ(p)=p−1\phi(p) = p - 1(pp 为素数)

重要定理​

欧拉定理:若 gcd⁡(a,n)=1\gcd(a, n) = 1,则 aϕ(n)≡1(modn)a^{\phi(n)} \equiv 1 \pmod{n}

费马小定理:若 pp 为素数且 p∤ap \nmid a,则 ap−1≡1(modp)a^{p-1} \equiv 1 \pmod{p}

威尔逊定理:n>1n > 1 是素数当且仅当 (n−1)!≡−1(modn)(n-1)! \equiv -1 \pmod{n}

中国剩余定理:若 m1,…,mkm_1, \ldots, m_k 两两互质,则同余方程组有唯一解。

模逆元​

aa 模 mm 的逆元存在当且仅当 gcd⁡(a,m)=1\gcd(a, m) = 1。

当 pp 为素数时:a−1≡ap−2(modp)a^{-1} \equiv a^{p-2} \pmod{p}

算法基础​

渐近记号​

记号定义含义
O(g)O(g)∃C,k:∥f(n)∥≤C∥g(n)∥,∀n>k\exists C, k: \|f(n)\| \leq C\|g(n)\|, \forall n > k上界
Ω(g)\Omega(g)∃C,k:∥f(n)∥≥C∥g(n)∥,∀n>k\exists C, k: \|f(n)\| \geq C\|g(n)\|, \forall n > k下界
Θ(g)\Theta(g)ff 是 O(g)O(g) 且 ff 是 Ω(g)\Omega(g)精确阶

常见复杂度级别​

1<log⁡n<n<n<nlog⁡n<n2<n3<2n<n!<nn1 < \log n < \sqrt{n} < n < n \log n < n^2 < n^3 < 2^n < n! < n^n

复杂度层次​

复杂度名称典型算法
O(1)O(1)常数时间数组访问
O(log⁡n)O(\log n)对数时间二分搜索
O(n)O(n)线性时间线性搜索
O(nlog⁡n)O(n \log n)线性对数快速排序
O(n2)O(n^2)平方时间冒泡排序
O(2n)O(2^n)指数时间子集枚举

循环不变式​

证明正确性的三步骤:

  1. 初始化:循环开始前不变式成立
  2. 保持性:迭代过程中不变式保持成立
  3. 终止性:循环终止时不变式提供正确性证明

布尔代数​

布尔运算真值表​

与运算(AND):

xxyyx∧yx \land y
000
010
100
111

或运算(OR):

xxyyx∨yx \lor y
000
011
101
111

非运算(NOT):

xx¬x\neg x
01
10

布尔代数定律​

交换律:x∧y=y∧xx \land y = y \land x,x∨y=y∨xx \lor y = y \lor x

分配律:x∧(y∨z)=(x∧y)∨(x∧z)x \land (y \lor z) = (x \land y) \lor (x \land z)

德摩根律:

¬(x∧y)=¬x∨¬y\neg(x \land y) = \neg x \lor \neg y

¬(x∨y)=¬x∧¬y\neg(x \lor y) = \neg x \land \neg y

吸收律:x∧(x∨y)=xx \land (x \lor y) = x,x∨(x∧y)=xx \lor (x \land y) = x

双重否定:¬¬x=x\neg \neg 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(A∩B)P(B)P(A | B) = \frac{P(A \cap B)}{P(B)}

乘法公式:

P(A∩B)=P(A)⋅P(B∣A)P(A \cap B) = P(A) \cdot P(B | A)

全概率公式(B1,…,BnB_1, \ldots, B_n 为划分):

P(A)=∑i=1nP(Bi)⋅P(A∣Bi)P(A) = \sum_{i=1}^{n} P(B_i) \cdot P(A | B_i)

贝叶斯定理:

P(Bi∣A)=P(Bi)⋅P(A∣Bi)∑jP(Bj)⋅P(A∣Bj)P(B_i | A) = \frac{P(B_i) \cdot P(A | B_i)}{\sum_{j} P(B_j) \cdot P(A | B_j)}

独立性​

两事件独立:P(A∩B)=P(A)⋅P(B)P(A \cap B) = P(A) \cdot P(B)

等价于 P(A∣B)=P(A)P(A | B) = P(A)

期望与方差​

期望:E[X]=∑xx⋅P(X=x)E[X] = \sum_x x \cdot P(X = x)

方差:Var(X)=E[X2]−(E[X])2\text{Var}(X) = E[X^2] - (E[X])^2

性质:

  • E[aX+b]=aE[X]+bE[aX + b] = aE[X] + b
  • Var(aX+b)=a2Var(X)\text{Var}(aX + b) = a^2 \text{Var}(X)
  • E[X+Y]=E[X]+E[Y]E[X + Y] = E[X] + E[Y]
  • 若 X,YX, Y 独立:E[XY]=E[X]⋅E[Y]E[XY] = E[X] \cdot E[Y],Var(X+Y)=Var(X)+Var(Y)\text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y)

常见离散分布​

分布PMF期望方差
伯努利 Bern(p)Bern(p)P(X=1)=p,P(X=0)=1−pP(X=1)=p, P(X=0)=1-pppp(1−p)p(1-p)
二项 Bin(n,p)Bin(n,p)(nk)pk(1−p)n−k\binom{n}{k}p^k(1-p)^{n-k}npnpnp(1−p)np(1-p)
几何 Geo(p)Geo(p)(1−p)k−1p(1-p)^{k-1}p1p\frac{1}{p}1−pp2\frac{1-p}{p^2}
泊松 Poi(λ)Poi(\lambda)λke−λk!\frac{\lambda^k e^{-\lambda}}{k!}λ\lambdaλ\lambda

极限定理​

大数定律:Xˉn→PE[X]\bar{X}_n \xrightarrow{P} E[X]

中心极限定理:Xˉn−μσ/n→dN(0,1)\frac{\bar{X}_n - \mu}{\sigma/\sqrt{n}} \xrightarrow{d} N(0, 1)

常用算法复杂度​

算法时间复杂度
欧几里得算法(GCD)O(log⁡(min⁡(a,b)))O(\log(\min(a, b)))
快速幂O(log⁡n)O(\log n)
埃拉托斯特尼筛法O(nlog⁡log⁡n)O(n \log \log n)
DFS/BFSO(V+E)O(V + E)
DijkstraO((V+E)log⁡V)O((V + E) \log V)
Prim/KruskalO(Elog⁡V)O(E \log V)
线性搜索O(n)O(n)
二分搜索O(log⁡n)O(\log n)
归并排序O(nlog⁡n)O(n \log n)

常用数学公式速查​

求和公式​

等差数列求和:

∑k=1nk=n(n+1)2\sum_{k=1}^{n} k = \frac{n(n+1)}{2}

等差数列一般形式:

∑k=0n−1(a+kd)=na+n(n−1)d2\sum_{k=0}^{n-1} (a + kd) = na + \frac{n(n-1)d}{2}

等比数列求和:

∑k=0nrk=rn+1−1r−1(r≠1)\sum_{k=0}^{n} r^k = \frac{r^{n+1} - 1}{r - 1} \quad (r \neq 1)

平方和:

∑k=1nk2=n(n+1)(2n+1)6\sum_{k=1}^{n} k^2 = \frac{n(n+1)(2n+1)}{6}

立方和:

∑k=1nk3=(n(n+1)2)2\sum_{k=1}^{n} k^3 = \left(\frac{n(n+1)}{2}\right)^2

对数恒等式​

log⁡a(xy)=log⁡ax+log⁡ay\log_a(xy) = \log_a x + \log_a y

log⁡a(x/y)=log⁡ax−log⁡ay\log_a(x/y) = \log_a x - \log_a y

log⁡a(xn)=nlog⁡ax\log_a(x^n) = n \log_a x

log⁡ax=log⁡bxlog⁡ba\log_a x = \frac{\log_b x}{\log_b a}(换底公式)

阶乘与斯特林公式​

n!=n×(n−1)×⋯×2×1n! = n \times (n-1) \times \cdots \times 2 \times 1

斯特林近似:

n!≈2πn(ne)nn! \approx \sqrt{2\pi n} \left(\frac{n}{e}\right)^n

常见错误与陷阱​

逻辑推理中的常见错误​

  1. 肯定后件:p→q,q⊢pp \to q, q \vdash p(错误)
  2. 否定前件:p→q,¬p⊢¬qp \to q, \neg p \vdash \neg q(错误)
  3. 混淆充分与必要:p→qp \to q 中 pp 是 qq 的充分条件,qq 是 pp 的必要条件

集合论中的常见错误​

  1. 混淆 ∈\in 和 ⊆\subseteq:x∈Ax \in A 与 x⊆Ax \subseteq A 不同
  2. 忽略空集:空集是任何集合的子集
  3. 幂集大小:∣P(A)∣=2∣A∣|\mathcal{P}(A)| = 2^{|A|},不是 2∣A∣2|A|

组合数学中的常见错误​

  1. 排列与组合混淆:排列考虑顺序,组合不考虑顺序
  2. 重复计数:使用乘法原理时忘记检查步骤是否独立
  3. 遗漏情况:分类讨论时遗漏某些情况

图论中的常见错误​

  1. 混淆度数与边数:握手定理 ∑deg⁡(v)=2∣E∣\sum \deg(v) = 2|E|
  2. 欧拉路径条件:度数为奇数的顶点个数必须是 0 或 2
  3. 平面图边数上界:E≤3V−6E \leq 3V - 6 仅适用于简单连通平面图

概率论中的常见错误​

  1. 条件概率方向:P(A∣B)≠P(B∣A)P(A|B) \neq P(B|A)
  2. 独立性误判:P(A∩B)=0P(A \cap B) = 0 不意味着独立
  3. 贝叶斯定理应用:分母必须是所有情况的总和