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

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

集合

集合介绍

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

定义:一个集合是一个无序容器,叫做元素或对象的集合。一个集合被说成包含它的元素。我们写法 a ∈ A a \in A aA 指的是元素 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={xZ+x10} 表示集合 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)={xaxb}={xax<b}={xa<xb}={xa<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(xAxB) 。我们写成 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 AB 表示。

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

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

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

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

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

当我们想强调 A A A B B B 的一个子集但是 A ≠ B A \neq B A=B ,此时我们用记号 A ⊂ B A \subset B AB 说明 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(xAxB)x(xBx/A)

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

集合的大小

定义:如果集合 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)aAbB}

我们将定义推广至 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)a1A1a2A2anAn}

我们使用记号 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)) xS(P(x)) 就是 ∀ x ( x ∈ S → P ( x ) ) \forall x (x \in S \to P(x)) x(xSP(x)) 的简写。

对于特称量词也同理。

真值集合和量词

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

集合操作

集合操作介绍

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

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

集合的并集等价于:

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

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

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

集合的并集等价于:

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

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

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

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

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

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

定义:两个集合的差集 A − B A - B AB 是那些在 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\} AB={xxinAx/B}

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

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

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

也就是说:

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

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

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

集合恒等式

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

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

一些恒等式除了使用命题证明外,还可以使用 关系表 证明,关系表是类似于真值表的一个表,用 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 A1A2An=i=1nAi

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

也就是说:

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 A1A2An=i=1nAi

集合在计算机中的表示

有很多方式可以在计算机中表示集合。假设全集是有限的,我们可以用一串二进制数来表示一个集合,例如第一位表示元素 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:AB

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

描述函数的方式有很多种,一般数学上描述函数给出函数的公式,例如 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:AB 那么我们称 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 AR 的函数。此时 f 1 + f 2 f_1 + f_2 f1+f2 f 1 f 2 f_1f_2 f1f2 仍是 A → R A \to R AR 的函数,分别为 ( 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) (f1f2)(x)=f1(x)f2(x)

如果函数 f : A → B f: A \to B f:AB 那么 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)={tsS(t=f(s))}

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

注意,写法 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 f1(b)=a

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

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

定义:函数 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)) (fg)(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 (f1f)(a)=ιA(a)=a 并且 ( f ∘ f − 1 ) ( b ) = ι B ( b ) = b (f \circ f^{-1})(b) = \iota_B(b) = b (ff1)(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)aAf(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,,an1} )描述 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=mnaj=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=0narj=r1arn+1a 如果 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=0narj=(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=14j=13ij

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

对于集合和式:

∑ s ∈ S f ( s ) \sum_{s \in S} f(s) sSf(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=0nark(r=0) a r n + 1 − a r − 1 \frac{ar^{n+1} - a}{r - 1} r1arn+1a
∑ k = 1 n k \sum_{k=1}^n k k=1nk n ( n + 1 ) 2 \frac{n(n+1)}{2} 2n(n+1)
∑ k = 1 n k 2 \sum_{k=1}^n k^2 k=1nk2 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=1nk3 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=0xk,abs(x)<1 1 1 − x \frac{1}{1 - x} 1x1
∑ k = 1 ∞ k x k − 1 , a b s ( x ) < 1 \sum_{k=1}^\infty kx^{k-1},abs(x) \lt 1 k=1kxk1,abs(x)<1 1 ( 1 − x ) 2 \frac{1}{(1 - x)^2} (1x)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| AB 。进一步,如果 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} r1r2r3=0.d11d12d13=0.d21d22d23=0.d31d32d33

这里 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.d1d2d3

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={45ififdii=4dii=4

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

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

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

我们可以通过 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| AB 并且 ∣ B ∣ ≤ ∣ A ∣ |B| \leq |A| BA 那么 ∣ 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<20 其中 2 ∣ S ∣ 2^{|S|} 2S 指的是集合 S S S 幂集的势。因此 2 ℵ 0 = c 2^{\aleph_0} = \mathfrak{c} 20=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=20

矩阵

矩阵介绍

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

定义:一个矩阵是一个矩形的数的数组,一个有 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=1kaipbpj

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

矩阵的转置和幂

定义:单位矩阵是一个 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} b1b2={10b1=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} b1b2={10b1=1b2=1otherwise

定义:两个矩阵的并记作 A ∨ B \textbf{A} \vee \textbf{B} AB 元素为对应元素进行 ∨ \vee 运算,两个矩阵的交写作 A ∧ B \textbf{A} \wedge \textbf{B} AB 元素为对应元素进行 ∧ \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=AB 是一个 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=(ai1b1j)(ai2b2j)(aikbkj)

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

同样,我们定义幂运算。

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

你可能感兴趣的:(离散数学,矩阵,线性代数,算法,离散数学)