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
x∈S。如果
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
x∈A 蕴含
x
∈
B
x \in B
x∈B,则称
A
A
A 是
B
B
B 的子集(subset),写作
A
⊆
B
A \sube B
A⊆B。
如果
A
⊆
B
A \sube B
A⊆B 但
A
≠
B
A \ne B
A=B,则
A
A
A 是
B
B
B 的真子集(proper subset),写作
A
⊂
B
A \sub B
A⊂B。
对任意集合
A
A
A,有
A
⊆
A
A \sube A
A⊆A。
对于两个集合
A
A
A 和
B
B
B,当且仅当
A
⊆
B
A \sube B
A⊆B 且
B
⊆
A
B \sube A
B⊆A 时,有
A
=
B
A=B
A=B。
对于任意 3 个集合
A
A
A、
B
B
B 和
C
C
C,如果
A
⊆
B
A \sube B
A⊆B 且
B
⊆
C
B \sube C
B⊆C,则
A
⊆
C
A \sube C
A⊆C。
对于任意集合
A
A
A,有
∅
⊆
A
\empty \sube A
∅⊆A。
有时可以通过其他集合来定义集合。给定一个集合
A
A
A,可以定义集合
B
⊆
A
B \sube A
B⊆A,通过陈述属性来区分
B
B
B 中的元素。
例,定义偶数集合为
{
x
:
x
∈
Z
\{x : x \in \Z
{x:x∈Z 且
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 \} A∩B={x:x∈A 且 x∈B} |
并集(union) | A ∪ B = { x : x ∈ A 或 x ∈ B } A \cup B = \{ x: x \in A \ 或 \ x \in B \} A∪B={x:x∈A 或 x∈B} |
差集(difference) | A − B = { x : x ∈ A 且 x ∉ B } A - B = \{ x: x \in A \ 且 \ x \notin B \} A−B={x:x∈A 且 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 A∩A=A, A ∪ A = A A \cup A = A A∪A=A。
- 交换律 (Commutative laws): A ∩ B = B ∩ A A \cap B = B \cap A A∩B=B∩A, A ∪ B = B ∪ A A \cup B = B \cup A A∪B=B∪A。
- 结合律 (Associative laws): 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 ) ∪ C A \cup (B \cup C) = (A \cup B) \cup C A∪(B∪C)=(A∪B)∪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∩(B∪C)=(A∩B)∪(A∩C),A∪(B∩C)=(A∪B)∩(A∪C). (B.1) - 吸收律 (Absorption laws): A ∩ ( A ∪ B ) = A A \cap (A \cup B) = A A∩(A∪B)=A, A ∪ ( A ∩ B ) = A A \cup (A \cap B) = A A∪(A∩B)=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−(B∩C)=(A−B)∪(A−C),A−(B∪C)=(A−B)∩(A−C). (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=U−A={x:x∈U 且 x∈/A}。
对于任意集合
A
⊆
U
A \sube U
A⊆U,有如下定律:
A
‾
‾
=
A
\overline{\overline{A}} = A
A=A,
A
∩
A
‾
=
∅
A \cap \overline{A} = \empty
A∩A=∅,
A
∪
A
‾
=
U
A \cup \overline{A} = U
A∪A=U。
德摩根律用补集形式表示:对任意集合
B
,
C
⊆
U
B,C \sube U
B,C⊆U,有
B
∩
C
‾
=
B
‾
∪
C
‾
\overline{B \cap C} = \overline{B} \cup \overline{C}
B∩C=B∪C,
B
∪
C
‾
=
B
‾
∩
C
‾
\overline{B \cup C} = \overline{B} \cap \overline{C}
B∪C=B∩C。
如果两个集合 A A A 和 B B B 没有公共元素,即 A ∩ B = ∅ A \cap B = \empty A∩B=∅,则 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,Sj∈S 且 i ≠ j i \ne j i=j,蕴含 S i ∩ S j = ∅ S_i \cap S_j = \empty Si∩Sj=∅;
- 它们的并是 S S S,即 S = ⋃ S i ∈ S S i S = \bigcup \limits_{S_i \in \mathcal{S}} S_i S=Si∈S⋃Si。
换言之,如果 S S S 中的每个元素仅出现在一个 S i ∈ S S_i \in \mathcal{S} Si∈S 中,那么 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|
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣。 (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|}
2∣S∣。
两个元素 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):a∈A 且 b∈B}。
当
A
A
A 和
B
B
B 是有限集时,它们笛卡尔积的基数是
∣
A
×
B
∣
=
∣
A
∣
⋅
∣
B
∣
|A \times B| = |A| \cdot |B|
∣A×B∣=∣A∣⋅∣B∣。 (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):ai∈Ai 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∣=∣A1∣⋅∣A2∣⋯∣An∣。
练习
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}
A1∩A2∩⋯∩An=A1∪A2∪⋯∪An,
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}
A1∪A2∪⋯∪An=A1∩A2∩⋯∩An。
证:
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}
A1∩A2∩⋯∩An=A1∪A2∩A3∩⋯∩An=A1∪A2∪A3∩⋯∩An=⋯=A1∪A2∪⋯∪An,
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}
A1∪A2∪⋯∪An=A1∩A2∪A3∪⋯∪An=A1∩A2∩A3∪⋯∪An=⋯=A1∩A2∩⋯∩An。
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
∣A1∪A2∪⋯∪An∣=∣A1∣+∣A2∣+⋯+∣An∣−∣A1∩A2∣−∣A1∩A3∣−⋯ (所有对)
+
∣
A
1
∩
A
2
∩
A
3
∣
+
⋯
\quad + |A_1 \cap A_2 \cap A_3| + \cdots
+∣A1∩A2∩A3∣+⋯ (所有三元组)
⋮
\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)n−1∣A1∩A2∩⋯∩An∣
证:
∣
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)|
∣A1∪A2∪⋯∪An∣=∣A1∣+∣A2∪⋯∪An∣−∣A1∩(A2∪⋯∪An)∣,
根据分配律,得
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∩(A2∪⋯∪An)=(A1∩A2)∪(A1∩A2)∪⋯∪(A1∩An),
所以,
∣
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∩(A2∪⋯∪An)∣=∣A1∩A2∣+∣(A1∩A2)∪⋯∪(A1∩An)∣−∣(A1∩A2)∩((A1∩A2)∪⋯∪(A1∩An))∣。
依次类推,得证。
B.1-4 证明奇数自然数集合是可数的。
证: 奇自然数集合可以表示为
{
2
x
+
1
:
x
∈
N
}
\{2x+1: x \in \N\}
{2x+1:x∈N},可以跟自然数集合
N
\N
N 形成一一对应,所以是可数的。
B.1-5 证明:对任意有限集合
S
S
S,其幂集
2
S
2^S
2S 有
2
∣
S
∣
2^{|S|}
2∣S∣ 个元素,即集合
S
S
S 有
2
∣
S
∣
2^{|S|}
2∣S∣ 个不同的子集。
证: 对于
S
S
S 的某个子集来说,
S
S
S 的每个元素有 2 种情况:在子集中、不在子集中。而
S
S
S 共有
∣
S
∣
|S|
∣S∣ 个元素。
所以,集合
S
S
S 有
2
∣
S
∣
2^{|S|}
2∣S∣ 个不同的子集。
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,Tn−1×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,b∈N,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 a∈A,有 a R a a\ R\ a a R a,则称二元关系 R ⊆ A × A R \sube A \times A R⊆A×A 是自反的(reflexive)。例如,“ = = =” 和 “ ≤ \le ≤” 是 N \N N 上的自反关系,但 “ < < <” 不是。
若对于所有的 a , b ∈ A a,b \in A a,b∈A, 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,c∈A, 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,b∈N,a=b−1} 不是。
如果一个关系是自反的,对称的,传递的,那么称其为等价关系(equivalence relation)。
如果
R
R
R 是集合
A
A
A 上的等价关系,那么对
a
∈
A
a \in A
a∈A,
a
a
a 的等价类(equivalence class)是集合
[
a
]
=
{
b
∈
A
:
a
R
b
}
[a] = \{b \in A: a\ R\ b \}
[a]={b∈A: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
a∈A 属于等价类
[
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 \}
a∈Ai,b∈Ai}。
现在证明
R
R
R 是
A
A
A 上的等价关系。
因为
a
∈
A
i
a \in A_i
a∈Ai 推出
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
a∈Ai,那么
x
∈
[
a
]
x \in [a]
x∈[a] 推出
x
∈
A
i
x \in A_i
x∈Ai,且
x
∈
A
i
x \in A_i
x∈Ai 推出
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
b∈A,有
b
R
a
b \ R \ a
b R a。相反,集合可能包含几个最大的(maximal)元素
a
a
a,使得没有
b
∈
A
b \in A
b∈A 且
a
≠
b
a \ne b
a=b,满足
a
R
b
a\ R\ b
a R b。
如果对于所有
a
,
b
∈
A
a,b \in A
a,b∈A,有
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
Ai⊆Ai,自反性成立。
对
Z
\Z
Z 的任意子集
A
i
,
A
j
A_i, A_j
Ai,Aj,如果
A
i
⊆
A
j
A_i \sube A_j
Ai⊆Aj 且
A
j
⊆
A
i
A_j \sube A_i
Aj⊆Ai,得
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
Ai⊆Aj 且
A
j
⊆
A
k
A_j \sube A_k
Aj⊆Ak,得
A
i
⊆
A
k
A_i \sube A_k
Ai⊆Ak,传递性成立。
所以,
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 A⊆B 不成立,且 B ⊆ A B \sube A B⊆A 不成立,所以关系“ ⊆ \sube ⊆”不是全序。
B.2-2 证明对任意正整数
n
n
n,关系“等价模
n
n
n”是整数上的等价关系。(如果存在一个整数
q
q
q 满足
a
−
b
=
q
n
a - b = qn
a−b=qn,则称
a
≡
b
(
m
o
d
n
)
a \equiv b \pmod n
a≡b(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,x∈N+},其中
i
=
0
,
1
,
2
,
.
.
.
,
n
−
1
i = 0,1,2,..., n-1
i=0,1,2,...,n−1。
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
3∈A,但
(
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
a∈A,正好存在一个
b
∈
B
b \in B
b∈B 使得
(
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:A→B;如果
(
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:A→B,如果
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
n∈N,这表示
f
=
{
(
n
,
2
n
)
:
n
∈
N
}
f = \{ (n, 2n): n \in \N \}
f={(n,2n):n∈N}。
如果两个函数
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,…,n−1}。
通常通过列出它的值表示有限序列:
<
f
(
0
)
,
f
(
1
)
,
…
,
f
(
n
−
1
)
>
<f(0), f(1), \dots, f(n-1)>
<f(0),f(1),…,f(n−1)>。
无限序列 (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×⋯×An→B,写成
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:A→B 是函数,且
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
A′⊆A 的像定义为
f
(
A
′
)
=
{
b
∈
B
:
b
=
f
(
a
)
,
f(A') = \{b \in B : b = f(a),
f(A′)={b∈B:b=f(a), 对某个
a
∈
A
′
}
a \in A' \}
a∈A′}。
f
f
f 的范围 (range) 是其定义域的像,即
f
(
A
)
f(A)
f(A)。
如果函数的范围是其值域,那么函数是满射 (surjection)。
满射
f
:
A
→
B
f: A \to B
f:A→B 有时称为将
A
A
A 映射到
B
B
B (mapping
A
A
A onto
B
B
B)。当称
f
f
f 是 onto,是指满射。
如果函数 f : A → B f:A \to B f:A→B 中不同的参数生成不同的值,即 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:A→B 是单射,且是满射,则称其为双射 (bijection)。
双射有时被称为一一对应 (one-to-one correspondence),因为它将定义域和值域中的元素配对。
从集合
A
A
A 到它自身的双射有时称为置换 (permutation)。
当函数
f
f
f 是双射,定义它的逆 (inverse) 为
f
−
1
f^{-1}
f−1 为
f
−
1
(
b
)
=
a
f^{-1}(b) = a
f−1(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:A→B 是一个函数,证明
a. 如果
f
f
f 是单射,那么
∣
A
∣
≤
∣
B
∣
|A| \le |B|
∣A∣≤∣B∣。
b. 如果
f
f
f 是满射,那么
∣
A
∣
≥
∣
B
∣
|A| \ge |B|
∣A∣≥∣B∣。
证: a. 单射:任选元素
a
,
b
∈
A
a,b \in A
a,b∈A,若
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
b∈B,至少有一个
a
∈
A
a \in A
a∈A,使得
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
x∈N,使得
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):a∈A,b∈B}。
二元关系的逆为
R
−
1
=
{
(
b
,
a
)
:
a
∈
A
,
b
∈
B
}
R^{-1} = \{(b,a): a \in A, b\in B\}
R−1={(b,a):a∈A,b∈B}。
B.3-4
★
\bigstar
★ 给出一个从
Z
\Z
Z 到
Z
×
Z
\Z \times \Z
Z×Z 的双射。
解:
学习笔记目录:【算法导论】目录