1.2 集合、子集与幂集
上一节把电梯允许楼层写成 ,但只把大括号当作一张状态清单。现在我们正式研究这种结构。这样做不是为了增加符号,而是为了能够准确回答:一个对象是否在清单中?两张清单是否相同?一张清单是否完全包含在另一张清单中?
本节会按以下顺序前进:
- 先学会读写一个集合,并判断元素是否属于它。
- 再比较两个集合,理解相等、基数和子集。
- 最后把“所有可能子集”收集起来,得到幂集。
集合(set)把彼此不同的对象组织成一个整体。集合中的对象叫作元素(element)。如果元素 属于集合 ,写作 ;如果不属于,写作 。
读符号时可以直接翻译:
- 读作“3 属于集合 ”。
- 读作“5 不属于集合 ”。
- 表示我们给这个集合取名为 。
元素不必是数字。 是颜色集合; 是机器模式集合;元素甚至可以是其他集合。
集合只关心成员资格,不关心书写顺序或重复次数。因此
最后一个写法虽然多余,却没有创造新的元素。三个集合都含有相同成员,所以相等。
集合中元素的数量叫作基数(cardinality),写作 。例如,若 ,则 。重复书写不会增加基数,因此 仍然等于 3。
判断两个有限集合是否相等,可以使用一个可靠步骤:
- 检查左边的每个元素是否都在右边。
- 再检查右边的每个元素是否都在左边。
两个方向都通过,集合才相等。只比较基数不够,因为 和 的基数相同,但成员不同。
两种常见写法
我们已经使用了列举法:直接把元素写在大括号中。元素很多时,可以改用条件描述。例如
竖线 读作“满足条件”。整句表示:“ 是所有满足‘ 是 1 到 8 之间偶数’这一条件的 组成的集合。”逐个检查后得到 。这叫作描述法或集合构造式。
元素、集合与子集
必须区分“一个元素属于集合”和“一个集合包含于另一个集合”。若
那么 ,而 。左边的 是元素, 是只含一个元素的集合,这两个对象不相同。
可以把两种符号理解为两类问题:
| 符号 | 左边是什么 | 右边是什么 | 问的问题 |
|---|---|---|---|
| 一个对象 | 一个集合 | 这个对象是不是成员? | |
| 一个集合 | 一个集合 | 左边的每个成员是否都在右边? |
例如,当 时, 为真, 也为真,但 为假,因为 的三个元素是 ,其中没有集合 。
若集合 的每个元素也属于集合 ,就说 是 的子集(subset),写作
要推翻这个命题,只需找出一个见证元素:某个 但 。若 且 ,则 是 的真子集(proper subset),写作 。
判断有限集合的子集关系时,可以机械地执行下面的检查:
- 从左侧集合取出第一个元素。
- 在右侧寻找它。找不到时立即停止,这个元素就是反例。
- 找到时继续检查左侧下一个元素。
- 左侧全部检查完毕仍未失败,子集关系成立。
例如,、。先在 中找到 1,再找到 3,所以 。反过来检查 时,元素 2 不在 中,因此 2 是推翻命题的见证。
每个集合都是自己的子集,因为集合中的每个元素当然也属于自身。所以 总是成立,但 不成立:真子集还要求两个集合不相等。
子集锻造炉把定义变成了约束系统。它不会只告诉你“错误”,还会寻找破坏 的见证元素。这个思路以后会反复出现:证明全称命题需要覆盖所有情况,推翻它通常只需一个反例。
在实验中尝试“不可比较”目标。如果 中存在一个不属于 的元素,同时 中也存在一个不属于 的元素,那么两个方向的子集关系都失败。集合不必总是一大一小地套在一起。
空集与幂集
空集(empty set)没有任何元素,写作 或 。它是每个集合的子集。原因不是“空集藏在所有集合里面”,而是不存在任何空集元素能够违反子集条件。
用刚才的检查步骤理解这一点:检查 时,左侧没有第一个元素,也就不可能找到失败见证。检查过程直接完成,所以命题成立。这种“没有反例,因此条件成立”的情况以后会在逻辑中正式解释。
集合 的幂集(power set)是由 的全部子集组成的集合:
注意幂集中的元素本身是集合。若 ,则
每个原集合元素都有“选入子集”或“不选入子集”两个独立选择。若 ,则
先不背公式,亲手构造 的幂集:
- 两个元素都不选,得到 。
- 只选 ,得到 。
- 只选 ,得到 。
- 两个都选,得到 。
可以把“选入”记为 1,“不选”记为 0:
| 选择位 | 得到的子集 |
|---|---|
| 00 | |
| 10 | |
| 01 | |
| 11 |
两个位置各有两种选择,所以共有 种结果。若有 个元素,就有 个二元位置,因此出现 个子集。这是公式背后的原因。
星座把子集按基数分层。第 层包含所有大小为 的子集,数量为 。所有层合起来必须覆盖整个幂集:
这个等式目前可以从“左边按大小分组,右边按独立开关计数”来理解。第 6 章会系统学习其中的计数方法。
符号 在这里是一个预告,表示“从 个不同元素中恰好选 个的方法数”。你现在不需要会计算一般公式,实验也只要求你观察:基数相同的子集位于同一层。第 6 章会从零推导它。
通向下一节
现在我们能够创建集合、检查成员、比较子集并枚举全部子集。但现实问题通常需要把两张清单组合起来,例如“参加课程 A 或课程 B 的学生”,或“每个用户可以执行哪些操作”。下一节从成员条件出发,引入并集、交集、差集和笛卡尔积。所有新运算都会建立在本节的 与 之上。