【离散数学】学习笔记

北京交通大学《离散数学》课程学习笔记

数理逻辑

数理逻辑主要研究推理的规律和系统,以及如何用逻辑语言表达和证明数学命题。数理逻辑为计算机科学、人工智能和编程语言的设计提供了重要的理论基础。

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 ) (pq) 才为真。形式化定义为:
    p ∧ q = { 真 , 如果  p = 真 且  q = 真 假 , 否则 p \land q = \begin{cases} \text{真}, & \text{如果 } p = \text{真} \text{ 且 } q = \text{真} \\ \text{假}, & \text{否则} \end{cases} pq={,,如果 p=  q=否则

  • 或(OR)运算:符号为 ( ∨ ) ( \lor ) (),对命题 ( p ) ( p ) (p) ( q ) ( q ) (q) 进行或运算,只要 ( p ) ( p ) (p) ( q ) ( q ) (q) 中有一个为真, ( p ∨ q ) ( p \lor q ) (pq) 就为真。形式化定义为:
    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} pq={,,如果 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 ) (pq) 表示如果 ( p ) ( p ) (p) 为真,则 ( q ) ( q ) (q) 必定为真;如果 ( p ) ( p ) (p) 为假,则无论 ( q ) ( q ) (q) 为真还是假, ( p → q ) ( p \rightarrow q ) (pq) 都为真。形式化定义为:
    p → q = { 假 , 如果  p = 真 且  q = 假 真 , 否则 p \rightarrow q = \begin{cases} \text{假}, & \text{如果 } p = \text{真} \text{ 且 } q = \text{假} \\ \text{真}, & \text{否则} \end{cases} pq={,,如果 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} pq={,,如果 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 ¬(pq)¬p¬q¬(pq)¬p¬q

  • 蕴含的等价形式
    p → q ≡ ¬ p ∨ q p \rightarrow q \equiv \neg p \lor q pq¬pq

常见的推理规则

  • 合取引入(Conjunction Introduction):从命题 ( p ) ( p ) (p) ( q ) ( q ) (q) 推导出 ( p ∧ q ) ( p \land q ) (pq)
  • 析取引入(Disjunction Introduction):从命题 ( p ) ( p ) (p) 推导出 ( p ∨ q ) ( p \lor q ) (pq)
  • 假言推理(Hypothetical Syllogism):从 ( p → q ) ( p \rightarrow q ) (pq) ( q → r ) ( q \rightarrow r ) (qr) 推导出 ( p → r ) ( p \rightarrow r ) (pr)

集合论

集合论是数学的基础之一,它研究集合的性质、集合之间的关系以及如何操作集合。集合论在计算机科学中有着重要应用,特别是在数据结构、算法和数据库设计中。

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={xx 是偶数且 x<10}) 表示包含所有小于 10 的偶数的集合。

2.2 集合的基本操作

集合操作是集合论中最基本的内容,常见的操作包括:

  • 并集(Union): ( A ∪ B ) ( A \cup B ) (AB) 表示集合 ( A ) ( A ) (A) ( B ) ( B ) (B) 的所有元素的并集,即包含 ( A ) ( A ) (A) ( B ) ( B ) (B) 中所有不同的元素。
  • 交集(Intersection): ( A ∩ B ) ( A \cap B ) (AB) 表示集合 ( A ) ( A ) (A) ( B ) ( B ) (B) 的共同元素。
  • 差集(Difference): ( A − B ) ( A - B ) (AB) 表示集合 ( 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 ) (AB),如果 ( 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) (aA) ( b ∈ B ) (b \in B) (bB)
  • 映射(函数):函数是集合之间的一种关系,将集合 ( 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:AB)
这意味着函数 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 aA,函数 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 bB,都存在 a ∈ A a \in A aA 使得 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) (bB,aA,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:ABA=B)

3.1.2 函数的运算

函数之间可以进行各种运算,包括复合函数反函数等:

  • 复合函数:给定两个函数 f : A → B f: A \to B f:AB g : B → C g: B \to C g:BC,它们的复合函数 g ∘ f : A → C g \circ f: A \to C gf:AC 定义为:对于每个 a ∈ A a \in A aA,有 ( g ∘ f ) ( a ) = g ( f ( a ) ) (g \circ f)(a) = g(f(a)) (gf)(a)=g(f(a))

    ( ( g ∘ f ) ( a ) = g ( f ( a ) ) ) ( (g \circ f)(a) = g(f(a))) ((gf)(a)=g(f(a)))

  • 反函数:如果函数 f f f 是双射,那么存在一个反函数 f − 1 : B → A f^{-1}: B \to A f1:BA,使得对于所有的 a ∈ A a \in A aA b ∈ B b \in B bB,都有 f − 1 ( f ( a ) ) = a f^{-1}(f(a)) = a f1(f(a))=a f ( f − 1 ( b ) ) = b f(f^{-1}(b)) = b f(f1(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) (f1(f(a))=af(f1(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)=(nr)!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×(n1)×(n2)××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!(nr)!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)xnryr)

该公式表明,二项式的展开可以通过组合数来表示。

4.2 递推与生成函数

4.2.1 递推关系

递推关系是用来定义一个序列的关系的方式,其中序列的每一项都依赖于之前的项。常见的递推关系有:

  • 斐波那契数列:数列的递推关系为 F ( n ) = F ( n − 1 ) + F ( n − 2 ) F(n) = F(n-1) + F(n-2) F(n)=F(n1)+F(n2),初始条件为 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(n1)+F(n2),F(0)=0,F(1)=1)

  • 阶乘:阶乘的递推关系为 n ! = n × ( n − 1 ) ! n! = n \times (n-1)! n!=n×(n1)!,且 0 ! = 1 0! = 1 0!=1

    ( n ! = n × ( n − 1 ) ! , 0 ! = 1 ) ( n! = n \times (n-1)!, \quad 0! = 1 ) (n!=n×(n1)!,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=0anxn)

生成函数广泛应用于组合问题和递推关系的求解。


图论

图论是研究图的结构和性质的数学分支。图由一组顶点和连接顶点的边组成。图论在计算机科学、网络设计、优化问题等方面有广泛的应用。

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{否则是奇数} ) (n0(mod2)是偶数否则是奇数)

  • 约数与倍数:若 a ∣ b a \mid b ab,则 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 ) (ab表示kZ,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=p1e1p2e2pkek)

其中, 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} ) (ab(modm))

同余关系广泛应用于密码学、分布式计算等领域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值