离散数学——基本离散结构:集合,函数,序列,和式和矩阵

集合

集合介绍

本章,我们将学习所有离散结构的基础,集合。集合被用来组织对象。这些对象通常有相同的属性。我们先给出一些感性的定义。

定义:一个集合是一个无序容器,叫做元素或对象的集合。一个集合被说成包含它的元素。我们写法 a ∈ A a \in A a∈A 指的是元素 a a a 在集合 A A A 中。我们用记号 a ∉ A a \notin A a∈/​A 称作元素 a a a 不在集合 A A A 中。

我们通常约定大写字母表示集合,小写字母表示元素。

表示集合有很多方法,经常使用的是 列举法 ,即将集合中的元素用花括号列出来,例如 A = { a , b , c , d } A=\{ a,b,c,d \} A={a,b,c,d} 即集合 A A A 中含有四个元素,分别是 a , b , c , d a,b,c,d a,b,c,d 。

有时候元素的数量可能很多,但是元素有一定的模式,此时我们就能用 … \ldots … 来表示省略,例如 A = { 1 , 2 , … , 99 , 100 } A = \{1,2,\ldots,99,100\} A={1,2,…,99,100} 来表示 1 1 1 到 100 100 100 的整数。

另外一种描述集合的方法称为 集合构造器 记号。我们描述集合元素的特征而不是列举元素。例如 O = { x ∈ Z + ∣ x ≤ 10 } O = \{x \in Z^+|x \leq 10\} O={x∈Z+∣x≤10} 表示集合 O O O 中包含小于等于 10 10 10 的正整数。

下面的这些集合是数学中经常使用的集合。通常用黑体或者空心花体表示。

名称 解释
N \mathbb{N} N 自然数集合(此书包含 0 0 0 )
Z \mathbb{Z} Z 整数集合
Z + \mathbb{Z^+} Z+ 正整数集合
Q Q Q 有理数集合
Q + Q^+ Q+ 正有理数集合
R R R 实数集合
R + R^+ R+ 正实数集合
C C C 复数集合

回想一下我们区间记号的写法:

[ a , b ] = { x ∣ a ≤ x ≤ b } [ a , b ) = { x ∣ a ≤ x < b } ( a , b ] = { x ∣ a < x ≤ b } ( a , b ) = { x ∣ a < x < b } \begin{aligned} \left [a,b \right ] & = \{x|a \leq x \leq b\} \\ [a,b) & = \{x|a \leq x \lt b\} \\ (a,b] & = \{x|a \lt x \leq b\} \\ (a,b) & = \{x|a \lt x \lt b\} \end{aligned} [a,b][a,b)(a,b](a,b)​={x∣a≤x≤b}={x∣a≤x<b}={x∣a<x≤b}={x∣a<x<b}​

第一个被称为 闭区间 ,最后一个称为 开区间

注意数据类型或者类型的概念,在计算机科学中是基于集合的概念。也就是说,一个 数据类型 是一个集合,具有相同的操作在集合中。例如布尔类型就是 ${0,1}$ 具有两个元素的集合,集合中的元素可以进行与或非等操作。

定义:如果两个集合是是相同的,当且仅当他们有相同的元素。因此,如果 A A A 和 B B B 是相同的,当且仅当 ∀ x ( x ∈ A ⟺ x ∈ B ) \forall x (x \in A \iff x \in B) ∀x(x∈A⟺x∈B) 。我们写成 A = B A = B A=B 。

有一个特殊的集合没有任何元素,被称为 空集 写作 ∅ \emptyset ∅ 。用列举法表示为 { } \{\} {} 。

另外一个特殊的集合是 单集 ,这个集合的元素有且只有一个。

一个常见的困惑是 ∅ \emptyset ∅ 和 { ∅ } \{ \emptyset \} {∅} 的区别,我们发现,前者指的是空集,没有任何元素,后者是一个单集,有一个元素为空集。这就类比于计算机中的文件目录结构。

韦恩图

一些集合能够形象化的表示为韦恩图。在韦恩图中 全集 是指包含一切元素的集合(取决于你的研究对象),记作 U U U ,在韦恩图中用一个矩形表示。在矩形中,其他的几何元素例如圆表示一个集合,用点来表示一个具体的元素,用重叠关系来表示集合关系。

子集

定义:集合 A A A 是集合 B B B 的子集如果集合 A A A 中所有的元素也在 B B B 中。我们使用记号 A ⊆ B A \subseteq B A⊆B 表示。

我们发现 A ⊆ B A \subseteq B A⊆B 等价于:

∀ x ( x ∈ A → x ∈ B ) \forall x (x \in A \to x \in B) ∀x(x∈A→x∈B)

韦恩图表示为 B B B 包含 A A A 。

定理:对于任何集合 S S S , ∅ ⊆ S \emptyset \subseteq S ∅⊆S 并且 S ⊆ S S \subseteq S S⊆S 。

这说明一个非空集合必有两个子集,一个是空子集,一个是他本身,这两个集合称为平凡子集。

当我们想强调 A A A 是 B B B 的一个子集但是 A ≠ B A \neq B A​=B ,此时我们用记号 A ⊂ B A \subset B A⊂B 说明 A A A 是 B B B 的一个 真子集 。等价于下面的命题:

∀ x ( x ∈ A → x ∈ B ) ∧ ∃ x ( x ∈ B ∧ x ∉ A ) \forall x (x \in A \to x \in B) \wedge \exists x (x \in B \wedge x \notin A) ∀x(x∈A→x∈B)∧∃x(x∈B∧x∈/​A)

如果我们想证明 A = B A = B A=B 我们可以证明 A ⊆ B A \subseteq B A⊆B 并且 B ⊆ A B \subseteq A B⊆A 。

集合的大小

定义:如果集合 S S S 有 n n n 个不同的元素,这里 n n n 是一个非负整数。我们说集合 S S S 是有限集合并且 n n n 是集合的势。集合的势被记作 ∣ S ∣ |S| ∣S∣ 。

另外,集合分为有限集合和无限集合。

定义:如果一个集合不是有限集合,那么他是无限集合。

幂集

许多集合问题都和它的子集有关,我们定义幂集这个概念。

定义:给定一个集合 S S S , S S S 的幂集是他所有子集的集合,记作 P ( x ) \mathcal{P}(x) P(x) 。

如果一个集合 S S S 有 n n n 个元素,那么他的子集有 2 n 2^n 2n 个,它幂集的势为 2 n 2^n 2n 。

笛卡尔积

集合有的时候并不是我们想要的结构,因为他是无序的。有时候我们需要一个有序的结构,称为 n n n 元组

定义:有序 n n n 元组 ( a 1 , a 2 , … , a n ) (a_1,a_2,\ldots,a_n) (a1​,a2​,…,an​) 是一个有序集合, a 1 a_1 a1​ 作为第一个元素,以此类推。

我们说两个 n n n 元组相等,当且仅当对应位置上的元素均相同。

特别的, 2 2 2 元组被称为 有序对

定义:让 A A A 和 B B B 是集合,两个集合的笛卡尔积 A × B A \times B A×B 是一个所有元素都是有序对的集合:

A × B = { ( a , b ) ∣ a ∈ A ∧ b ∈ B } A \times B = \{(a,b)|a \in A \wedge b \in B\} A×B={(a,b)∣a∈A∧b∈B}

我们将定义推广至 n n n 个集合的笛卡尔积。

定义:多个集合的笛卡尔积 A 1 × A 2 × … × A n A_1 \times A_2 \times \ldots \times A_n A1​×A2​×…×An​ 是一个所有元素都是有序对的集合:

A 1 × A 2 × … × A n = { ( a 1 , a 2 , … , a n ) ∣ a 1 ∈ A 1 ∧ a 2 ∈ A 2 ∧ … ∧ a n ∈ A n } A_1 \times A_2 \times \ldots \times A_n = \{(a_1,a_2,\ldots,a_n)|a_1 \in A_1 \wedge a_2 \in A_2 \wedge \ldots \wedge a_n \in A_n\} A1​×A2​×…×An​={(a1​,a2​,…,an​)∣a1​∈A1​∧a2​∈A2​∧…∧an​∈An​}

我们使用记号 A 2 A^2 A2 表示运算 A × A A \times A A×A ,同理 A n A^n An 即 n n n 次 A A A 的笛卡尔积。

一个 A × B A \times B A×B 的子集 R R R 被称为是从 A A A 到 B B B 的关系

使用集合记号和量词

有了集合,我们就可以引入集合限定域,例如 ∀ x ∈ S ( P ( x ) ) \forall x \in S (P(x)) ∀x∈S(P(x)) 就是 ∀ x ( x ∈ S → P ( x ) ) \forall x (x \in S \to P(x)) ∀x(x∈S→P(x)) 的简写。

对于特称量词也同理。

真值集合和量词

我们将集合和量词的关系连接起来。定义谓词 P ( x ) P(x) P(x) 的 真值集合 { x ∈ D ∣ P ( x ) } \{x \in D | P(x)\} {x∈D∣P(x)} 指的是所有在全域 D D D 上使得 P ( x ) P(x) P(x) 为真的所有元素构成的集合。

集合操作

集合操作介绍

对于两或多个集合,可以根据他们拥有元素的特征进行集合的运算。

定义:集合 A A A 和 B B B 的并集,记作 A ∪ B A \cup B A∪B ,是那些在 A A A 在 B B B 或者在两者中的所有元素构成的集合。

集合的并集等价于:

A ∪ B = { x ∣ x ∈ A ∨ x ∈ B } A \cup B = \{x | x \in A \vee x \in B\} A∪B={x∣x∈A∨x∈B}

用韦恩图表示为两者所有的面积。

定义:集合 A A A 和 B B B 的交集,记作 A ∩ B A \cap B A∩B ,是那些既在 A A A 又在 B B B 中的所有元素构成的集合。

集合的并集等价于:

A ∩ B = { x ∣ x ∈ A ∧ x ∈ B } A \cap B = \{x | x \in A \wedge x \in B\} A∩B={x∣x∈A∧x∈B}

用韦恩图表示为两者重叠部分的面积。

定义:两个集合是不交的,当且仅当两个集合的交集为空集。

我们有时对两个集合并集的集合的势的大小感兴趣,注意 ∣ A ∣ + ∣ B ∣ |A| + |B| ∣A∣+∣B∣ 将重叠部分的面积计算了两次,所有我们还有减去一次重叠面积,也就是:

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

上面的计算方法被称为 容斥原理

定义:两个集合的差集 A − B A - B A−B 是那些在 A A A 中 但不在 B B B 中所有元素构成的集合。也叫 A A A 的补相对于 B B B。

A − B = { x ∣ x i n A ∧ x ∉ B } A - B = \{x | x in A \wedge x \notin B\} A−B={x∣xinA∧x∈/​B}

用韦恩图表示为用 A A A 的面积减去 B B B 的面积。

一旦全集 U U U 确定,那么我们即可以定义集合 S S S 的补集。

定义:集合 A A A 的补集,记作 A ˉ \bar{A} Aˉ 是 U − A U - A U−A 。

也就是说:

A ˉ = { x ∈ U ∣ x ∉ A } \bar{A} = \{x \in U | x \notin A\} Aˉ={x∈U∣x∈/​A}

关于补集有个重要的恒等式:

A − B = A ∩ B ˉ A - B = A \cap \bar{B} A−B=A∩Bˉ

集合恒等式

下面表展示了大部分的集合恒等式。

恒等式 名称
A ∩ U = A A \cap U = A A∩U=A 同一律
A ∪ ∅ = A A \cup \emptyset = A A∪∅=A 同一律
A ∪ U = U A \cup U = U A∪U=U 零律
A ∩ ∅ = ∅ A \cap \emptyset = \emptyset A∩∅=∅ 零律
A ∪ A = A A \cup A = A A∪A=A 幂等律
A ∩ A = A A \cap A = A A∩A=A 幂等律
A ˉ ˉ = A \bar{\bar{A}} = A Aˉˉ=A 双重否定律
A ∪ ( B ∪ C ) = ( A ∪ B ) ∪ C A \cup (B \cup C) = (A \cup B) \cup C A∪(B∪C)=(A∪B)∪C 结合律
A ∩ ( B ∩ C ) = ( A ∩ B ) ∩ C A \cap (B \cap C) = (A \cap B) \cap C A∩(B∩C)=(A∩B)∩C 结合律
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 ∩ ( B ∪ C ) = ( A ∩ B ) ∪ ( A ∩ C ) A \cap (B \cup C) = (A \cap B) \cup (A \cap C) A∩(B∪C)=(A∩B)∪(A∩C) 分配律
A ∩ B ‾ = A ˉ ∪ B ˉ \overline{A \cap B} = \bar{A} \cup \bar{B} A∩B=Aˉ∪Bˉ 德摩根律
A ∪ B ‾ = A ˉ ∩ B ˉ \overline{A \cup B} = \bar{A} \cap \bar{B} A∪B=Aˉ∩Bˉ 德摩根律
A ∪ ( A ∩ B ) = A A \cup (A \cap B) = A A∪(A∩B)=A 吸收律
A ∩ ( A ∪ B ) = A A \cap (A \cup B) = A A∩(A∪B)=A 吸收律
A ∪ A ˉ = U A \cup \bar{A} = U A∪Aˉ=U 互补律
A ∩ A ˉ = ∅ A \cap \bar{A} = \emptyset A∩Aˉ=∅ 互补律

一些恒等式除了使用命题证明外,还可以使用 关系表 证明,关系表是类似于真值表的一个表,用 0 0 0 表示元素不在集合中,用 1 1 1 表示在集合中。

广义并和交

定义:一些集合的并集定义为元素至少在一个集合中。

也就是说:

A 1 ∪ A 2 ∪ … ∪ A n = ⋃ i = 1 n A i A_1 \cup A_2 \cup \ldots \cup A_n = \bigcup_{i=1}^n A_i A1​∪A2​∪…∪An​=i=1⋃n​Ai​

定义:一些集合的交集定义为元素在所有集合中。

也就是说:

A 1 ∩ A 2 ∩ … ∩ A n = ⋂ i = 1 n A i A_1 \cap A_2 \cap \ldots \cap A_n = \bigcap_{i=1}^n A_i A1​∩A2​∩…∩An​=i=1⋂n​Ai​

集合在计算机中的表示

有很多方式可以在计算机中表示集合。假设全集是有限的,我们可以用一串二进制数来表示一个集合,例如第一位表示元素 a 1 a_1 a1​ 在不在集合中。

此时集合的交并补,正好对应二进制运算的 ANDORNOT

函数

函数介绍

定义:让 A A A 和 B B B 是两个非空子集。一个函数 f f f 是给一个确定的 B B B 中元素给每一个 A A A 中的元素。我们写作 f ( a ) = b f(a) = b f(a)=b 这说明我们将 b b b 对应给 a a a 元素。这样的函数写作 f : A → B f: A \to B f:A→B 。

注意,函数有时也叫 映射 或者是 变换

描述函数的方式有很多种,一般数学上描述函数给出函数的公式,例如 f ( x ) = x + 1 f(x) = x+1 f(x)=x+1 ,函数也可看做是从 A A A 到 B B B 的关系的一种子集。如果存在 f ( a ) = b f(a) = b f(a)=b 那么一定存在 ( a , b ) (a,b) (a,b) 。

定义:如果函数 f : A → B f:A \to B f:A→B 那么我们称 A A A 是函数的域, B B B 是函数的陪域。如果 f ( a ) = b f(a) = b f(a)=b 我们称 b b b 是 a a a 的像,而 b b b 是原像。函数 f f f 的像或是值域指的是所有 A A A 中元素的像的集合。同时,我们也说是 f f f 是 A A A 到 B B B 的映射。

注意,两个函数相等当且仅当两个函数的域,陪域以及映射关系相同。当我们改变任意一个要素,我们得到是两个不同的函数。

一个函数称为 实值的 如果它的陪域是实数的集合,如果是 整值的 如果它的陪域是整数的集合,两个实值或是整值函数可以相加或者相乘。

定义:让 f 1 f_1 f1​ 和 f 2 f_2 f2​ 是两个 A → R A \to R A→R 的函数。此时 f 1 + f 2 f_1 + f_2 f1​+f2​ 和 f 1 f 2 f_1f_2 f1​f2​ 仍是 A → R A \to R A→R 的函数,分别为 ( f 1 + f 2 ) ( x ) = f 1 ( x ) + f 2 ( x ) (f_1 + f_2)(x) = f_1(x) + f_2(x) (f1​+f2​)(x)=f1​(x)+f2​(x) 和 ( f 1 f 2 ) ( x ) = f 1 ( x ) f 2 ( x ) (f_1f_2)(x) = f_1(x) f_2(x) (f1​f2​)(x)=f1​(x)f2​(x) 。

如果函数 f : A → B f: A \to B f:A→B 那么 A A A 子集的像也就能定义。

定义:如果 f f f 是从 A A A 到 B B B 的函数,让 S S S 是集合 A A A 的子集。子集 S S S 在 f f f 下的像是一个 B B B 的子集,包含每一 S S S 中元素的像,记作 f ( S ) f(S) f(S) ,所以:

f ( S ) = { t ∣ ∃ s ∈ S ( t = f ( s ) ) } f(S) = \{t | \exists s \in S (t = f(s))\} f(S)={t∣∃s∈S(t=f(s))} 。

有时简记为 { f ( s ) ∣ s ∈ S } \{f(s) | s \in S\} {f(s)∣s∈S} 。

注意,写法 f ( S ) f(S) f(S) 是具有歧义的,可能是集合的像,也可能是集合的映射,出现歧义时要具体说明。

一对一和满射函数

有时我们不会给两个不同域元素分配同样的值,这叫做 一对一函数

定义:如果函数是一对一函数或者是单射函数,当且仅当对于所有的 f ( a ) = f ( b ) f(a) = f(b) f(a)=f(b) 都有 a = b a = b a=b 。

我们给出单射函数的一些条件。

定义:一个域和陪域都是实数集合的函数 f f f 是单调递增的,当且仅当对于所有 x < y x \lt y x<y 都有 f ( x ) ≤ f ( y ) f(x) \leq f(y) f(x)≤f(y) ,是严格单调递增的如果 f ( x ) < f ( y ) f(x) \lt f(y) f(x)<f(y) 。单调递减也同理。

显然,一个严格单调递增函数或严格单调递减函数都是一个一对一函数。

有时,一个函数的陪域和值域相同,此时我们称这个函数是 满射函数

定义:如果一个函数是满射函数,当且仅当对于陪域中的任意一个元素 b b b 都能在域中找到元素 a a a 使得 f ( a ) = b f(a) = b f(a)=b 。

如果函数同时具有单射和满射的性质,我们称这个函数是一个 双射函数

定义:如果函数同时具有单射和满射的性质,我们称这个函数是一个双射函数,也称为是一一对应函数。

反函数和复合函数

考虑一个一一对应函数,这个函数是满射的因此所有陪域中的元素都能找到一个原像对应,又因为是单射函数,所以原像是唯一的,那么反过来的关系也一定是函数。

定义: f f f 是一个一一对应函数,如果存在 f ( a ) = b f(a) = b f(a)=b 那它的反函数就存在 f − 1 ( b ) = a f^{-1}(b) = a f−1(b)=a 。

注意写法 f − 1 f^{-1} f−1 并不是指倒数。

有时也称反函数为 可逆 函数。

定义:函数 g g g 是 A A A 到 B B B 的函数,函数 f f f 是 B B B 到 C C C 的函数,这两个函数的复合函数记作 ( f ∘ g ) ( a ) = f ( g ( a ) ) (f \circ g)(a) = f(g(a)) (f∘g)(a)=f(g(a)) 。

也就是说,复合函数相当于是作用两次的函数,此时 g g g 的值域必须是 f f f 域的子集。

如果函数 f f f 存在反函数,那么 ( f − 1 ∘ f ) ( a ) = ι A ( a ) = a (f^{-1} \circ f)(a) = \iota_A(a) = a (f−1∘f)(a)=ιA​(a)=a 并且 ( f ∘ f − 1 ) ( b ) = ι B ( b ) = b (f \circ f^{-1})(b) = \iota_B(b) = b (f∘f−1)(b)=ιB​(b)=b 。

函数的图

我们可以用 A × B A \times B A×B 的子集来描述任何从 A A A 到 B B B 的函数。

定义:让 f f f 是从 A A A 到 B B B 的函数。函数 f f f 的图是有序对集合 { ( a , b ) ∣ a ∈ A ∧ f ( a ) = b } \{(a,b) | a \in A \wedge f(a) = b\} {(a,b)∣a∈A∧f(a)=b} 。

一些重要的函数

定义:底函数 ⌊ x ⌋ \lfloor x \rfloor ⌊x⌋ 是不大于 x x x 的最大整数,顶函数 ⌈ x ⌉ \lceil x \rceil ⌈x⌉ 是不小于 x x x 的最小整数。

另外一个重要的函数是 阶乘函数

这些在具体数学中会具体讲解,因此不在赘述。

部分函数

定义:如果函数 f f f 只在域 A A A 的子集下有定义,这个子集叫做定义域,此时函数被称为部分函数,如果定义域等于域,那么称为全函数。

部分函数的定义是为了更好的描述一些特殊函数的反函数,例如 x \sqrt{x} x ​ 就是一个部分函数。因为在负整数部分没有定义。

序列和和式

序列和和式的介绍

序列是一些元素的有序列表,在一些离散问题上具有重要的作用,通常用于计数,而计数的基础是和式的计算,因此本章讲解序列和和式。

序列

序列是一些元素的有序列表,例如 1 , 3 , 5 , 7 , 9 1,3,5,7,9 1,3,5,7,9 是一个有限序列,而 1 , 3 , 9 , … , 3 n 1,3,9,\ldots,3^n 1,3,9,…,3n 则是一个无限序列。

定义:一个序列是一个域为整数(通常是 { 0 , 1 , 2 , 3 , … } \{0,1,2,3,\ldots\} {0,1,2,3,…} 或者是 { 1 , 2 , 3 , … } \{1,2,3,\ldots\} {1,2,3,…} )的函数,我们记作 a n a_n an​ 是 n n n 的像。我们将一系列的 a n a_n an​ 叫做是序列。

我们用 { a n } \{a_n\} {an​} 这个序列来记作一个序列。

有限序列有时也称为是 ,串的长度是有限序列的长度,空串记为 λ \lambda λ 。

递归关系

定义:用 a n a_n an​ 的前项( { a 1 , a 2 , … , a n − 1 } \{a_1,a_2,\ldots,a_{n-1}\} {a1​,a2​,…,an−1​} )描述 a n a_n an​ 的方式称为递归描述。一个序列称为解,如果这个序列满足这个递归描述。

初始条件 指的是能开始递归的极小前几项,也就是说,确定了初始条件,那么就唯一的确定了其一个解。

如果我们找到了一个具有初始条件的迭代公式,我们称这个公式是其递归描述的一个 封闭公式

进一步展开将在具体数学系列笔记中说明,此处不在赘述。

如果想查询一个序列,可以访问 OEIS (On-Line
Encyclopedia of Integer Sequences) 数据库。

和式

接下来,我们讨论序列的和式,我们引入 和式记号 ,假设我们有序列:

a m , a m + 1 , … , a n a_m,a_{m+1},\ldots,a_n am​,am+1​,…,an​

将这些序列元素相加,我们记为:

∑ j = m n a j = a m + a m + 1 + … + a n \sum_{j=m}^n a_j = a_m + a_{m+1} + \ldots + a_n j=m∑n​aj​=am​+am+1​+…+an​

这里, j j j 称为 和式索引 通常使用字母 i , j , k i,j,k i,j,k 来表示。 m m m 称为和式的 下限 n n n 称为和式的 上限

定理:如果 a a a 和 r r r 都是实数且 r r r 不等于 0 0 0 ,那么:

∑ j = 0 n a r j = a r n + 1 − a r − 1 \sum_{j=0}^n ar^j = \frac{ar^{n+1} - a}{r - 1} ∑j=0n​arj=r−1arn+1−a​ 如果 r ≠ 1 r \neq 1 r​=1

∑ j = 0 n a r j = ( n + 1 ) a \sum_{j=0}^n ar^j = (n+1)a ∑j=0n​arj=(n+1)a 如果 r = 1 r = 1 r=1

和式也是可以嵌套的,例如:

∑ i = 1 4 ∑ j = 1 3 i j \sum_{i=1}^4 \sum_{j = 1}^3 ij i=1∑4​j=1∑3​ij

处理嵌套和式我们从内部到外部处理,遇见外部变量当做为常量。

对于集合和式:

∑ s ∈ S f ( s ) \sum_{s \in S} f(s) s∈S∑​f(s)

的意思是对所有 f ( s ) f(s) f(s) 求和,其中 s s s 是集合 S S S 中的所有元素。

无限和式也称为 级数 ,处理级数可能需要一些微积分的知识。

进一步展开将在具体数学系列笔记中说明,此处不在赘述。

下面给出常用的和式表:

和式 封闭形式
∑ k = 0 n a r k ( r ≠ 0 ) \sum_{k=0}^n ar^k (r \neq 0) ∑k=0n​ark(r​=0) a r n + 1 − a r − 1 \frac{ar^{n+1} - a}{r - 1} r−1arn+1−a​
∑ k = 1 n k \sum_{k=1}^n k ∑k=1n​k n ( n + 1 ) 2 \frac{n(n+1)}{2} 2n(n+1)​
∑ k = 1 n k 2 \sum_{k=1}^n k^2 ∑k=1n​k2 n ( n + 1 ) ( 2 n + 1 ) 6 \frac{n(n+1)(2n+1)}{6} 6n(n+1)(2n+1)​
∑ k = 1 n k 3 \sum_{k=1}^n k^3 ∑k=1n​k3 n 2 ( n + 1 ) 2 4 \frac{n^2(n+1)^2}{4} 4n2(n+1)2​
∑ k = 0 ∞ x k , a b s ( x ) < 1 \sum_{k=0}^\infty x^k,abs(x) \lt 1 ∑k=0∞​xk,abs(x)<1 1 1 − x \frac{1}{1 - x} 1−x1​
∑ k = 1 ∞ k x k − 1 , a b s ( x ) < 1 \sum_{k=1}^\infty kx^{k-1},abs(x) \lt 1 ∑k=1∞​kxk−1,abs(x)<1 1 ( 1 − x ) 2 \frac{1}{(1 - x)^2} (1−x)21​

集合的势

在上一章我们介绍了有限集合的势就是集合元素的个数,本章介绍无限集合的势,以及等势,比较两个无限集合势大小的方法。

定义:如果两个集合 A A A 和 B B B 是等势的,当且仅当存在一个从 A A A 到 B B B (或从 B B B 到 A A A )的双射函数。我们说这两个集合是等势的,记作 ∣ A ∣ = ∣ B ∣ |A| = |B| ∣A∣=∣B∣ 。

对于集合势的定义,我们并不是直接测量集合的大小,而是通过相对的方法比较两个集合的势的大小关系。同理,集合势的大小也存在大小关系。

定义:如果存在从 A A A 到 B B B 的单射函数,我们说 A A A 的势小于等于 B B B ,写作 ∣ A ∣ ≤ ∣ B ∣ |A| \leq |B| ∣A∣≤∣B∣ 。进一步,如果 A A A 和 B B B 不等势,那么我们说 A A A 的势小于 B B B ,写作 ∣ A ∣ < ∣ B ∣ |A| \lt |B| ∣A∣<∣B∣ 。

可数集合

我们将无限集合分成两类,一类和自然数集等势,另一类不等势。

定义:如果集合是有限的或者无限的但和正整数集合等势,那么这个集合叫做可数集合,否则叫做不可数集合。我们将可数集合的势记作 ℵ 0 \aleph_0 ℵ0​ (读作阿列夫零),同时记作 ∣ A ∣ = ℵ 0 |A| = \aleph_0 ∣A∣=ℵ0​ 。

可数集合一个重要的特征是能够列举成序列的形式,因为序列的索引和正整数集是一一对应的。

根据可数集的定义,我们显然知道,整数集是可数集,但更重要的是,有理数集同样是可数集。

有理数可以写作是 p / q p/q p/q 的形式,那么我们让 p p p 作为列标,而 q q q 作为行标,这样就有了一个无限大的方格,我们以斜对角线的方式遍历这个无限大的方格,得到一个无限序列,因此有理数集同样是可数集。

不可数集

我们已经知道了可数集的定义和例子,对于不可数集的讨论,实数集就是经典是不可数集合。我们使用著名的 康托对角线证明

为了证明实数集是不可数集合,我们先假设实数集是可数集合,那么 [ 0 , 1 ] [0,1] [0,1] 内的实数集同样可数,因为可数集的子集一定是可数集。

现在让我们列举 [ 0 , 1 ] [0,1] [0,1] 内的实数。

r 1 = 0. d 11 d 12 d 13 … r 2 = 0. d 21 d 22 d 23 … r 3 = 0. d 31 d 32 d 33 … ⋮ \begin{aligned} r_1 & = 0.d_{11}d_{12}d_{13}\ldots \\ r_2 & = 0.d_{21}d_{22}d_{23}\ldots \\ r_3 & = 0.d_{31}d_{32}d_{33}\ldots \\ \vdots \\ \end{aligned} r1​r2​r3​⋮​=0.d11​d12​d13​…=0.d21​d22​d23​…=0.d31​d32​d33​…​

这里 d i j = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } d_{ij} = \{0,1,2,3,4,5,6,7,8,9\} dij​={0,1,2,3,4,5,6,7,8,9} ,根据上述列举的实数,我们能够构造出一个新的实数,即 r = 0. d 1 d 2 d 3 … r = 0.d_1d_2d_3\ldots r=0.d1​d2​d3​…

d i = { 4 if d i i ≠ 4 5 if d i i = 4 d_i = \begin{cases} 4 & \text{if} & d_{ii} \neq 4 \\ 5 & \text{if} & d_{ii} = 4 \end{cases} di​={45​ifif​dii​​=4dii​=4​

易知,在枚举的 r i r_i ri​ 中没有一个是和 r r r 相同的,也就是说实数是无法枚举出来的,所以实数集不是可数集。

现在我们讨论一下关于可数集的一些定理。

定理:如果 A A A 和 B B B 是可数集,那么 A ∪ B A \cup B A∪B 也同样是可数集。

我们可以通过 a 1 , b 1 , a 2 , b 2 , … a_1,b_1,a_2,b_2,\ldots a1​,b1​,a2​,b2​,… 进行交替枚举,因此可数集的并集也是可数集。

定理:(Cantor-Bernstein-Schroeder Theorem)是集合论基本定理。如果 ∣ A ∣ ≤ ∣ B ∣ |A| \leq |B| ∣A∣≤∣B∣ 并且 ∣ B ∣ ≤ ∣ A ∣ |B| \leq |A| ∣B∣≤∣A∣ 那么 ∣ A ∣ = ∣ B ∣ |A| = |B| ∣A∣=∣B∣ 。换句话说,如果同时存在从 A A A 到 B B B 和从 B B B 到 A A A 的单射函数,那么必定存在两个集合直接的双射函数。

尽管这个定理阐述的十分简单,但是证明起来却十分困难,读者可查阅相关资料。

现在我们讨论一下在计算机中的应用,那即是存在不可计算函数,指在任何计算机中都不能被计算的函数。

定义:我们说一个函数是 可计算的 ,当且仅当存在计算机和编程语言能够找到他的值,否则是 不可计算的

很显然,一定存在不可计算的函数,举例来说,一个计算 [ 0 , 1 ] [0,1] [0,1]内所有实数的和是一个不可计算函数。

我们用一个更高级的理论结束本章。能够证明, Z + \mathbb{Z}^+ Z+ 的幂集和 R \mathbb{R} R 等势,也就是说 ∣ P ( Z + ) ∣ = ∣ R ∣ = c |\mathcal{P}(\mathbb{Z}^+)| = |\mathbb{R}| = \mathfrak{c} ∣P(Z+)∣=∣R∣=c 其中 c \mathfrak{c} c 是实数集的势。

另外一个著名的结论,说明集合的势小于他幂集的势,因此 ∣ Z + ∣ < ∣ P ( Z + ) ∣ |\mathbb{Z}^+| \lt |\mathcal{P}(\mathbb{Z}^+)| ∣Z+∣<∣P(Z+)∣ ,我们可以写作 ℵ 0 < 2 ℵ 0 \aleph_0 \lt 2^{\aleph_0} ℵ0​<2ℵ0​ 其中 2 ∣ S ∣ 2^{|S|} 2∣S∣ 指的是集合 S S S 幂集的势。因此 2 ℵ 0 = c 2^{\aleph_0} = \mathfrak{c} 2ℵ0​=c 。

这引出著名的 连续性假设 ,这个假设断言不存在一个势数大于 ℵ 0 \aleph_0 ℵ0​ 并小于 c \mathfrak{c} c 。能够证明,最小的无限势数形成一个无限的序列 ℵ 0 < ℵ 1 < ℵ 2 < … \aleph_0 \lt \aleph_1 \lt \aleph_2 \lt \ldots ℵ0​<ℵ1​<ℵ2​<… ,如果这个假设是真的,那么 c = ℵ 1 = 2 ℵ 0 \mathfrak{c} = \aleph_1 = 2^{\aleph_0} c=ℵ1​=2ℵ0​ 。

矩阵

矩阵介绍

矩阵用于表示离散数学中元素在集合中的关系,在一下几个小节中将介绍矩阵的几个模型,例如,矩阵的通讯网络和传输系统模型。

定义:一个矩阵是一个矩形的数的数组,一个有 m m m 行 n n n 列的矩阵称为 m × n m \times n m×n 矩阵。有相同的行数和列数的矩阵叫做方阵。两个矩阵相等,如果两个矩阵的行数和列数相同,并且对于位置上的元素也相同。

我们约定加粗的大写字母代表矩阵。

定义:矩阵的第 i i i 行是一个 1 × n 1 \times n 1×n 矩阵,矩阵的第 i i i 列是一个 m × 1 m \times 1 m×1 矩阵,我们将第 i i i 行第 j j j 列的元素记为 a i j a_{ij} aij​ 。

矩阵算数

定义:矩阵的加法是对应位置上的元素相加,只有行数和列数相同的矩阵才能相加。

更重要的运算是矩阵的乘法。

定义:让 A \textbf{A} A 是一个 m × k m \times k m×k 矩阵,让 $ B \textbf{B} B 是一个 k × n k \times n k×n 矩阵,两个矩阵相乘的结果 C = AB \textbf{C} = \textbf{A}\textbf{B} C=AB 是一个 m × n m \times n m×n 矩阵,记作 c i j = ∑ p = 1 k a i p b p j c_{ij} = \sum_{p = 1}^k a_{ip}b_{pj} cij​=∑p=1k​aip​bpj​ 。

更详细的知识参考线性代数系列笔记。

矩阵的转置和幂

定义:单位矩阵是一个 n × n n \times n n×n 的方阵,其中主对角线上都是 1 1 1 其他位置都是 0 0 0 ,记作 I n \textbf{I}_n In​ 。

单位矩阵和任何矩阵相乘都等于矩阵本身。

定义: A n \textbf{A}^n An 表示矩阵和自身相乘 n n n 次。特别的 A 0 = I n \textbf{A}^0 = \textbf{I}_n A0=In​ 。

最后一个是矩阵的转置。

定义: 矩阵 A \textbf{A} A 的转置记作 A t \textbf{A}^t At 并且 a i j t = a j i a^t_{ij} = a_{ji} aijt​=aji​ 。

我们发现矩阵的转置的行数和列数正好和原矩阵相反。

特别的,一个矩阵是对称的,当且仅当它的转置和它本身相等。

零一矩阵

在离散数学中,矩阵重要的一个模型就是零一矩阵。即一个矩阵的元素要么是 0 0 0 要么是 1 1 1 。零一矩阵不同于一般的矩阵,因为他有布尔代数的性质,现在引出布尔代数算子。

b 1 ∧ b 2 = { 1 b 1 = b 2 = 1 0 otherwise b_1 \wedge b_2 = \begin{cases} 1 & b_1 = b_2 = 1 \\ 0 & \text{otherwise} \end{cases} b1​∧b2​={10​b1​=b2​=1otherwise​

b 1 ∨ b 2 = { 1 b 1 = 1 ∨ b 2 = 1 0 otherwise b_1 \vee b_2 = \begin{cases} 1 & b_1 = 1 \vee b_2 = 1 \\ 0 & \text{otherwise} \end{cases} b1​∨b2​={10​b1​=1∨b2​=1otherwise​

定义:两个矩阵的并记作 A ∨ B \textbf{A} \vee \textbf{B} A∨B 元素为对应元素进行 ∨ \vee ∨ 运算,两个矩阵的交写作 A ∧ B \textbf{A} \wedge \textbf{B} A∧B 元素为对应元素进行 ∧ \wedge ∧ 运算。

现在我们定义两个矩阵的 布尔积

定义:让 A \textbf{A} A 是一个 m × k m \times k m×k 矩阵,让 $ B \textbf{B} B 是一个 k × n k \times n k×n 矩阵,两个矩阵布尔积的结果 C = A ⊙ B \textbf{C} = \textbf{A} \odot \textbf{B} C=A⊙B 是一个 m × n m \times n m×n 矩阵,记作 c i j = ( a i 1 ∧ b 1 j ) ∨ ( a i 2 ∧ b 2 j ) ∨ … ∨ ( a i k ∧ b k j ) c_{ij} = (a_{i1} \wedge b_{1j}) \vee (a_{i2} \wedge b_{2j}) \vee \ldots \vee (a_{ik} \wedge b_{kj}) cij​=(ai1​∧b1j​)∨(ai2​∧b2j​)∨…∨(aik​∧bkj​) 。

零一矩阵的布尔积就是矩阵相乘的离散模拟。用交代替称号,用并代替加号。

同样,我们定义幂运算。

定义: A [ n ] \textbf{A}^{[n]} A[n] 表示矩阵和自身做布尔积 n n n 次。特别的 A 0 = I n \textbf{A}^0 = \textbf{I}_n A0=In​ 。

离散数学——基本离散结构:集合,函数,序列,和式和矩阵相关推荐

  1. 离散结构和离散数学中文书_在离散数学中对场景执行的操作

    离散结构和离散数学中文书 Prerequisite: Set theory and types of set in Discrete Mathematics 先决条件: 离散数学中的集合论和集合类型 ...

  2. 离散结构和离散数学中文书_戒指和戒指类型| 离散数学

    离散结构和离散数学中文书 环 (Ring) The algebraic structure (R, +, .) which consisting of a non-empty set R along ...

  3. hive函数大全(数学函数,集合函数,类型转换,日期函数,条件函数,字符串函数,及侧视图)

    在hive中,可以使用以下命令查看某个函数的用法: desc function extended 函数名字; 比如查函数date_add函数的用法: desc function extended da ...

  4. 组合数据类型{集合,序列【字符串,元组,列表】,字典}

    集合类型及操作 <1>集合元素之间无序,每个元素唯一,不存在相同元素 <2>集合元素不可更改,不能是可变数据类型 集合用大括号{}表示,元素间用逗号分隔 建立集合类型用{ }或 ...

  5. 漫步数理统计四——概率集合函数(下)

    例3:\textbf{例3:}C\textbf{C}被分成kk个两两不相交的子集C1,C2,-,CkC_1,C_2,\ldots,C_k,并且这kk个子集的并是C\textbf{C},那么事件C1,c ...

  6. SQL数据库语言基础之SqlServer系统函数、聚合集合函数【大总结】

    文章目录 1.聚合函数 2.类型转换函数 3.日期函数 4.数学函数 5.字符函数 6.其他系统函数 1.聚合函数 (1)聚合函数的概念 它是系统函数中最常用的一类函数,主要是对一组值进行计算,然后返 ...

  7. Python_Task05:字典、集合和序列

    字典.集合和序列 学习教程 字典 1. 可变类型与不可变类型 2. 字典的定义 3. 创建和访问字典 4. 字典的内置方法 集合 1. 集合的创建 2. 访问集合中的值 3. 集合的内置方法 4. 集 ...

  8. JAVA——34.集合函数-List

    [集合]集合起来的一组数据.和它类似的概念:数组 [集合与数组的区别]1.数组是类型相同的一组数据,而集合中的数据类型可以相同,也可以不同.2.数组的长度是预先定义好的,而集合的长度可以是预先定义好的 ...

  9. Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)

    Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...

最新文章

  1. Microsoft 火拼 Adobe —— 吴佩孚大战太阳神
  2. 验证Xcode真伪的方法,来自苹果官网
  3. mac上面启用托盘放大效果的方法
  4. Java集合框架之ArrayList类
  5. linux网络保存退出,linux编辑文件后如何保存退出
  6. linux read nchars,Linux常用命令--read
  7. 程序员有哪些可以写博客的网站?
  8. asp.net mvc webform和razor的page基类区别
  9. ubuntu 内Grub2配置详解(转)
  10. 苹果官网买的认证翻新机可靠吗?
  11. Django简介与基本命令
  12. php怎么写显示商品图片,php – Woocommerce显示带有产品图片的产品
  13. MapReduce计算模型(二)
  14. 小程序实现城市搜索功能
  15. 等额本息和等额本金实现步骤
  16. 计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
  17. 机器人鸣人是哪一集_博人传鸣人出场集数 博人传佐助哪几集出现过
  18. Qwerty Learner:为键盘工作者设计的单词记忆与英语肌肉记忆锻炼网页
  19. JavaSE基础知识(九)--Java中的方法重载(涉及基本类型的重载)
  20. 爬取凤凰网站财经类的新闻,函数时编程,可全部实现,由于内容量大,需要时间太长,服务器会禁止,为了防止,可以将time.sleep()设置的时间长点...

热门文章

  1. mosquito 和QTMQTT测试记录
  2. 音视频编解码 文件格式 协议内容详解
  3. 新手搭建 WordPress 网站终极解决方案 基于 Bitnami 堆栈快速搭建完美个人博客(Blog)
  4. 有穷自动机c语言,有穷自动机(有穷状态自动机)简介
  5. 辽工大计算机专业考研好考吗,【计算机考研】院校信息-辽宁工业大学
  6. 数据结构第七章:查找
  7. 基于BQ40Z50芯片的寄存器读写
  8. 21cn 世纪龙 笔试
  9. rtsp 服务器搭建
  10. 博弈论(二): 车联网环境下一个基于 博弈论的十字路口智能 交通控制算法