☰
范畴论入门必刷:Algebra Chapter 0集合练习题复盘与映射思维训练
2026/10/14 4:26:50 网站建设 项目流程

1. 为什么“集合练习题”值得单独拎出来做一篇复盘

很多人看到“Algebra: Chapter 0”这个书名,第一反应是“范畴论入门”,然后翻两页就被各种交换图劝退。但真正卡住新手的往往不是后面的泛函、自然变换,而是第0章里那些看起来人畜无害的集合练习题。我见过太多人在这几页上栽跟头:明明高中就学过集合,交并补差闭着眼都能画韦恩图,怎么到了这一章反而做不下去了?

问题出在“语言切换”上。Chapter 0 的集合练习题不是让你算“A∪B有几个元素”,而是让你用映射的语言重新理解集合论——单射、满射、双射、像、原像、纤维、商集、笛卡尔积的泛性质。这些概念在后续的群、环、模、拓扑里会反复出现,如果第0章只是“看懂”而没有“做熟”,后面每遇到一个交换图你都要回头补课。所以这篇复盘的目标很明确:把 Chapter 0 集合练习里最容易含糊的几类题型拆开,讲清楚每一步背后的动机,给出可以直接对照的解题模板,顺便分享几个我当年踩过的坑。

适合谁看?如果你正在自学范畴论方向的基础教材,或者准备读代数几何、代数拓扑的前置内容,又或者只是想把“映射思维”真正内化成直觉,这篇内容都能用上。不需要你会画交换图,但需要你愿意拿纸笔跟着算一遍——集合论这东西,看是看不会的。

2. 映射的基本性质:从“定义复述”到“条件反射”

2.1 单射、满射、双射的判定为什么总在细节上翻车

Chapter 0 里关于单射和满射的练习题,表面上是“证明 f 是单射当且仅当……”,实际上考的是你对量词顺序的敏感度。单射的定义是:对任意 x₁, x₂ ∈ A,若 f(x₁) = f(x₂),则 x₁ = x₂。满射的定义是:对任意 y ∈ B,存在 x ∈ A 使得 f(x) = y。这两个定义里的量词顺序一旦记混,证明就会写得似是而非。

我当年最常犯的错误是在证明单射时,默认了“f(x₁) = f(x₂)”之后直接写“所以 x₁ = x₂”,中间跳过了“因为 f 是单射”这个引用。听起来很蠢,但在写正式证明时,这种跳跃会让阅卷人(或者未来的你自己)无法判断你到底是真懂还是碰巧。正确的写法应该是显式地写出:“由 f 的单射性,从 f(x₁) = f(x₂) 可得 x₁ = x₂。”这不是形式主义,而是在训练你把“定义”当作工具来用,而不是当作背景知识。

另一个高频翻车点是满射的证明。很多人会构造一个 x 然后验证 f(x) = y,但忘了说明这个 x 确实在定义域里。比如 f: ℝ → ℝ, f(x) = x²,你想证明它不是满射,只需要举一个反例:-1 没有原像。但如果你想证明某个映射是满射,就必须对任意 y 都构造出 x,并且验证 x 属于定义域。这个“验证归属”的步骤在后续的群同态、环同态里会变成“验证封闭性”,是同一个思维习惯。

提示:做单射/满射练习时,养成一个习惯——每写一步都问自己“这一步用的是哪个定义”。如果答不上来,说明你只是在凭感觉写。

2.2 像与原像:方向感比计算能力更重要

像(image)和原像(preimage)是 Chapter 0 里最容易混淆的一对概念,因为它们的符号方向刚好相反。f(A) 表示 A 的像,是 B 的子集;f⁻¹(B') 表示 B' 的原像,是 A 的子集。注意 f⁻¹ 在这里不是反函数,只是一个集合映射的记号。这个区分在后续讲层(sheaf)和茎(stalk)的时候会变得极其重要,因为那时候你会频繁地在“开集的像”和“开集的原像”之间切换。

我自己的记忆方法是:原像永远比像“好算”。为什么?因为原像是按定义直接展开的:f⁻¹(B') = {x ∈ A | f(x) ∈ B'}。你只需要把 B' 里的元素逐个拿过来,问“谁映射到它”,然后收集所有满足条件的 x。而像的计算往往需要你先知道 A 里有哪些元素,再逐个映射过去,最后去重。所以在证明题里,如果结论涉及原像,优先考虑直接展开定义;如果涉及像,往往需要借助单射或满射的条件。

一个典型的练习题是:证明 f(f⁻¹(B')) ⊆ B',并举例说明等号不一定成立。这个包含关系的证明只需要展开定义:取 y ∈ f(f⁻¹(B')),则存在 x ∈ f⁻¹(B') 使得 f(x) = y,而 x ∈ f⁻¹(B') 意味着 f(x) ∈ B',所以 y ∈ B'。等号不成立的情况出现在 f 不是满射时:如果 B' 里有元素没有原像,那它就不在 f(f⁻¹(B')) 里。这个例子在后续讲“满射等价于 f(f⁻¹(B')) = B' 对所有 B' 成立”时会反复用到。

2.3 纤维:把映射看成“一族集合”的视角转换

纤维(fiber)的概念在 Chapter 0 里往往一笔带过,但它是后面理解商集、等价关系、乃至群作用的基石。给定 f: A → B 和 y ∈ B,y 上的纤维定义为 f⁻¹({y}),也就是所有映射到 y 的元素的集合。注意纤维是 A 的子集,不同 y 的纤维互不相交,且所有纤维的并集就是 A(前提是 f 的定义域是 A)。这个“把 A 划分成纤维”的视角,本质上就是等价关系的几何化。

我建议在做 Chapter 0 练习时,专门花时间画几个纤维的示意图。比如 f: ℝ² → ℝ, f(x, y) = x² + y²,那么每个正数 r 上的纤维是一个圆,0 上的纤维是一个点,负数上的纤维是空集。这个例子直观地展示了:纤维可以是空集(如果 y 不在像里),可以是单点(如果 f 在该点局部单射),也可以是多个点甚至连续统。后续学商拓扑时,“商映射的纤维”就是粘合操作的数学表达——你把每个纤维捏成一个点,就得到了商空间。

注意:纤维的记号 f⁻¹(y) 和原像的记号 f⁻¹({y}) 是同一个东西,但前者更常用于“点上的纤维”这个语境。不要因为符号相同就以为它们是一回事——原像是集合到集合的映射,纤维是点上的原像,只是习惯上省略了花括号。

3. 集合运算与映射的交互:那些“显然”但写不出来的等式

3.1 像与原像对交并补的保持性:一张表看清所有情况

Chapter 0 的练习题里有一大类是问:f(A₁ ∪ A₂) 等于 f(A₁) ∪ f(A₂) 吗?f(A₁ ∩ A₂) 等于 f(A₁) ∩ f(A₂) 吗?原像版本又怎样?这些问题看似琐碎,但它们是训练“映射与集合运算交换性”的最佳材料。我整理了一张表,把常见的情况都列出来,方便对照记忆。

运算像是否保持原像是否保持等号成立的条件
并集是是像的并保持无需条件;原像的并保持无需条件
交集否(只有 ⊆)是像的交需要 f 是单射才取等
补集否是(在适当条件下)像的补需要 f 是双射;原像的补对任意 f 都成立
差集否是像的差需要 f 是单射

这张表里最反直觉的是“像不保持交集”。举个例子:A = {1, 2},B = {1, 2},f(1) = a,f(2) = a。取 A₁ = {1},A₂ = {2},则 A₁ ∩ A₂ = ∅,f(∅) = ∅,但 f(A₁) ∩ f(A₂) = {a} ∩ {a} = {a}。所以 f(A₁ ∩ A₂) ≠ f(A₁) ∩ f(A₂)。这个反例在后续讲“单射的等价刻画”时会再次出现:f 是单射当且仅当对任意 A₁, A₂ 都有 f(A₁ ∩ A₂) = f(A₁) ∩ f(A₂)。

原像的情况则好得多:f⁻¹(B₁ ∩ B₂) = f⁻¹(B₁) ∩ f⁻¹(B₂) 对任意 f 都成立。证明只需要展开定义,两边都是“映射到 B₁ ∩ B₂ 的元素集合”,没有任何额外条件。这个不对称性值得反复体会:原像是“逆向”的,它把 B 的子集拉回 A,而拉回操作天然保持所有布尔运算;像是“正向”的,它把 A 的子集推到 B,而推过去的过程中会丢失信息(多个元素可能映射到同一个点),所以只保持并集,不保持交集。

3.2 商集与等价关系:从“划分”到“映射的纤维”

商集是 Chapter 0 里另一个容易被轻视的概念。给定集合 A 和等价关系 ~,商集 A/~ 是所有等价类的集合。这个定义本身不难,难的是理解“商集上的映射”是怎么定义的。如果你有一个函数 f: A → B,并且 f 在等价关系 ~ 下是“不变的”(即 x ~ y 蕴含 f(x) = f(y)),那么 f 可以诱导出一个映射 f̄: A/~ → B,定义为 f̄([x]) = f(x)。这个诱导映射是良定义的(well-defined),因为等价类里的任何代表元都给出相同的值。

这个“良定义”的验证是 Chapter 0 练习里的高频考点。很多人会漏掉这一步,直接写 f̄([x]) = f(x) 就完事。但在正式证明里,你必须说明:如果 [x] = [y],那么 x ~ y,由 f 的不变性得 f(x) = f(y),所以 f̄ 的值不依赖于代表元的选取。这个步骤在后续讲群同态的商群、环同态的商环、拓扑空间的商空间时都会以不同形式出现,是必须形成肌肉记忆的操作。

我自己的经验是:把商集想象成“把纤维捏成点”。给定 f: A → B,定义等价关系 x ~ y 当且仅当 f(x) = f(y)。那么商集 A/~ 就同构于 f 的像(作为集合)。这个同构就是“第一同构定理”的集合版本,后续在群、环、模里会反复推广。所以 Chapter 0 的商集练习不是孤立的,它是整个代数结构的“原型”。

3.3 笛卡尔积的泛性质:为什么“配对”比“元素”更重要

Chapter 0 里关于笛卡尔积的练习题,往往会引入“泛性质”的语言。给定集合 A 和 B,笛卡尔积 A × B 配上两个投影映射 π₁: A × B → A 和 π₂: A × B → B,满足以下泛性质:对任意集合 C 和任意映射 f: C → A, g: C → B,存在唯一的映射 h: C → A × B 使得 π₁ ∘ h = f 且 π₂ ∘ h = g。这个 h 就是 c ↦ (f(c), g(c))。

这个泛性质看起来像是“把简单的事情说复杂了”,但它是后续所有“泛性质定义”的模板。群、环、模的直积、拓扑空间的积空间、甚至范畴论里的积,都是这个模式的推广。所以 Chapter 0 的练习里如果出现了“证明笛卡尔积的泛性质”,不要跳过——它是你第一次接触“用映射来刻画对象”的思维方式。

我当年做这个练习时,最大的困惑是“唯一性”为什么要单独强调。后来才明白:唯一性保证了 h 是由 f 和 g 完全决定的,没有“额外选择”的空间。这在后续讲“泛性质定义的对象在同构意义下唯一”时是关键。如果只有存在性没有唯一性,那 A × B 就可能有很多“版本”,无法在范畴论的意义下称为“积”。所以唯一性不是装饰,它是定义的一部分。

4. 常见练习题型与解题模板:从“会做”到“做对”

4.1 证明两个集合相等:双向包含法的标准流程

Chapter 0 里最常见的题型就是“证明 A = B”,其中 A 和 B 可能是像、原像、商集、笛卡尔积的某种组合。标准做法是双向包含:先证 A ⊆ B,再证 B ⊆ A。这个流程听起来简单,但实际操作时容易在“取元素”的步骤上卡住。

我的模板是这样的:证 A ⊆ B 时,写“取 x ∈ A”,然后根据 A 的定义展开,逐步推导出 x ∈ B。证 B ⊆ A 时反过来。关键是每一步都要有依据——要么是定义,要么是已知条件,要么是之前证明过的引理。不要写“显然”或“容易看出”,除非你真的能在三秒内说出理由。

举个例子:证明 f⁻¹(B₁ ∪ B₂) = f⁻¹(B₁) ∪ f⁻¹(B₂)。先证左边 ⊆ 右边:取 x ∈ f⁻¹(B₁ ∪ B₂),则 f(x) ∈ B₁ ∪ B₂,所以 f(x) ∈ B₁ 或 f(x) ∈ B₂。若 f(x) ∈ B₁,则 x ∈ f⁻¹(B₁);若 f(x) ∈ B₂,则 x ∈ f⁻¹(B₂)。无论哪种情况,x ∈ f⁻¹(B₁) ∪ f⁻¹(B₂)。再证右边 ⊆ 左边:取 x ∈ f⁻¹(B₁) ∪ f⁻¹(B₂),则 x ∈ f⁻¹(B₁) 或 x ∈ f⁻¹(B₂)。若 x ∈ f⁻¹(B₁),则 f(x) ∈ B₁ ⊆ B₁ ∪ B₂,所以 x ∈ f⁻¹(B₁ ∪ B₂);另一种情况同理。这个证明没有任何技巧,就是老老实实展开定义,但它是训练严谨性的好材料。

提示:双向包含法虽然笨,但它是所有集合等式证明的“万能钥匙”。如果你卡住了,先试试双向包含,往往能打开局面。

4.2 构造反例:什么时候“举例子”比“讲道理”更有效

Chapter 0 里有一类题是“判断命题是否成立,若不成立举反例”。这类题比证明题更容易失分,因为很多人会试图“证明”一个假命题,浪费大量时间。我的策略是:先花30秒尝试构造反例,如果构造不出来,再尝试证明。因为反例往往比证明更直观,而且一旦找到反例,你就知道命题是假的,不需要再纠结。

构造反例的关键是找到“边界情况”。比如命题“f(A₁ ∩ A₂) = f(A₁) ∩ f(A₂) 对所有 f 成立”,反例就出现在 f 不是单射的时候。你可以取 A = {1, 2},B = {a},f(1) = f(2) = a,A₁ = {1},A₂ = {2}。这个反例小到可以心算,但它精确地展示了“非单射导致交集信息丢失”的本质。

另一个常见反例是“f(f⁻¹(B')) = B' 对所有 B' 成立”。反例出现在 f 不是满射时:取 A = {1},B = {a, b},f(1) = a,B' = {b}。则 f⁻¹(B') = ∅,f(∅) = ∅ ≠ {b}。这个反例说明:原像再取像会“缩小”到像与 B' 的交集,而不是还原 B'。

4.3 泛性质练习:如何从“交换图”读出映射

Chapter 0 的泛性质练习往往配有交换图。很多人看到交换图就紧张,其实交换图只是“映射等式”的图形化表达。一个三角形交换图意味着两条路径给出的映射相等;一个正方形交换图意味着上下复合等于左右复合。读图的方法是:从任意一个对象出发,沿着箭头走到另一个对象,所有路径给出的复合映射都相等。

以笛卡尔积的泛性质为例,交换图是一个“锥形”:C 在顶端,两条箭头分别指向 A 和 B,然后 A 和 B 又通过投影映射指向 A × B。这个图告诉我们:h 是 C 到 A × B 的映射,且 π₁ ∘ h = f,π₂ ∘ h = g。所以 h 必须把 c 映射到 (f(c), g(c)),没有其他选择。唯一性就体现在这里:一旦 f 和 g 给定,h 就被迫确定。

我建议在做泛性质练习时,先把交换图翻译成映射等式,然后根据等式构造 h,最后验证 h 确实满足所有等式。这个流程在后续讲极限、余极限、伴随函子时会反复使用,是范畴论的基本功。

5. 从集合练习到后续章节:那些当时不懂、后来才明白的点

5.1 为什么 Chapter 0 要强调“映射的复合”而不是“元素的运算”

集合论的传统讲法是“元素 + 运算”,但 Chapter 0 的讲法是“对象 + 映射”。这个视角转换是范畴论的核心。在集合的范畴 Set 里,对象是集合,态射是映射,复合是映射的复合。这个范畴的很多性质(比如笛卡尔积是积,不交并是余积)在后续的群、环、模、拓扑里都有对应。

我当年做 Chapter 0 练习时,觉得“映射的复合”只是记号上的方便,后来学到函子才明白:函子就是“保持复合的映射”。如果 Chapter 0 没有把复合的结合律、单位元这些性质练熟,后面定义函子时就会觉得抽象。所以那些看似琐碎的“证明 (h ∘ g) ∘ f = h ∘ (g ∘ f)”的练习,其实是在为函子的定义做铺垫。

5.2 单射、满射、双射在后续章节的“变形”

单射和满射在 Chapter 0 里是集合映射的性质,到了群论里变成“单同态”和“满同态”,到了拓扑里变成“单连续映射”和“满连续映射”,到了层论里变成“单预层映射”和“满预层映射”。名字变了,但核心定义没变:单射是“像唯一”,满射是“像覆盖”。所以 Chapter 0 里把这两个概念练到条件反射,后面每遇到一个新结构,你只需要验证“这个结构里的映射是否保持运算”,而不需要重新理解单射和满射本身。

双射在后续章节里往往对应“同构”。集合的双射就是集合的同构,群的双射同态就是群同构,拓扑的双射连续开映射就是同胚。Chapter 0 里如果能把“双射的逆也是双射”这类练习做熟,后面证明“同构的逆也是同构”时就会觉得理所当然。

5.3 商集思想在群、环、模里的推广

商集是 Chapter 0 里最“代数”的概念。给定集合 A 和等价关系 ~,商集 A/~ 把等价类捏成点。到了群论里,商群 G/N 把陪集捏成点;到了环论里,商环 R/I 把陪集捏成点;到了模论里,商模 M/N 把陪集捏成点。这些构造的底层逻辑完全一样:先定义等价关系(x ~ y 当且仅当 x - y ∈ N),然后验证运算在等价类上良定义。

Chapter 0 里如果能把“商集上的映射良定义”这个验证流程练熟,后面学商群、商环、商模时就会觉得顺畅。我自己的经验是:商结构的所有证明都可以归结为“取代表元,验证不依赖于代表元”。这个套路在 Chapter 0 里练十遍,后面就不用再练了。

6. 我踩过的三个坑与对应的修复方案

6.1 把“原像”当成“反函数”来用

这是我最早犯的错误。看到 f⁻¹(B') 就以为 f 必须有反函数,然后纠结“如果 f 不是双射,f⁻¹ 是什么”。实际上 f⁻¹(B') 只是一个记号,表示“所有映射到 B' 里的元素的集合”,它不要求 f 可逆。这个误解导致我在做原像相关练习时总是绕弯路,试图先证明 f 是双射再计算。

修复方案:把 f⁻¹(B') 读作“B' 的原像”,而不是“f 的逆作用在 B' 上”。每次看到这个记号,先默念“原像,原像,原像”,然后直接展开定义。如果题目要求证明 f 可逆,那再单独处理。

6.2 在证明单射时默认“f(x₁) = f(x₂) 蕴含 x₁ = x₂”是显然的

这个错误更隐蔽。单射的定义本身就是“f(x₁) = f(x₂) 蕴含 x₁ = x₂”,所以在证明某个映射是单射时,你需要验证这个蕴含关系,而不是假设它成立。我当年经常在证明里写“因为 f 是单射,所以 x₁ = x₂”,但题目要求的就是证明 f 是单射,这就成了循环论证。

修复方案:证明单射时,从“假设 f(x₁) = f(x₂)”出发,利用 f 的具体定义推导出 x₁ = x₂。不要引用“f 是单射”这个结论,因为那正是你要证的。

6.3 忽略“良定义”验证,直接定义商集上的映射

这个坑在商集练习里最常见。给定等价关系 ~ 和函数 f,你想定义 f̄: A/~ → B 为 f̄([x]) = f(x)。但你必须先验证:如果 [x] = [y],则 f(x) = f(y)。这个验证不是“形式主义”,而是商集定义的核心要求。我当年因为漏掉这一步,被批改时指出“f̄ 可能不是函数”,才意识到问题的严重性。

修复方案:每次定义商集上的映射,先写“首先验证良定义”,然后取 [x] = [y],展开等价关系的定义,利用 f 的不变性推出 f(x) = f(y)。这个流程在后续商群、商环、商模里会反复使用,值得形成条件反射。

7. 给正在做 Chapter 0 练习的人几条实用建议

如果你现在正卡在 Chapter 0 的集合练习上,我的建议是:不要跳过任何一道题,哪怕它看起来“太简单”。Chapter 0 的题目设计是有梯度的,前面的简单题是在帮你建立符号系统,后面的难题是在训练你把符号系统用到新情境里。如果你跳过了前面的题,后面的题就会因为“符号不熟”而做不下去。

另外,做练习时尽量手写证明,不要只在脑子里想。集合论的证明有很多“取元素、展开定义、推导、收集”的步骤,这些步骤在脑子里过一遍和写在纸上是两回事。手写能暴露你思维里的跳跃和漏洞,也能帮你形成肌肉记忆。

最后,如果你在某道题上卡了超过20分钟,先放下,去做后面的题。Chapter 0 的很多概念是相互关联的,后面的题可能会给你前面的题提供灵感。我当年有一道关于纤维的题卡了一下午,后来在做商集练习时突然明白了纤维的划分意义,回头再看那道题就迎刃而解了。

提示:Chapter 0 的练习答案往往不止一种写法。如果你写出的证明和标准答案不同,先别急着改,检查一下你的逻辑是否自洽。如果自洽,那你的写法也是对的,甚至可能比标准答案更直观。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询