【算法导论】附录B:离散数学 (1)


Introduction to Algorithms - Third Edition
VIII Appendix: Mathematical Background
Appendix B Sets, Etc.


B.1 集合

集合(set)包含一组可区分的对象,称为成员元素
如果对象 x x x 是集合 S S S 的一个成员,写作 x ∈ S x \in S xS。如果 x x x 不是 S S S 的成员,写作 x ∉ S x \notin S x/S
可以通过在大括号中显式列出成员作为一个列表,来描述集合。比如 S = { 1 , 2 , 3 } S = \{1,2,3\} S={1,2,3}

集合不能包含相同的元素,它的元素是无序的。set 的变形 multiset 可以包含相同的元素多次。
如果两个集合 A A A B B B 包含相同的元素,它们相等(equal),写作 A = B A=B A=B。例如, { 1 , 2 , 3 , 1 } = { 1 , 2 , 3 } = { 3 , 2 , 1 } \{1,2,3,1\} = \{1,2,3\} = \{3,2,1\} {1,2,3,1}={1,2,3}={3,2,1}

采用特殊记号表示常用集合:

  • ∅ \empty 表示空集,即集合中没有任何成员。
  • Z \Z Z 表示整数集,即集合 { … , − 2 , − 1 , 0 , 1 , 2 , …   } \{\dots, -2, -1, 0, 1, 2,\dots\} {,2,1,0,1,2,}
  • R \R R 表示实数集
  • N \N N 表示自然数集,即集合 { 0 , 1 , 2 , …   } \{ 0, 1, 2,\dots\} {0,1,2,}

如果集合 A A A 中的所有元素都包含在集合 B B B 中,即 x ∈ A x \in A xA 蕴含 x ∈ B x \in B xB,则称 A A A B B B子集(subset),写作 A ⊆ B A \sube B AB
如果 A ⊆ B A \sube B AB A ≠ B A \ne B A=B,则 A A A B B B真子集(proper subset),写作 A ⊂ B A \sub B AB

对任意集合 A A A,有 A ⊆ A A \sube A AA
对于两个集合 A A A B B B,当且仅当 A ⊆ B A \sube B AB B ⊆ A B \sube A BA 时,有 A = B A=B A=B
对于任意 3 个集合 A A A B B B C C C,如果 A ⊆ B A \sube B AB B ⊆ C B \sube C BC,则 A ⊆ C A \sube C AC
对于任意集合 A A A,有 ∅ ⊆ A \empty \sube A A

有时可以通过其他集合来定义集合。给定一个集合 A A A,可以定义集合 B ⊆ A B \sube A BA,通过陈述属性来区分 B B B 中的元素。
例,定义偶数集合为 { x : x ∈ Z \{x : x \in \Z {x:xZ x / 2 x/2 x/2 是整数 } \} }。有些书上用 ∣ | 代替 : : :

给定集合 A A A B B B,通过使用集合操作定义新集合:

集合操作定义
交集(intersection) A ∩ B = { x : x ∈ A   且   x ∈ B } A \cap B = \{ x: x \in A \ 且 \ x \in B \} AB={x:xA  xB}
并集(union) A ∪ B = { x : x ∈ A   或   x ∈ B } A \cup B = \{ x: x \in A \ 或 \ x \in B \} AB={x:xA  xB}
差集(difference) A − B = { x : x ∈ A   且   x ∉ B } A - B = \{ x: x \in A \ 且 \ x \notin B \} AB={x:xA  x/B}

集合操作遵循以下定律:

  • 空集律 (Empty set laws): A ∩ ∅ = ∅ A \cap \empty = \empty A= A ∪ ∅ = A A \cup \empty = A A=A
  • 幂等律 (Idempotency laws): A ∩ A = A A \cap A = A AA=A A ∪ A = A A \cup A = A AA=A
  • 交换律 (Commutative laws): A ∩ B = B ∩ A A \cap B = B \cap A AB=BA A ∪ B = B ∪ A A \cup B = B \cup A AB=BA
  • 结合律 (Associative laws): 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 ) ∪ C A \cup (B \cup C) = (A \cup B) \cup C A(BC)=(AB)C
  • 分配律 (Distributive laws):
    A ∩ ( B ∪ C ) = ( A ∩ B ) ∪ ( A ∩ C ) , A ∪ ( B ∩ C ) = ( A ∪ B ) ∩ ( A ∪ C ) . \begin{matrix}A \cap (B \cup C) = (A \cap B) \cup (A \cap C), \\A \cup (B \cap C) = (A \cup B) \cap (A \cup C).\end{matrix} A(BC)=(AB)(AC),A(BC)=(AB)(AC).   (B.1)
  • 吸收律 (Absorption laws): A ∩ ( A ∪ B ) = A A \cap (A \cup B) = A A(AB)=A A ∪ ( A ∩ B ) = A A \cup (A \cap B) = A A(AB)=A
  • 德摩根律 (DeMorgan’s laws):
    A − ( B ∩ C ) = ( A − B ) ∪ ( A − C ) , A − ( B ∪ C ) = ( A − B ) ∩ ( A − C ) . \begin{matrix}A - (B \cap C) = (A - B) \cup (A - C), \\A - (B \cup C) = (A - B) \cap (A - C).\end{matrix} A(BC)=(AB)(AC),A(BC)=(AB)(AC).   (B.2)

通常,所考虑的所有集合都是被称为全集 (universe) 的某个较大集合 U U U 的子集。
给定一个全集 U U U,定义集合 A A A补集 (complement) 为 A ‾ = U − A = { x : x ∈ U   且   x ∉ A } \overline{A} = U-A = \{x: x \in U \ 且 \ x \notin A\} A=UA={x:xU  x/A}

对于任意集合 A ⊆ U A \sube U AU,有如下定律:
A ‾ ‾ = A \overline{\overline{A}} = A A=A A ∩ A ‾ = ∅ A \cap \overline{A} = \empty AA= A ∪ A ‾ = U A \cup \overline{A} = U AA=U

德摩根律用补集形式表示:对任意集合 B , C ⊆ U B,C \sube U B,CU,有
B ∩ C ‾ = B ‾ ∪ C ‾ \overline{B \cap C} = \overline{B} \cup \overline{C} BC=BC B ∪ C ‾ = B ‾ ∩ C ‾ \overline{B \cup C} = \overline{B} \cap \overline{C} BC=BC

如果两个集合 A A A B B B 没有公共元素,即 A ∩ B = ∅ A \cap B = \empty AB=,则 A A A B B B不相交的 (disjoint)。

由非空集合组成的集合 S = { S i } \mathcal{S} = \{S_i\} S={Si} 形成集合 S S S 的一个划分 (partition),满足条件:

  • 集合两两不相交 (pairwise disjoint),即 S i , S j ∈ S S_i, S_j \in \mathcal{S} Si,SjS i ≠ j i \ne j i=j,蕴含 S i ∩ S j = ∅ S_i \cap S_j = \empty SiSj=
  • 它们的并是 S S S,即 S = ⋃ S i ∈ S S i S = \bigcup \limits_{S_i \in \mathcal{S}} S_i S=SiSSi

换言之,如果 S S S 中的每个元素仅出现在一个 S i ∈ S S_i \in \mathcal{S} SiS 中,那么 S \mathcal{S} S 是集合 S S S 的一个划分。

集合中元素的个数是集合的基数 (cardinality) 或大小 (size),记为 ∣ S ∣ |S| S ∣ ∅ ∣ = 0 |\empty| = 0 =0
如果集合的基数是一个自然数,则称该集合是有限的 (finite);否则,它是无限的 (infinite)。
一个可以跟自然数集合 N \N N 形成一一对应的无限集合是可数无限的 (countably infinite);否则,它是不可数的 (uncountable)。
例,整数集 Z \Z Z 是可数的,实数集 R \R R 是不可数的。

对任意两个有限集合 A A A B B B,有
∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ |A \cup B| = |A| + |B| - |A \cap B| AB=A+BAB。   (B.3)

一个有 n n n 个元素的有限集合有时称为 n维集 (n-set)。一个 1 维集称为单元集 (singleton)。一个集合的 k k k 个元素的子集称为 k子集 (k-subset)。

集合 S S S 的所有子集的集合,包括空集和 S S S 本身,表示为 2 S 2^S 2S,称为 S S S幂集 (power set)。
有限集 S S S 的幂集的基数是 2 ∣ S ∣ 2^{|S|} 2S

两个元素 a a a b b b有序对 (ordered pair) 表示为 ( a , b ) (a,b) (a,b),定义为集合 ( a , b ) = { a , { a , b } } (a,b) = \{a, \{a,b\}\} (a,b)={a,{a,b}}

两个集合 A A A B B B笛卡尔积 (Cartesian product) 表示为 A × B A \times B A×B,是所有有序对的集合,对中的第一个元素是 A A A 的元素,第二个是 B B B 的元素。
A × B = { ( a , b ) : a ∈ A   且   b ∈ B } A \times B = \{(a,b): a \in A \ 且 \ b \in B \} A×B={(a,b):aA  bB}

A A A B B B 是有限集时,它们笛卡尔积的基数是
∣ A × B ∣ = ∣ A ∣ ⋅ ∣ B ∣ |A \times B| = |A| \cdot |B| A×B=AB。     (B.4)

n n n 个集合 A 1 , A 2 , … , A n A_1, A_2, \dots,A_n A1,A2,,An 的笛卡尔积是 n元组 (n-tuples) 的集合:
A 1 × A 2 × ⋯ × A n = { ( a 1 , a 2 , … , a n ) : a i ∈ A i  for  i = 1 , 2 , … , n } A_1\times A_2\times \dots \times A_n = \{(a_1,a_2,\dots,a_n): a_i \in A_i \ \text{for} \ i = 1,2,\dots,n \} A1×A2××An={(a1,a2,,an):aiAi for i=1,2,,n}
它的基数是 ∣ A 1 × A 2 × ⋯ × A n ∣ = ∣ A 1 ∣ ⋅ ∣ A 2 ∣ ⋯ ∣ A n ∣ |A_1\times A_2\times \dots \times A_n| = |A_1|\cdot |A_2| \cdots |A_n| A1×A2××An=A1A2An

练习

B.1-1 画出文氏图 (Venn diagram) 来说明分配律 (B.1) 的第一个公式。
解: 如下图:
分配律文氏图

B.1-2 证明德摩根律可以推广到集合的任何有限集合:
A 1 ∩ A 2 ∩ ⋯ ∩ A n ‾ = A 1 ‾ ∪ A 2 ‾ ∪ ⋯ ∪ A n ‾ \overline{A_1 \cap A_2 \cap \dots \cap A_n} = \overline{A_1} \cup \overline{A_2} \cup \cdots \cup \overline{A_n} A1A2An=A1A2An
A 1 ∪ A 2 ∪ ⋯ ∪ A n ‾ = A 1 ‾ ∩ A 2 ‾ ∩ ⋯ ∩ A n ‾ \overline{A_1 \cup A_2 \cup \dots \cup A_n} = \overline{A_1} \cap \overline{A_2} \cap \cdots \cap \overline{A_n} A1A2An=A1A2An

证: A 1 ∩ A 2 ∩ ⋯ ∩ A n ‾ = A 1 ‾ ∪ A 2 ∩ A 3 ∩ ⋯ ∩ A n ‾ = A 1 ‾ ∪ A 2 ‾ ∪ A 3 ∩ ⋯ ∩ A n ‾ = ⋯ = A 1 ‾ ∪ A 2 ‾ ∪ ⋯ ∪ A n ‾ \overline{A_1 \cap A_2 \cap \dots \cap A_n} = \overline{A_1} \cup \overline{A_2 \cap A_3 \cap \cdots \cap A_n} = \overline{A_1} \cup \overline{A_2} \cup \overline{A_3 \cap \cdots \cap A_n} = \cdots = \overline{A_1} \cup \overline{A_2} \cup \cdots \cup \overline{A_n} A1A2An=A1A2A3An=A1A2A3An==A1A2An
A 1 ∪ A 2 ∪ ⋯ ∪ A n ‾ = A 1 ‾ ∩ A 2 ∪ A 3 ∪ ⋯ ∪ A n ‾ = A 1 ‾ ∩ A 2 ‾ ∩ A 3 ∪ ⋯ ∪ A n ‾ = ⋯ = A 1 ‾ ∩ A 2 ‾ ∩ ⋯ ∩ A n ‾ \overline{A_1 \cup A_2 \cup \dots \cup A_n} = \overline{A_1} \cap \overline{A_2 \cup A_3 \cup \cdots \cup A_n} = \overline{A_1} \cap \overline{A_2} \cap \overline{A_3 \cup \cdots \cup A_n} = \cdots = \overline{A_1} \cap \overline{A_2} \cap \cdots \cap \overline{A_n} A1A2An=A1A2A3An=A1A2A3An==A1A2An

B.1-3 ★ \bigstar 证明等式 (B.3) 的推广,这称为容斥原理 (principle of inclusion and exclusion):
∣ A 1 ∪ A 2 ∪ ⋯ ∪ A n ∣ = ∣ A 1 ∣ + ∣ A 2 ∣ + ⋯ + ∣ A n ∣ − ∣ A 1 ∩ A 2 ∣ − ∣ A 1 ∩ A 3 ∣ − ⋯ |A_1 \cup A_2 \cup \cdots \cup A_n| = \\ \quad |A_1| + |A_2| + \dots + |A_n| \\ \quad - |A_1 \cap A_2| - |A_1 \cap A_3| - \cdots A1A2An=A1+A2++AnA1A2A1A3 (所有对)
+ ∣ A 1 ∩ A 2 ∩ A 3 ∣ + ⋯ \quad + |A_1 \cap A_2 \cap A_3| + \cdots +A1A2A3+    (所有三元组)
⋮ \qquad \qquad \vdots
+ ( − 1 ) n − 1 ∣ A 1 ∩ A 2 ∩ ⋯ ∩ A n ∣ \quad + (-1)^{n-1}|A_1 \cap A_2 \cap \cdots \cap A_n| +(1)n1A1A2An

证: ∣ A 1 ∪ A 2 ∪ ⋯ ∪ A n ∣ = ∣ A 1 ∣ + ∣ A 2 ∪ ⋯ ∪ A n ∣ − ∣ A 1 ∩ ( A 2 ∪ ⋯ ∪ A n ) ∣ |A_1 \cup A_2 \cup \cdots \cup A_n| = |A_1| + |A_2 \cup \cdots \cup A_n| - |A_1 \cap (A_2 \cup \cdots \cup A_n)| A1A2An=A1+A2AnA1(A2An)
根据分配律,得 A 1 ∩ ( A 2 ∪ ⋯ ∪ A n ) = ( A 1 ∩ A 2 ) ∪ ( A 1 ∩ A 2 ) ∪ ⋯ ∪ ( A 1 ∩ A n ) A_1 \cap (A_2 \cup \cdots \cup A_n) = (A_1 \cap A_2) \cup (A_1 \cap A_2) \cup \cdots \cup (A_1 \cap A_n) A1(A2An)=(A1A2)(A1A2)(A1An)
所以, ∣ A 1 ∩ ( A 2 ∪ ⋯ ∪ A n ) ∣ = ∣ A 1 ∩ A 2 ∣ + ∣ ( A 1 ∩ A 2 ) ∪ ⋯ ∪ ( A 1 ∩ A n ) ∣ − ∣ ( A 1 ∩ A 2 ) ∩ ( ( A 1 ∩ A 2 ) ∪ ⋯ ∪ ( A 1 ∩ A n ) ) ∣ |A_1 \cap (A_2 \cup \cdots \cup A_n)| = |A_1 \cap A_2| + |(A_1 \cap A_2) \cup \cdots \cup (A_1 \cap A_n)| - |(A_1 \cap A_2) \cap ((A_1 \cap A_2) \cup \cdots \cup (A_1 \cap A_n))| A1(A2An)=A1A2+(A1A2)(A1An)(A1A2)((A1A2)(A1An))
依次类推,得证。

B.1-4 证明奇数自然数集合是可数的。
证: 奇自然数集合可以表示为 { 2 x + 1 : x ∈ N } \{2x+1: x \in \N\} {2x+1:xN},可以跟自然数集合 N \N N 形成一一对应,所以是可数的。

B.1-5 证明:对任意有限集合 S S S,其幂集 2 S 2^S 2S 2 ∣ S ∣ 2^{|S|} 2S 个元素,即集合 S S S 2 ∣ S ∣ 2^{|S|} 2S 个不同的子集。
证: 对于 S S S 的某个子集来说, S S S 的每个元素有 2 种情况:在子集中、不在子集中。而 S S S 共有 ∣ S ∣ |S| S 个元素。
所以,集合 S S S 2 ∣ S ∣ 2^{|S|} 2S 个不同的子集。

B.1-6 通过扩展有序对的集合理论定义,给出 n元组的归纳定义。
解: n元组 T n T_n Tn 的定义如下:
T n = { A 1 if  n = 1 , T n − 1 × A n if  n > 1. T_n = \begin{cases} A_1 \quad \text{if}\ n=1, \\ T_{n-1} \times A_n \quad \text{if} \ n > 1. \end{cases} Tn={A1if n=1,Tn1×Anif n>1.
其中, A i A_i Ai i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n)是集合。


B.2 关系

两个集合 A A A B B B 上的二元关系 (binary relation) R R R 是笛卡尔积 A × B A \times B A×B 的一个子集。如果 ( a , b ) ∈ R (a,b) \in R (a,b)R,可写作 a   R   b a\ R\ b a R b R R R 是集合 A A A 上的二元关系,意味着 R R R A × A A \times A A×A 的一个子集。
例,自然数集上的“小于”关系是集合 { ( a , b ) : a , b ∈ N , a < b } \{(a,b): a,b \in \N, a<b\} {(a,b):a,bN,a<b}
集合 A 1 , A 2 , . . . , A n A_1, A_2, ..., A_n A1,A2,...,An 上的 n n n 元关系是 A 1 × A 2 × ⋯ × A n A_1 \times A_2 \times \cdots \times A_n A1×A2××An 的一个子集。

若对于所有的 a ∈ A a \in A aA,有 a   R   a a\ R\ a a R a,则称二元关系 R ⊆ A × A R \sube A \times A RA×A自反的(reflexive)。例如,“ = = =” 和 “ ≤ \le ” 是 N \N N 上的自反关系,但 “ < < <” 不是。

若对于所有的 a , b ∈ A a,b \in A a,bA a   R   b a \ R \ b a R b 蕴含 b   R   a b \ R \ a b R a,则称关系 R R R对称的(symmetric)。例如,“ = = =” 是对称的,但 “ ≤ \le ” 和“ < < <” 不是。

若对于所有的 a , b , c ∈ A a,b,c \in A a,b,cA a   R   b a \ R \ b a R b b   R   c b \ R\ c b R c 蕴含 a   R   c a \ R \ c a R c,则称关系 R R R传递的(transitive)。例如,“ = = =”,“ ≤ \le ” 和 “ < < <” 是传递的,但关系 R = { ( a , b ) : a , b ∈ N , a = b − 1 } R=\{(a,b):a,b \in \N, a = b-1 \} R={(a,b):a,bN,a=b1} 不是。

如果一个关系是自反的,对称的,传递的,那么称其为等价关系(equivalence relation)。
如果 R R R 是集合 A A A 上的等价关系,那么对 a ∈ A a \in A aA a a a等价类(equivalence class)是集合 [ a ] = { b ∈ A : a   R   b } [a] = \{b \in A: a\ R\ b \} [a]={bA:a R b}

定理 B.1 (等价关系相当于划分)
集合 A A A 上任一等价关系的等价类构成一个对 A A A 的划分, A A A 上的任一划分确定 A A A 上的一个等价关系,划分中的集合是等价类。

证明: ① 证明 R R R 的等价类是非空的、两两不相交的集合,且它们的并集是 A A A
因为 R R R 是自反的, a ∈ [ a ] a \in [a] a[a],所以等价类非空;又因每个元素 a ∈ A a \in A aA 属于等价类 [ a ] [a] [a],等价类的并集是 A A A
现在证明等价类两两不相交,即,如果等价类 [ a ] [a] [a] [ b ] [b] [b] 有一个共同的元素 c c c,那么它们是相同的集合。
假设 a   R   c a \ R \ c a R c b   R   c b \ R\ c b R c,由对称性,得 c   R   b c \ R \ b c R b,由传递性,得 a   R   b a \ R \ b a R b。因此,对任意元素 x ∈ [ a ] x \in [a] x[a],有 x   R   a x \ R \ a x R a,由传递性,得 x   R   b x \ R \ b x R b,所以 [ a ] ⊆ [ b ] [a] \sube [b] [a][b]。类似可得 [ b ] ⊆ [ a ] [b] \sube [a] [b][a],因此, [ a ] = [ b ] [a] = [b] [a]=[b]
② 设 A = { A i } \mathcal{A} = \{ A_i \} A={Ai} A A A 的一个划分,定义 R = { ( a , b ) : R = \{(a,b): R={(a,b): 存在 i i i 使 a ∈ A i , b ∈ A i } a \in A_i, b \in A_i \} aAi,bAi}
现在证明 R R R A A A 上的等价关系。
因为 a ∈ A i a \in A_i aAi 推出 a   R   a a \ R \ a a R a,自反性成立。
如果 a   R   b a \ R \ b a R b,那么 a a a b b b 在同一个集合 A i A_i Ai 中,得 b   R   a b \ R \ a b R a,对称性成立。
如果 a   R   b a \ R \ b a R b b   R   c b \ R \ c b R c,那么这三个元素都在同一个集合 A i A_i Ai 中,得 a   R   c a \ R \ c a R c,传递性成立。
如果 a ∈ A i a \in A_i aAi,那么 x ∈ [ a ] x \in [a] x[a] 推出 x ∈ A i x \in A_i xAi,且 x ∈ A i x \in A_i xAi 推出 x ∈ [ a ] x \in [a] x[a];可见划分中的集合是 R R R 的等价类。

如果 a   R   b a \ R \ b a R b b   R   a b \ R \ a b R a 推出 a = b a=b a=b,那么集合 A A A 上的二元关系是反对称的(antisymmetric)。例如,自然数集上的“ ≤ \le ”关系是反对称的。
一个具有自反、反对称和传递性质的关系是偏序(partial order)。具有偏序的集合称为偏序集(partially ordered set)。
在偏序集合 A A A 中,可能没有单独的“最大”元素 a a a,使得对所有 b ∈ A b \in A bA,有 b   R   a b \ R \ a b R a。相反,集合可能包含几个最大的(maximal)元素 a a a,使得没有 b ∈ A b \in A bA a ≠ b a \ne b a=b,满足 a   R   b a\ R\ b a R b

如果对于所有 a , b ∈ A a,b \in A a,bA,有 a   R   b a \ R \ b a R b 或者 b   R   a b \ R \ a b R a(或者两者皆有),即 A A A 中的每对元素都满足关系 R R R,那么集合 A A A 上的关系 R R R全关系(total relation)。
如果一个偏序也是全关系,那么它是全序(total order)或线性序(linear order)。
一个全关系是传递的,但不一定是自反的和反对称的,是一个全先序(total preorder)。

练习

B.2-1 证明: Z \Z Z 的所有子集上的子集关系“ ⊆ \sube ”是偏序,但不是全序。
证: Z \Z Z 的任意子集 A i A_i Ai,有 A i ⊆ A i A_i \sube A_i AiAi,自反性成立。
Z \Z Z 的任意子集 A i , A j A_i, A_j Ai,Aj,如果 A i ⊆ A j A_i \sube A_j AiAj A j ⊆ A i A_j \sube A_i AjAi,得 A i = A j A_i = A_j Ai=Aj,反对称性成立。
Z \Z Z 的任意子集 A i , A j A_i, A_j Ai,Aj A k A_k Ak,如果 A i ⊆ A j A_i \sube A_j AiAj A j ⊆ A k A_j \sube A_k AjAk,得 A i ⊆ A k A_i \sube A_k AiAk,传递性成立。
所以, Z \Z Z 的所有子集上的子集关系“ ⊆ \sube ”是偏序。

Z \Z Z 的子集 A = { 1 , 2 } A = \{1,2\} A={1,2} B = { 3 , 4 } B = \{3,4\} B={3,4} A ⊆ B A \sube B AB 不成立,且 B ⊆ A B \sube A BA 不成立,所以关系“ ⊆ \sube ”不是全序。

B.2-2 证明对任意正整数 n n n,关系“等价模 n n n”是整数上的等价关系。(如果存在一个整数 q q q 满足 a − b = q n a - b = qn ab=qn,则称 a ≡ b ( m o d n ) a \equiv b \pmod n ab(modn)。)这个关系将整数划分成什么样的等价类?
解: 这个关系将整数划分成等价类 S = { S i } \mathcal{S} = \{S_i\} S={Si}
S i = { x : x m o d    n = i , x ∈ N + } S_i = \{x : x \mod n = i, x \in \N+ \} Si={x:xmodn=i,xN+},其中 i = 0 , 1 , 2 , . . . , n − 1 i = 0,1,2,..., n-1 i=0,1,2,...,n1

B.2-3 给出满足下面关系的例子:
a. 自反的、对称的,但不是传递的;
b. 自反的、传递的,但不是对称的;
c. 对称的、传递的,但不是自反的;

解: a. 集合 A = { 1 , 2 , 3 , 4 } A=\{1,2,3,4\} A={1,2,3,4},关系 R = { ( 1 , 1 ) , ( 1 , 2 ) , ( 1 , 4 ) , ( 2 , 1 ) , ( 2 , 2 ) , ( 3 , 3 ) , ( 4 , 1 ) , ( 4 , 4 ) } R = \{(1,1), (1,2),(1,4),(2,1),(2,2),(3,3),(4,1),(4,4)\} R={(1,1),(1,2),(1,4),(2,1),(2,2),(3,3),(4,1),(4,4)}
因为 ( 4 , 1 ) ∈ R , ( 1 , 2 ) ∈ R (4,1) \in R, (1,2) \in R (4,1)R,(1,2)R,但 ( 4 , 2 ) ∉ R (4,2) \notin R (4,2)/R,所以 R R R 不是传递的。
b. 整数集合上的关系: < < < ≤ \le > > > ≥ \ge 等。
c. 集合 A = { 1 , 2 , 3 } A = \{1, 2, 3\} A={1,2,3},关系 R = { ( 1 , 2 ) , ( 2 , 1 ) , ( 1 , 1 ) , ( 2 , 2 ) } R = \{(1, 2), (2,1),(1,1),(2,2)\} R={(1,2),(2,1),(1,1),(2,2)}

B.2-4 S S S 是一个有限集, R R R S × S S \times S S×S 上的等价关系。证明:如果 R R R 是反对称的,那么关于 R R R S S S 的等价类都是单元集。
证: 因为 R R R 是等价关系,所以 R R R 是自反的、对称的、传递的。
假设 S S S 的等价类中某个集合 S i S_i Si 中存在 2 个不同的元素 a a a b b b,则 a   R   b a \ R \ b a R b
因为 R R R 是对称的,所以 b   R   a b \ R \ a b R a
又因为 R R R 是反对称的,所以 a = b a = b a=b
与集合不能包含相同的元素相矛盾,所以集合 S i S_i Si 中只有一个元素,得证。

B.2-5 Narcissus 教授宣称如果关系 R R R 是对称的、传递的,那么它也是自反的。他给出以下证明。根据对称性, a   R   b a \ R \ b a R b 推出 b   R   a b \ R \ a b R a。因此根据传递性,推出 a   R   a a \ R \ a a R a。教授是正确的吗?
解: 不正确。
见 练习B.2-3 中(c)的例子,对于集合元素 3 ∈ A 3 \in A 3A,但 ( 3 , 3 ) ∉ R (3,3) \notin R (3,3)/R,所以不是自反的。


B.3 函数

给定两个集合 A A A B B B函数 (function) f f f A A A B B B 上的二元关系,且对所有 a ∈ A a \in A aA,正好存在一个 b ∈ B b \in B bB 使得 ( a , b ) ∈ f (a,b) \in f (a,b)f
集合 A A A 被称为 f f f定义域 (domain),集合 B B B 被称为 f f f值域 (codomain)。
有时写作 f : A → B f: A \to B f:AB;如果 ( a , b ) ∈ f (a,b) \in f (a,b)f,因为 b b b a a a 的选择唯一确定,可写作 b = f ( a ) b = f(a) b=f(a)

直观上,函数 f f f B B B 的元素分配给 A A A 的每个元素。没有 A A A 的元素被分配 B B B 的两个不同元素,但是 B B B 的相同元素可以分配给 A A A 的两个不同的元素。

给定一个函数 f : A → B f: A \to B f:AB,如果 b = f ( a ) b = f(a) b=f(a),则称 a a a f f f参数 (argument), b b b f f f a a a 处的 (value)。
可以通过说明函数在其定义域中每个元素的值来定义函数。例如,定义 f ( n ) = 2 n f(n) = 2n f(n)=2n n ∈ N n \in \N nN,这表示 f = { ( n , 2 n ) : n ∈ N } f = \{ (n, 2n): n \in \N \} f={(n,2n):nN}
如果两个函数 f f f g g g 有相同的定义域和值域,且对定义域内的所有 a a a,有 f ( a ) = g ( a ) f(a) = g(a) f(a)=g(a),则 f f f g g g 相等 (equal)。

长度为 n n n有限序列 (finite sequence) 是一个函数 f f f,其定义域是 n n n 个整数集合 { 0 , 1 , … , n − 1 } \{ 0, 1, \dots, n-1\} {0,1,,n1}
通常通过列出它的值表示有限序列: < f ( 0 ) , f ( 1 ) , … , f ( n − 1 ) > <f(0), f(1), \dots, f(n-1)> <f(0),f(1),,f(n1)>
无限序列 (infinite sequence) 是一个函数,其定义域是自然数集合 N \N N。例如,Fibonacci 序列 < 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , ⋯ > <0,1,1,2,3,5,8,13,\dots> <0,1,1,2,3,5,8,13,>

当函数 f f f 的定义域是笛卡尔积时,通常省略 f f f 参数两边的括号。
例如,函数 f : A 1 × A 2 × ⋯ × A n → B f: A_1 \times A_2 \times \cdots \times A_n \to B f:A1×A2××AnB,写成 b = f ( a 1 , a 2 , … , a n ) b = f(a_1,a_2, \dots, a_n) b=f(a1,a2,,an),替代 b = f ( ( a 1 , a 2 , … , a n ) ) b = f((a_1,a_2, \dots, a_n)) b=f((a1,a2,,an))
可以称每个 a i a_i ai f f f 的一个参数,尽管 f f f 的参数实际上是一个 n元组 ( a 1 , a 2 , … , a n ) (a_1,a_2, \dots, a_n) (a1,a2,,an)

如果 f : A → B f:A \to B f:AB 是函数,且 b = f ( a ) b = f(a) b=f(a),那么有时称 b b b a a a f f f 下的 (image)。
f f f 下集合 A ′ ⊆ A A' \sube A AA 的像定义为 f ( A ′ ) = { b ∈ B : b = f ( a ) , f(A') = \{b \in B : b = f(a), f(A)={bB:b=f(a), 对某个 a ∈ A ′ } a \in A' \} aA}
f f f范围 (range) 是其定义域的像,即 f ( A ) f(A) f(A)

如果函数的范围是其值域,那么函数是满射 (surjection)。
满射 f : A → B f: A \to B f:AB 有时称为将 A A A 映射到 B B B (mapping A A A onto B B B)。当称 f f fonto,是指满射。

如果函数 f : A → B f:A \to B f:AB 中不同的参数生成不同的值,即 a ≠ a ′ a \ne a' a=a 蕴含 f ( a ) ≠ f ( a ′ ) f(a) \ne f(a') f(a)=f(a),则称函数 f f f单射 (injection)。单射有时称为一对一 (one-to-one) 函数。

如果函数 f : A → B f:A \to B f:AB 是单射,且是满射,则称其为双射 (bijection)。

双射有时被称为一一对应 (one-to-one correspondence),因为它将定义域和值域中的元素配对。
从集合 A A A 到它自身的双射有时称为置换 (permutation)。

当函数 f f f 是双射,定义它的 (inverse) 为 f − 1 f^{-1} f1
f − 1 ( b ) = a f^{-1}(b) = a f1(b)=a 当且仅当 f ( a ) = b f(a) = b f(a)=b

练习

B.3-1 A A A B B B 是有限集合,令 f : A → B f: A \to B f:AB 是一个函数,证明
a. 如果 f f f 是单射,那么 ∣ A ∣ ≤ ∣ B ∣ |A| \le |B| AB
b. 如果 f f f 是满射,那么 ∣ A ∣ ≥ ∣ B ∣ |A| \ge |B| AB

证: a. 单射:任选元素 a , b ∈ A a,b \in A a,bA,若 a ≠ b a \ne b a=b,则 f ( a ) ≠ f ( b ) f(a) \ne f(b) f(a)=f(b)。所以 B B B 中至少有 ∣ A ∣ |A| A 个不同的元素。
b. 满射:对于所有的 b ∈ B b \in B bB,至少有一个 a ∈ A a \in A aA,使得 f ( a ) = b f(a) = b f(a)=b。而根据函数的定义,不能有多个 b b b 对应一个 a a a

B.3-2 当定义域和值域都是 N \N N 时,函数 f ( x ) = x + 1 f(x) = x+1 f(x)=x+1 是双射吗?当定义域和值域都是 Z \Z Z 时,是双射吗?
解: 当定义域和值域都是 N \N N 时,不是双射。因为不存在 x ∈ N x \in \N xN,使得 f ( x ) = 0 f(x) = 0 f(x)=0,所以函数 f f f 不是满射,所以不是双射。
当定义域和值域都是 Z \Z Z 时,是双射。

B.3-3 给出二元关系的逆的自然定义,使得如果关系实际上是双射函数,则其关系逆就是其函数逆。
解: 集合 A A A B B B 上的二元关系 R = { ( a , b ) : a ∈ A , b ∈ B } R = \{ (a,b): a \in A, b \in B\} R={(a,b):aA,bB}
二元关系的逆为 R − 1 = { ( b , a ) : a ∈ A , b ∈ B } R^{-1} = \{(b,a): a \in A, b\in B\} R1={(b,a):aA,bB}

B.3-4 ★ \bigstar 给出一个从 Z \Z Z Z × Z \Z \times \Z Z×Z 的双射。
解:


学习笔记目录:【算法导论】目录

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值