北京交通大学《离散数学》课程学习笔记
数理逻辑
数理逻辑主要研究推理的规律和系统,以及如何用逻辑语言表达和证明数学命题。数理逻辑为计算机科学、人工智能和编程语言的设计提供了重要的理论基础。
1.1 命题逻辑
命题逻辑是最基本的逻辑形式,主要处理命题的真假及其组合关系。命题符号表示为 ( p , q , r ) ( p, q, r ) (p,q,r) 等,其中每个命题符号代表一个可以判断真假的语句。
常见的逻辑运算符包括:
-
与(AND)运算:符号为 ( ∧ ) ( \land ) (∧),对命题 ( p ) ( p ) (p) 和 ( q ) ( q ) (q) 进行与运算,只有当 ( p ) ( p ) (p) 和 ( q ) ( q ) (q) 都为真时, ( p ∧ q ) ( p \land q ) (p∧q) 才为真。形式化定义为:
p ∧ q = { 真 , 如果 p = 真 且 q = 真 假 , 否则 p \land q = \begin{cases} \text{真}, & \text{如果 } p = \text{真} \text{ 且 } q = \text{真} \\ \text{假}, & \text{否则} \end{cases} p∧q={真,假,如果 p=真 且 q=真否则 -
或(OR)运算:符号为 ( ∨ ) ( \lor ) (∨),对命题 ( p ) ( p ) (p) 和 ( q ) ( q ) (q) 进行或运算,只要 ( p ) ( p ) (p) 或 ( q ) ( q ) (q) 中有一个为真, ( p ∨ q ) ( p \lor q ) (p∨q) 就为真。形式化定义为:
p ∨ q = { 真 , 如果 p = 真 或 q = 真 假 , 如果 p = 假 且 q = 假 p \lor q = \begin{cases} \text{真}, & \text{如果 } p = \text{真} \text{ 或 } q = \text{真} \\ \text{假}, & \text{如果 } p = \text{假} \text{ 且 } q = \text{假} \end{cases} p∨q={真,假,如果 p=真 或 q=真如果 p=假 且 q=假 -
非(NOT)运算:符号为 ( ¬ ) ( \neg ) (¬),表示否定。例如, ( ¬ p ) ( \neg p ) (¬p) 表示命题 ( p ) ( p ) (p) 的否定。形式化定义为:
¬ p = { 真 , 如果 p = 假 假 , 如果 p = 真 \neg p = \begin{cases} \text{真}, & \text{如果 } p = \text{假} \\ \text{假}, & \text{如果 } p = \text{真} \end{cases} ¬p={真,假,如果 p=假如果 p=真 -
蕴含(IMPLIES)运算:符号为 ( → ) ( \rightarrow ) (→),表示“如果…那么…”。命题 ( p → q ) ( p \rightarrow q ) (p→q) 表示如果 ( p ) ( p ) (p) 为真,则 ( q ) ( q ) (q) 必定为真;如果 ( p ) ( p ) (p) 为假,则无论 ( q ) ( q ) (q) 为真还是假, ( p → q ) ( p \rightarrow q ) (p→q) 都为真。形式化定义为:
p → q = { 假 , 如果 p = 真 且 q = 假 真 , 否则 p \rightarrow q = \begin{cases} \text{假}, & \text{如果 } p = \text{真} \text{ 且 } q = \text{假} \\ \text{真}, & \text{否则} \end{cases} p→q={假,真,如果 p=真 且 q=假否则 -
等价(IF AND ONLY IF)运算:符号为 ( ↔ ) ( \leftrightarrow ) (↔),表示两个命题具有相同的真值。形式化定义为:
p ↔ q = { 真 , 如果 p = q 假 , 如果 p ≠ q p \leftrightarrow q = \begin{cases} \text{真}, & \text{如果 } p = q \\ \text{假}, & \text{如果 } p \neq q \end{cases} p↔q={真,假,如果 p=q如果 p=q
1.2 逻辑推理与证明
数理逻辑不仅仅是对命题的真值进行运算,还涉及到如何从已知命题推导出新命题。推理是通过有效的推理规则从前提出发,得到结论的过程。
常见的推理方法包括:
- 直接证明:直接通过推导,得出结论。
- 反证法:假设结论的否定为真,推导出矛盾,从而证明结论的正确性。
- 归纳法:通常用于证明涉及整数的命题,通过证明基础情况和归纳步骤,得出结论。
1.3 谓词逻辑
谓词逻辑是数理逻辑的一种扩展,它引入了谓词和量词,使得命题逻辑能够表示更加复杂的数学命题。
在谓词逻辑中,命题不再是一个简单的真假判断,而是描述了对象及其属性或对象之间的关系。谓词逻辑的关键概念包括:
- 谓词:表示某个对象的属性或对象之间的关系。比如,“ ( x ) ( x ) (x) 是素数”可以表示为 ( P ( x ) ) ( P(x) ) (P(x)),其中 ( P ) ( P ) (P) 是谓词, ( x ) ( x ) (x) 是对象。
- 量词:
- 存在量词( ( ∃ ) ( \exists ) (∃)):表示“存在某个元素”满足某个性质。例如, ( ∃ x P ( x ) ) ( \exists x \, P(x) ) (∃xP(x)) 表示“存在某个 ( x ) ( x ) (x),使得 ( P ( x ) ) ( P(x) ) (P(x)) 为真”。
- 全称量词( ( ∀ ) ( \forall ) (∀)):表示“对于所有的元素”都满足某个性质。例如, ( ∀ x P ( x ) ) ( \forall x \, P(x) ) (∀xP(x)) 表示“对于所有的 ( x ) ( x ) (x), ( P ( x ) ) ( P(x) ) (P(x)) 都为真”。
1.4 逻辑等价与推理规则
在数理逻辑中,逻辑等价公式和推理规则帮助我们从已知命题推导出等价的命题。
常见的逻辑等价
-
德摩根定律:涉及与、或、非等运算的变换。例如:
¬ ( p ∧ q ) ≡ ¬ p ∨ ¬ q 和 ¬ ( p ∨ q ) ≡ ¬ p ∧ ¬ q \neg (p \land q) \equiv \neg p \lor \neg q \quad \text{和} \quad \neg (p \lor q) \equiv \neg p \land \neg q ¬(p∧q)≡¬p∨¬q和¬(p∨q)≡¬p∧¬q -
蕴含的等价形式:
p → q ≡ ¬ p ∨ q p \rightarrow q \equiv \neg p \lor q p→q≡¬p∨q
常见的推理规则
- 合取引入(Conjunction Introduction):从命题 ( p ) ( p ) (p) 和 ( q ) ( q ) (q) 推导出 ( p ∧ q ) ( p \land q ) (p∧q)。
- 析取引入(Disjunction Introduction):从命题 ( p ) ( p ) (p) 推导出 ( p ∨ q ) ( p \lor q ) (p∨q)。
- 假言推理(Hypothetical Syllogism):从 ( p → q ) ( p \rightarrow q ) (p→q) 和 ( q → r ) ( q \rightarrow r ) (q→r) 推导出 ( p → r ) ( p \rightarrow r ) (p→r)。
集合论
集合论是数学的基础之一,它研究集合的性质、集合之间的关系以及如何操作集合。集合论在计算机科学中有着重要应用,特别是在数据结构、算法和数据库设计中。
2.1 集合的定义与表示
集合是一个包含若干元素的集体。集合中的元素是独立的且顺序不重要。
表示方法
- 列举法:例如,集合 ( A = { 1 , 2 , 3 } ) ( A = \{1, 2, 3\} ) (A={1,2,3}) 表示包含元素 1、2 和 3 的集合。
- 描述法:例如,集合 ( B = { x ∣ x 是偶数且 x < 10 } ) ( B = \{x \mid x \text{ 是偶数且 } x < 10\} ) (B={x∣x 是偶数且 x<10}) 表示包含所有小于 10 的偶数的集合。
2.2 集合的基本操作
集合操作是集合论中最基本的内容,常见的操作包括:
- 并集(Union): ( A ∪ B ) ( A \cup B ) (A∪B) 表示集合 ( A ) ( A ) (A) 和 ( B ) ( B ) (B) 的所有元素的并集,即包含 ( A ) ( A ) (A) 和 ( B ) ( B ) (B) 中所有不同的元素。
- 交集(Intersection): ( A ∩ B ) ( A \cap B ) (A∩B) 表示集合 ( A ) ( A ) (A) 和 ( B ) ( B ) (B) 的共同元素。
- 差集(Difference): ( A − B ) ( A - B ) (A−B) 表示集合 ( A ) ( A ) (A) 中的元素,但不包括属于 ( B ) ( B ) (B) 的元素。
- 补集(Complement): ( A C ) ( A^C ) (AC) 表示全集中不属于集合 ( A ) ( A ) (A) 的元素。
2.3 集合的关系与映射
- 包含关系:集合 ( A ) ( A ) (A) 是集合 ( B ) ( B ) (B) 的子集,表示为 ( A ⊆ B ) ( A \subseteq B ) (A⊆B),如果 ( A ) ( A ) (A) 中的每个元素都属于 ( B ) ( B ) (B)。
- 笛卡尔积:给定集合 ( A ) ( A ) (A) 和 ( B ) ( B ) (B),它们的笛卡尔积 ( A × B ) ( A \times B ) (A×B) 是由所有有序对 ( a , b ) (a, b) (a,b) 组成的集合,其中 ( a ∈ A ) (a \in A) (a∈A) 且 ( b ∈ B ) (b \in B) (b∈B)。
- 映射(函数):函数是集合之间的一种关系,将集合 ( A ) ( A ) (A) 中的元素映射到集合 ( B ) ( B ) (B) 中的元素。常见的映射类型包括单射、满射和双射。
2.4 特殊类型的集合
- 空集 ( ∅ ) ( \emptyset ) (∅):没有任何元素的集合,表示为 ( ∅ ) ( \emptyset ) (∅) 或 ( { } ) ( \{\} ) ({})。
- 幂集:集合 ( A ) ( A ) (A) 的幂集是包含所有子集的集合,表示为 ( P ( A ) ) ( P(A) ) (P(A))。
- 势:集合的势(或大小)表示集合中元素的数量,记作 ( ∣ A ∣ ) ( |A| ) (∣A∣)。
函数
在离散数学中,函数是描述集合之间关系的基本工具。一个函数将一个集合中的每个元素映射到另一个集合中的元素。函数在计算机科学、算法设计、数据结构等领域有着广泛的应用。
3.1 函数的定义与表示
一个函数是两个集合之间的映射关系,通常表示为:
(
f
:
A
→
B
)
(f: A \to B)
(f:A→B)
这意味着函数
f
f
f 将集合
A
A
A 中的每个元素映射到集合
B
B
B 中的唯一元素。
- 定义域(Domain):函数 f f f 的定义域是所有输入值的集合,即集合 A A A。
- 值域(Codomain):函数 f f f 的值域是所有可能的输出值的集合,即集合 B B B。
- 映射:对于每个 a ∈ A a \in A a∈A,函数 f f f 为其指定一个唯一的 f ( a ) ∈ B f(a) \in B f(a)∈B。
3.1.1 映射的种类
根据函数的性质,函数可以分为几种类型:
-
单射(Injection):如果对于集合 A A A 中的任意两个不同元素 x 1 ≠ x 2 x_1 \neq x_2 x1=x2,都有 f ( x 1 ) ≠ f ( x 2 ) f(x_1) \neq f(x_2) f(x1)=f(x2),则函数 f f f 称为单射。换句话说,单射保证了函数的每个输入值都有一个不同的输出值。
( f ( x 1 ) = f ( x 2 ) ⇒ x 1 = x 2 ) (f(x_1) = f(x_2) \Rightarrow x_1 = x_2) (f(x1)=f(x2)⇒x1=x2)
-
满射(Surjection):如果对于集合 B B B 中的每个元素 b ∈ B b \in B b∈B,都存在 a ∈ A a \in A a∈A 使得 f ( a ) = b f(a) = b f(a)=b,则函数 f f f 称为满射。即,函数的值域等于目标集合 B B B。
( ∀ b ∈ B , ∃ a ∈ A , f ( a ) = b ) ( \forall b \in B, \exists a \in A, f(a) = b) (∀b∈B,∃a∈A,f(a)=b)
-
双射(Bijection):如果函数 f f f 同时是单射和满射,则称 f f f 为双射。双射函数的每个输入对应一个唯一的输出,且每个输出都有一个唯一的输入。
( f : A → B 且 ∣ A ∣ = ∣ B ∣ ) ( f: A \to B \quad \text{且} \quad |A| = |B|) (f:A→B且∣A∣=∣B∣)
3.1.2 函数的运算
函数之间可以进行各种运算,包括复合函数、反函数等:
-
复合函数:给定两个函数 f : A → B f: A \to B f:A→B 和 g : B → C g: B \to C g:B→C,它们的复合函数 g ∘ f : A → C g \circ f: A \to C g∘f:A→C 定义为:对于每个 a ∈ A a \in A a∈A,有 ( g ∘ f ) ( a ) = g ( f ( a ) ) (g \circ f)(a) = g(f(a)) (g∘f)(a)=g(f(a))。
( ( g ∘ f ) ( a ) = g ( f ( a ) ) ) ( (g \circ f)(a) = g(f(a))) ((g∘f)(a)=g(f(a)))
-
反函数:如果函数 f f f 是双射,那么存在一个反函数 f − 1 : B → A f^{-1}: B \to A f−1:B→A,使得对于所有的 a ∈ A a \in A a∈A 和 b ∈ B b \in B b∈B,都有 f − 1 ( f ( a ) ) = a f^{-1}(f(a)) = a f−1(f(a))=a 和 f ( f − 1 ( b ) ) = b f(f^{-1}(b)) = b f(f−1(b))=b。
( f − 1 ( f ( a ) ) = a 和 f ( f − 1 ( b ) ) = b ) ( f^{-1}(f(a)) = a \quad \text{和} \quad f(f^{-1}(b)) = b) (f−1(f(a))=a和f(f−1(b))=b)
组合数学
组合数学是研究如何从有限集的元素中选取子集、排列和组合的数学分支。它在计算机科学中广泛应用,尤其在算法、优化问题、概率论和密码学等领域。
4.1 排列与组合
4.1.1 排列(Permutation)
排列是从一组元素中按顺序选择若干个元素的不同方式数。对于一个包含 n n n 个元素的集合,从中选取 r r r 个元素的排列数记为 P ( n , r ) P(n, r) P(n,r),其公式为:
( P ( n , r ) = n ! ( n − r ) ! ) ( P(n, r) = \frac{n!}{(n-r)!} ) (P(n,r)=(n−r)!n!)
其中, n ! n! n! 表示 n n n 的阶乘,定义为:
( n ! = n × ( n − 1 ) × ( n − 2 ) × ⋯ × 1 ) ( n! = n \times (n-1) \times (n-2) \times \cdots \times 1 ) (n!=n×(n−1)×(n−2)×⋯×1)
4.1.2 组合(Combination)
组合是从一组元素中选取若干个元素,但不考虑选取的顺序。对于一个包含 n n n 个元素的集合,从中选取 r r r 个元素的组合数记为 C ( n , r ) C(n, r) C(n,r),其公式为:
( C ( n , r ) = n ! r ! ( n − r ) ! ) ( C(n, r) = \frac{n!}{r!(n-r)!} ) (C(n,r)=r!(n−r)!n!)
其中, r ! r! r! 是 r r r 的阶乘。
4.1.3 二项式定理
二项式定理描述了 ( x + y ) n (x + y)^n (x+y)n 的展开式,它是组合数学中的一个重要公式。该公式为:
( ( x + y ) n = ∑ r = 0 n C ( n , r ) x n − r y r ) ( (x + y)^n = \sum_{r=0}^{n} C(n, r) x^{n-r} y^r ) ((x+y)n=∑r=0nC(n,r)xn−ryr)
该公式表明,二项式的展开可以通过组合数来表示。
4.2 递推与生成函数
4.2.1 递推关系
递推关系是用来定义一个序列的关系的方式,其中序列的每一项都依赖于之前的项。常见的递推关系有:
-
斐波那契数列:数列的递推关系为 F ( n ) = F ( n − 1 ) + F ( n − 2 ) F(n) = F(n-1) + F(n-2) F(n)=F(n−1)+F(n−2),初始条件为 F ( 0 ) = 0 F(0) = 0 F(0)=0 和 F ( 1 ) = 1 F(1) = 1 F(1)=1。
( F ( n ) = F ( n − 1 ) + F ( n − 2 ) , F ( 0 ) = 0 , F ( 1 ) = 1 ) ( F(n) = F(n-1) + F(n-2), \quad F(0) = 0, \quad F(1) = 1 ) (F(n)=F(n−1)+F(n−2),F(0)=0,F(1)=1)
-
阶乘:阶乘的递推关系为 n ! = n × ( n − 1 ) ! n! = n \times (n-1)! n!=n×(n−1)!,且 0 ! = 1 0! = 1 0!=1。
( n ! = n × ( n − 1 ) ! , 0 ! = 1 ) ( n! = n \times (n-1)!, \quad 0! = 1 ) (n!=n×(n−1)!,0!=1)
4.2.2 生成函数
生成函数是通过一个幂级数表达序列的一种方式。给定一个数列 a 0 , a 1 , a 2 , … a_0, a_1, a_2, \dots a0,a1,a2,…,它的生成函数定义为:
( A ( x ) = ∑ n = 0 ∞ a n x n ) ( A(x) = \sum_{n=0}^{\infty} a_n x^n ) (A(x)=∑n=0∞anxn)
生成函数广泛应用于组合问题和递推关系的求解。
图论
图论是研究图的结构和性质的数学分支。图由一组顶点和连接顶点的边组成。图论在计算机科学、网络设计、优化问题等方面有广泛的应用。
5.1 图的定义与表示
一个图 G G G 可以表示为一个有序对 G = ( V , E ) G = (V, E) G=(V,E),其中:
- V V V 是图的顶点集合。
- E E E 是图的边集合,每条边连接两个顶点。
图可以分为以下几种类型:
- 无向图:边没有方向,边 e = ( u , v ) e = (u, v) e=(u,v) 表示顶点 u u u 和 v v v 之间的连接。
- 有向图:边有方向,边 e = ( u , v ) e = (u, v) e=(u,v) 表示从顶点 u u u 指向顶点 v v v 的有向边。
- 加权图:每条边都有一个权值,表示从一个顶点到另一个顶点的代价或距离。
5.2 图的基本算法
- 深度优先搜索(DFS):从一个起始顶点开始,尽可能深入访问每个顶点。
- 广度优先搜索(BFS):从一个起始顶点开始,首先访问所有相邻的顶点,然后逐层访问更远的顶点。
- 最短路径算法:例如 Dijkstra 算法,用于计算从起点到所有其他顶点的最短路径。
5.2.1 最小生成树
给定一个加权无向图,最小生成树是一个子图,包含原图的所有顶点,并且边的权重和最小。常见的算法有 Kruskal 算法和 Prim 算法。
5.2.2 图的着色
图的着色是指为图的顶点或边分配颜色,要求相邻的顶点或边有不同的颜色。图的着色问题广泛应用于任务调度、资源分配等问题。
初等数论
初等数论是研究整数性质的数学分支。它包括整数的基本性质、素数、约数、同余等概念。
6.1 整数的基本性质
-
偶数与奇数:一个整数 n n n 如果能被 2 整除,则称为偶数;否则称为奇数。
( n ≡ 0 ( m o d 2 ) 是偶数 否则是奇数 ) ( n \equiv 0 \pmod{2} \quad \text{是偶数} \quad \text{否则是奇数} ) (n≡0(mod2)是偶数否则是奇数)
-
约数与倍数:若 a ∣ b a \mid b a∣b,则 a a a 是 b b b 的约数, b b b 是 a a a 的倍数。
( a ∣ b 表示 ∃ k ∈ Z , b = a × k ) ( a \mid b \quad \text{表示} \quad \exists k \in \mathbb{Z}, b = a \times k ) (a∣b表示∃k∈Z,b=a×k)
6.2 素数与因数分解
素数是大于 1 的自然数,且只能被 1 和自身整除。任何大于 1 的整数都可以唯一分解为素数的乘积,这叫做质因数分解定理。
( n = p 1 e 1 p 2 e 2 ⋯ p k e k ) ( n = p_1^{e_1} p_2^{e_2} \cdots p_k^{e_k} ) (n=p1e1p2e2⋯pkek)
其中, p 1 , p 2 , … , p k p_1, p_2, \dots, p_k p1,p2,…,pk 是素数, e 1 , e 2 , … , e k e_1, e_2, \dots, e_k e1,e2,…,ek 是正整数。
6.3 同余与模运算
同余是指两个整数除以某个数后的余数相同。若 a a a 和 b b b 除以 m m m 后的余数相同,则称 a a a 与 b b b 模 m m m 同余,记作:
( a ≡ b ( m o d m ) ) ( a \equiv b \pmod{m} ) (a≡b(modm))
同余关系广泛应用于密码学、分布式计算等领域。