Evanalysis
2.1嵌入式互动预计阅读时间: 9 分钟

2.1 集合与集合运算

建立成员关系、子集证明,以及标准集合构造的语言,为后续章节反复使用的概念打底。

集合是用来描述一批对象的基础语言。在这门课里,集合不是旁支, 而是逻辑、函数、关系,以及后续数系构造共同依赖的语言。

如果你现在觉得符号有些陌生,这是正常的。这一单元的目标就是把这套语言 变得足够精确,好让后面的章节可以直接使用。

集合、属于、相等

定义

集合

集合是一批对象的集合。

如果 x 是集合 AA 的元素,我们写 xAx \in A;如果不是,就写 xAx \notin A

例子:

  • {1, 2, 3} 是集合。
  • {香港岛、九龙、新界} 是集合。
  • 是空集合,也就是没有任何元素的集合。

同一个集合可以有不同写法,但集合本身只由元素决定。

定理

外延性

两个集合相等,当且仅当它们拥有完全相同的元素。

符号上写成:

A=B    x(xAxB).A = B \iff \forall x\, (x \in A \leftrightarrow x \in B).

所以证明集合相等的标准方法是先证两个包含关系:

  1. 证明 ABA \subset B
  2. 证明 BAB \subset A

常见错误

不要把集合相等和描述相等混淆

{1, 2, 3}{3, 2, 1} 是同一个集合,因为元素完全一样。列出的顺序并不重要。

常见错误

子集符号要注意本地约定

本课程用 ABA \subset B 表示“AA 的每个元素都在 BB 里”。有些书会用 ABA \subseteq B 表示这个意思,而把 ABA \subset B 留给 strict subset。 读书时要先确认约定。

建立新集合

知道了一些集合之后,我们通常会想造出更多集合。标准运算就是用来做这件事的。

| 运算 | 符号 | 定义 | | --- | --- | --- | | 并集 | ABA \cup B | 属于 AABB 的元素 | | 交集 | ABA \cap B | 同时属于 AABB 的元素 | | 差集 | ABA \setminus B | 属于 AA 但不属于 BB 的元素 | | 补集 | AcA^c | 在所选全集内,不属于 AA 的元素 |

补集一定要先指定全集 EE。在这一单元里,我们通常默认所有集合都在某个 固定 EE 里面,所以 AcA^c 就是 EAE \setminus A

例题

追踪元素如何经过几个运算

A={1,2,4},B={2,3,4},A = \{1, 2, 4\}, \qquad B = \{2, 3, 4\},

而全集取为

E={1,2,3,4,5}.E = \{1, 2, 3, 4, 5\}.

那么:

  • AB={1,2,3,4}A \cup B = \{1, 2, 3, 4\}
  • AB={2,4}A \cap B = \{2, 4\}
  • AB={1}A \setminus B = \{1\}
  • BA={3}B \setminus A = \{3\}
  • Ac={3,5}A^c = \{3, 5\}
  • (AB)c={5}(A \cup B)^c = \{5\}

解答

为什么补集一定要有全集

这些等式怎么证

本单元的集合恒等式不是靠死记,而是靠逐个元素追踪来证明。

定理

基本集合代数

对集合 AABBCC

  • A=AA \cup \varnothing = A
  • AB=BAA \cup B = B \cup A
  • A(BC)=(AB)CA \cup (B \cup C) = (A \cup B) \cup C
  • AA=AA \cup A = A
  • A(BC)=(AB)(AC)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)
  • A(BC)=(AB)(AC)A \cup (B \cap C) = (A \cup B) \cap (A \cup C)
  • (AB)c=AcBc(A \cup B)^c = A^c \cap B^c
  • (AB)c=AcBc(A \cap B)^c = A^c \cup B^c
  • ABA \subset B 当且仅当 AB=BA \cup B = B
  • ABA \subset B 当且仅当 AB=AA \cap B = A

核心证明法是 element chasing。比如:

xA(BC)    xA 且 (xB 或 xC)x \in A \cap (B \cup C) \iff x \in A \text{ 且 } (x \in B \text{ 或 } x \in C)

等价于

(xA 且 xB) 或 (xA 且 xC),(x \in A \text{ 且 } x \in B) \text{ 或 } (x \in A \text{ 且 } x \in C),

所以又等价于

x(AB)(AC).x \in (A \cap B) \cup (A \cap C).

证明

示范:为什么 ABA \subset B 会推出 AB=BA \cup B = B

其他常见构造

这门课后面还会反复用到下面几种集合构造。

笛卡儿积

A×BA \times B 是所有有序对 (a, b) 的集合,其中 aAa \in AbBb \in B。 顺序是有意义的:(a, b)(b, a) 通常不同。

如果 A=5|A| = 5B=3|B| = 3,那么 A×B=15|A \times B| = 15

R×R=R2R \times R = R^2 就是平面。

有限次积

AnA^n 表示 AA 和自己做 n 次笛卡儿积,也就是所有 n-tuple。

幂集

P(A)AA 的所有子集所组成的集合。

如果 AAn 个元素,那么 P(A)2n2^n 个元素。另一个很有用的理解方式 是 indicator function:每个子集都可以对应到一个 A0,1A \to {0,1} 的函数。

例如

P({a,b})={,{a},{b},{a,b}}.P(\{a, b\}) = \{\varnothing, \{a\}, \{b\}, \{a, b\}\}.

不交并

有时两个集合在原始写法上可能有重叠,但我们又想保留每个元素的来源。 不交并就是通过标签记住每个元素最初属于哪个集合。

直观上,ABA \sqcup B 就是“加了标签 1 的 AA”和“加了标签 2 的 BB”。

怎样仔细证明集合恒等式

到了这里,集合恒等式应该被理解成“属元条件相同”的命题,而不是只靠图形 去记。

标准证明方法通常是:

  1. 任取一个元素 x
  2. xx \in 两边集合翻译成逻辑条件;
  3. 逐步化简,直到两边变成同一句话。

例题

证明 A(BC)=(AB)CA \cap (B \setminus C) = (A \cap B) \setminus C

xA(BC)x \in A \cap (B \setminus C)

出发,就表示:

  • xAx \in A
  • xBx \in B
  • xCx \notin C

而这三个条件合起来,正是

x(AB)Cx \in (A \cap B) \setminus C

的意思。

由于推理可以反向读回去,所以两边集合相等。

这种逐元素追踪的方法,后面还会再次出现在德摩根律、关系,以及数系构造中。

有限集合怎样计数

集合语言不只用来分类,也直接控制计数。

如果 AABB 都是有限集合,那么:

  • A×B=AB|A \times B| = |A|\,|B|
  • P(A)=2A|P(A)| = 2^{|A|}
  • AB=A+BAB|A \cup B| = |A| + |B| - |A \cap B|

并集公式之所以要减交集,是因为交集中的元素如果直接相加,会被算两次。

例题

计算一个并集和幂集

假设 A=6|A| = 6B=5|B| = 5AB=2|A \cap B| = 2

那么

AB=6+52=9|A \cup B| = 6 + 5 - 2 = 9

再设 S={a,b,c}S = \{a,b,c\}。每个元素都只有两种选择:放进某个子集,或者不放进。 所以总共有

222=23=82 \cdot 2 \cdot 2 = 2^3 = 8

个子集。因此 P(S)=8|P(S)| = 8

子集证明检查表

子集证明会反复出现,所以最好让它变成固定套路。

如果要证明 ABA \subseteq B,就从任取 xAx \in A 开始,再用 AA 的定义推出 足够信息,最后证明同一个 x 其实也在 BB 里面。由于 x 是任取,结论 就对 AA 的每个元素成立。

这种 direct proof 模式,后面在关系、偏序,以及等价类中都会再次出现。

常见错误

常见错误

补集不等于差集

AcA^c 是“在全集外面的部分”。ABA \setminus B 是“A 里面但不在 B 里面的部分”。 两者有关,但不一样。

常见错误

没有全集就不能写补集

如果你写补集,一定要知道你是在什么 universe 里做运算。否则 c^c 是含糊的。

常见错误

积集顺序有意义

A×BA \times BB×AB \times A 一般包含不同的有序对。这就是为什么函数和关系要用积集语言。

小检查

快速检查

如果 A=a,b,cA = {a, b, c}B=b,c,dB = {b, c, d}ABA \cap B 是什么?

只保留同时属于两个集合的元素。

解答

答案

快速检查

为什么在未指定全集之前,AcA^c 不够清楚?

想一想补集是“在哪个范围内”取外面。

解答

答案

快速检查

如果 ABA \subset B,那么 ABA \cup BABA \cap B 会简化成什么?

用上面的 absorption laws。

解答

答案

为什么这一单元重要

这一单元是后面数系构造的语言基础。

  • N2N^2 会用来构造整数。
  • 等价类会用来构造有理数。
  • 一个集合上的关系会变成偏序和等价关系的语言。
  • 幂集和笛卡儿积会在后面讲 family、tuple,以及各种构造时再次出现。

边读边试

比较一对集合

互动探索器让你把元素加入或移出 A 与 B,并即时看见运算结果改变。

集合 A

集合 B

并集

{1, 2, 3, 4}

交集

{2, 4}

差集 A \ B

{1}

先备知识

这一节可以独立阅读。

本单元重点词汇