跳到正文
格致开物MATHWIKI

集合:修订间差异

AIContentBot留言 | 贡献
扩充双语数学百科:定义条件、证明算例、历史来源与 AI 编者评注;补齐学科导航
 
AIContentBot留言 | 贡献
重编数学讲解:连贯例题、逐步推导与多幅过程图;更新写作规范
 
第1行: 第1行:
'''集合'''(set)是由确定的元素组成、以元素归属关系来区分的数学对象。若两个集合具有完全相同的元素,它们就是同一个集合。集合不记录元素的排列顺序,也不记录重复出现的次数。本文采用初等数学中的集合语言,介绍成员关系、包含关系、集合运算、笛卡尔积与大小比较,并说明为什么“任何可描述的对象全体都是集合”不是安全的构造原则。
'''集合'''(set)是把一些确定的对象放在一起所形成的数学对象,其中的对象叫作元素。两个集合只要元素完全相同,就是同一个集合;元素的排列顺序和重复书写的次数不影响集合。


== 从解方程到确定讨论范围 ==
例如,方程 <math>x^2=1</math> 的实数解有两个,可以把它们合写成解集 <math>\{-1,1\}</math>。花括号表示“把这些对象作为一个整体”。集合语言使我们既能讨论某一个解,也能讨论所有解之间的关系。
方程 <math>x^2=1</math> 在实数中的解可以写成集合 <math>\{-1,1\}</math>。写出解集,就把“一个数是否满足条件”转化成“它是否属于这个集合”。若把讨论范围改成非负实数,解集只剩 <math>\{1\}</math>。所以对象范围不是可省略的背景;同一句条件在不同范围内会划出不同集合。


<math>x\in A</math> 表示对象 <math>x</math> 是集合 <math>A</math> 的元素,<math>x\notin A</math> 表示不是。集合可以列举,如 <math>\{2,3,5\}</math>;也可以用条件描述,如 <math>\{n\in\mathbb Z: n>0,\ n<4\}</math>。冒号后的条件在前面指定的范围内筛选对象。后一集合与 <math>\{1,2,3\}</math> 相同,因为两种描述选出了完全一样的元素。
== 怎样说明一个集合 ==
设一枚骰子的六种点数构成集合
<math display="block">U=\{1,2,3,4,5,6\}.</math>
如果只取偶数点数,就得到 <math>A=\{2,4,6\}</math>。记号 <math>2\in A</math> 读作“2 属于 A”,而 <math>3\notin A</math> 表示 3 不是 A 的元素。


“确定”指成员资格由清楚的数学条件规定,不是要求现在就能快速列出所有元素。有些集合无限,有些成员问题的计算十分困难,仍不妨碍定义本身明确。相反,“很大的数的全体”如果没有约定“很大”的界限,便不足以确定一个集合。表达习惯中的模糊分类与精确集合应当区分。
除了逐个列举,还可以用条件描述同一个集合:
<math display="block">A=\{n\in U:n\text{ 是偶数}\}.</math>
冒号前说明从哪里取对象,冒号后说明筛选条件。这样写特别适合不能逐项列完的集合。例如 <math>\{n\in\mathbb Z:n>0\}</math> 是全体正整数,其中 <math>\mathbb Z</math> 表示整数集合。


集合中顺序和重复不影响结果:<math>\{1,2,2\}=\{2,1\}</math>。如果要记录先后次序,应使用有序对或序列;如果要记录出现次数,可以使用多重集。把数据列表直接看成集合会丢掉重复信息,例如一组观测值的平均数不能只从去重后的集合恢复。这是选择数学对象时必须考虑的信息损失。
范围会影响结果。方程 <math>x^2=1</math> 在实数中的解集是 <math>\{-1,1\}</math>,限制在非负实数中则只有 <math>\{1\}</math>。“很大的数”还没有确定的范围和标准,而“超过一百万的整数”已经能逐一判断某个对象是否属于其中。定义一个集合并不要求能迅速找到它的每个元素,但成员条件应当明确。


== 元素、子集与空集不在同一层次 ==
集合也不保留次数。例如 <math>\{1,2,2\}=\{1,2\}</math>。如果一组测量记录为 1、2、2,改写成集合后就丢失了一次重复测量;计算平均值时仍须使用原记录。需要保留顺序的对象可以用序列表示,需要保留次数的对象可以用多重集表示。
若集合 <math>A</math> 的每个元素都属于集合 <math>B</math>,记 <math>A\subseteq B</math>,称 <math>A</math> 是 <math>B</math> 的子集。成员关系问“这个对象在不在里面”,包含关系问“这个集合中的所有元素是否都在另一个集合里”。集合本身也能作为元素,因而仅凭符号外观很容易把两层关系混淆。


<math>A=\{1,\{2\}\}</math>。它的两个元素是数字一和集合 <math>\{2\}</math>,所以 <math>1\in A</math>、<math>\{2\}\in A</math>,但 <math>2\notin A</math>。同时 <math>\{1\}\subseteq A</math>,而 <math>\{2\}\not\subseteq A</math>。后一判断检查的是数字二是否在原集合中,而不是集合 <math>\{2\}</math> 是否作为整体出现。逐层辨认对象比记忆“左边能不能有花括号”可靠。
== “属于”和“包含”问的是两件事 ==
继续看骰子集合。<math>A=\{2,4,6\}</math> 中的每个元素都在 <math>U</math> 中,因而称 A 是 U 的'''子集''',记为 <math>A\subseteq U</math>。这个符号问的是一整组对象是否全部被包含,而 <math>2\in A</math> 问的是一个对象是否属于其中。


没有元素的集合称为空集,记 <math>\varnothing</math>。它不同于 <math>\{\varnothing\}</math>,后者含有一个元素,这个元素恰好是空集。空集是每个集合的子集,因为不存在一个属于空集却不属于目标集合的反例;但空集不一定是每个集合的元素。这里使用的是“所有元素满足条件”的逻辑,而不是把空集看成到处存在的一颗特殊点。
集合本身也可以充当元素。取
<math display="block">C=\{1,\{2\}\}.</math>
C 的两个元素分别是数字 1 和集合 <math>\{2\}</math>。因此 <math>\{2\}\in C</math>,但 <math>2\notin C</math>。另一方面,<math>\{1\}\subseteq C</math>,因为它唯一的元素 1 在 C 中;<math>\{2\}\not\subseteq C</math>,因为它唯一的元素 2 不在 C 中。辨别这两种关系时,要先看清正在检查的是哪个对象。


要证明 <math>A=B</math>,常用双向包含:先证明任意属于 <math>A</math> 的元素也属于 <math>B</math>,再证明反向。只检查几个共同元素不够,因为仍可能漏掉别的元素;只证单向包含也不够,因为较大的集合可能多出元素。对于有限集合,还可结合包含关系与元素个数相同证明相等,但无限集合不能简单沿用“真子集一定更小”的直觉。
没有任何元素的集合称为'''空集''',记作 <math>\varnothing</math>。它与 <math>\{\varnothing\}</math> 不同:前者没有元素,后者有一个元素,这个元素本身是空集。空集是任何集合的子集,因为不存在“属于空集却不属于另一个集合”的元素。


本文用 <math>\subseteq</math> 允许两集合相等,用 <math>\subsetneq</math> 表示真包含。符号 <math>\subset</math> 在不同教材中可能表示不同约定,阅读时应先确认。数学符号不是脱离上下文的自然语言,明确约定可以减少不必要的歧义。
证明两个集合相等,常用'''双向包含''':先证明 A 的每个元素都在 B 中,再证明 B 的每个元素都在 A 中。这样双方都没有多余的元素,便有 <math>A=B</math>。这里的 <math>\subseteq</math> 允许相等;若 A 是 B 的子集而又不等于 B,记为 <math>A\subsetneq B</math>,称为真子集。


== 把“并且、或者、不”变成集合运算 ==
== 把两个筛选条件合起来 ==
并集 <math>A\cup B</math> 包含至少属于两者之一的元素,这里的“或”包括同时属于两者;交集 <math>A\cap B</math> 包含同时属于两者的元素;差集 <math>A\setminus B</math> 包含属于 <math>A</math> 而不属于 <math>B</math> 的元素。若预先指定全集 <math>U</math>,补集 <math>A^c</math> 表示 <math>U\setminus A</math>。没有说明全集时,“所有不在某集合中的对象”往往并不明确。
除偶数点数 <math>A=\{2,4,6\}</math> 外,再设 <math>B=\{1,2,3\}</math>,表示不超过 3 的点数。现在有几种不同的筛选要求。


例如取 <math>U=\{1,2,3,4,5,6\}</math><math>A=\{2,4,6\}</math>,<math>B=\{1,2,3\}</math>。逐项检查得到
“是偶数,或者不超过 3”得到'''并集''' <math>A\cup B</math>;这里“或者”允许两个条件同时成立。“是偶数,并且不超过 3”得到'''交集''' <math>A\cap B</math>。逐项筛选,得到
<math display="block">A\cup B=\{1,2,3,4,6\},\quad A\cap B=\{2\},</math>
<math display="block">A\cup B=\{1,2,3,4,6\},\qquad A\cap B=\{2\}.</math>
<math display="block">A\setminus B=\{4,6\},\quad B\setminus A=\{1,3\},\quad A^c=\{1,3,5\}.</math>
下图将两种筛选并排画出。左图着色整个 A 与 B,只要在任一圈内便被保留;右图只着色两圈重叠处,保留下来的元素只有 2。
差集一般不交换;补集则依赖全集。如果把全集扩成一到十的整数,原来的偶数集合仍只有二、四、六,补集中还要加入七、八、九、十。这并不是运算矛盾,而是背景改变了。


另一个完整例子使用区间。令 <math>A=[-1,2)</math>、<math>B=(0,3]</math>,全集为实数。交集要求同时大于零且小于二,所以是 <math>(0,2)</math>;并集覆盖从负一到三的全部点,两个最外端都被某个集合包含,所以是 <math>[-1,3]</math>。差集 <math>A\setminus B=[-1,0]</math>,因为零不属于第二个区间;而 <math>B\setminus A=[2,3]</math>,因为二不属于第一个区间。端点的开闭不能靠图形的大致形状猜测。
[[File:Gezhi-teaching-foundation-sets-operations.svg|frame|center|alt=骰子点数集合的并集与交集,左图两圈整体着色包含一二三四六,右图只着色重叠处的二|并集取两圈覆盖的全部区域,交集只取共同区域。]]


有限集合的计数遵循
点数 2 同时符合两个条件,但在并集中只出现一次。记 <math>|A|</math> 为有限集合 A 的元素个数,就有
<math display="block">|A\cup B|=|A|+|B|-|A\cap B|.</math>
<math display="block">|A\cup B|=|A|+|B|-|A\cap B|=3+3-1=5.</math>
把两集合大小直接相加,会把共同元素数两遍,因此减去一次交集大小。上面的有限例子得到 <math>3+3-1=5</math>,与列举结果相符。这个简单论证是[[组合数学]]中容斥思想的起点,也说明计数公式应当有“每个对象被算了几次”的解释。
减去交集,是因为先前相加时把其中的元素计算了两遍。这是[[组合数学]]中容斥计数的起点。


== 用逐元素证明代替只看示意图 ==
“是偶数,但超过 3”得到'''差集''' <math>A\setminus B=\{4,6\}</math>;反过来,<math>B\setminus A=\{1,3\}</math>。差集有方向,交换两集合会改变答案。
集合恒等式可以转换成逻辑命题。德摩根律之一为 <math>(A\cup B)^c=A^c\cap B^c</math>。任取全集中的元素,它不在并集内,等价于既不在第一个集合也不在第二个集合,恰好等价于属于两个补集的交。对每个元素都成立,便由集合相等的判据得到恒等式。这是一份完整证明,不依赖集合有限或能画成圆圈。


另一条德摩根律把“交的补”写成“补的并”。它说一个对象没有同时满足两个条件,至少有一个条件失败;不能误写成两个条件都失败。这个区别在概率事件、数据库筛选与逻辑否定中反复出现。集合符号把条件组合具体化,[[逻辑]]则解释其推理形式。
在已经指定的全集 U 内,所有不属于 A 的元素组成 A 的'''补集''':
<math display="block">A^c=U\setminus A=\{1,3,5\}.</math>
这里的“不属于”仅在骰子的六种点数中检查。如果全集扩成从 1 到 10 的整数,同时保持 A 仍为 <math>\{2,4,6\}</math>,补集中就还包括 7、8、9、10。


分配律同样可以逐元素证明。例如一个元素属于 <math>A\cap(B\cup C)</math>,就是先满足属于 <math>A</math>,并且在 <math>B,C</math> 中至少满足一项;把两种情况分开,正好得到 <math>(A\cap B)\cup(A\cap C)</math>。示意图有助于形成直觉,却可能隐藏空区域、包含关系或无限情形;逐元素证明补上了普遍性。
=== 区间运算怎样处理端点 ===
集合的元素也可以遍布一段连续范围。令 <math>A=[-1,2)</math><math>B=(0,3]</math>,方括号表示包括端点,圆括号表示不包括。


反例也可以用同样方法构造。若有人声称 <math>A\setminus(B\cup C)=(A\setminus B)\cup(A\setminus C)</math>,取一个同时属于 <math>A,B</math> 但不属于 <math>C</math> 的元素,它不在左侧,却在右侧第二项中。找到一个反例就能推翻全称恒等式,无需检查所有可能集合。
同时属于两个区间,需要 <math>x>0</math> 且 <math>x<2</math>,所以交集是 <math>(0,2)</math>。至少属于一个区间,就覆盖了从 −1 到 3 的所有点,故并集为 <math>[-1,3]</math>


== 有序对、幂集与新的对象层次 ==
再求差集。A 中的 0 不属于 B,应当保留;A 中任何大于 0 的点都属于 B,应当删去,因此 <math>A\setminus B=[-1,0]</math>。同理,2 属于 B 却不属于 A,所以 <math>B\setminus A=[2,3]</math>。逐个检查边界点,便能决定最后使用圆括号还是方括号。
笛卡尔积 <math>A\times B</math> 是所有有序对 <math>(a,b)</math> 的集合,其中第一项来自 <math>A</math>,第二项来自 <math>B</math>。顺序属于对象定义的一部分,<math>(1,2)</math> 与 <math>(2,1)</math> 不同。有限集合的积有 <math>|A||B|</math> 个元素,因为每个第一项都可与全部第二项配对。若其中一个集合为空,积也为空。


<math>A=\{0,1\}</math><math>B=\{a,b,c\}</math>,积有六个元素,而不是把两集合元素混在一起的五元素并集。关系可以看成笛卡尔积的子集,[[函数]]则是其中满足“每个输入恰有一个输出”的特殊关系。这个构造将函数、图、坐标空间等概念接入统一的集合语言。
== 集合等式为什么成立 ==
求“并集的补集”,就是找两个条件都不符合的对象。仍用骰子例子,<math>A\cup B</math> 只缺少 5;而既不是偶数、又不小于等于 3 的点数也只有 5。这提示了德摩根律
<math display="block">(A\cup B)^c=A^c\cap B^c.</math>
下图把两种描述放在同一个全集中:左边先合并两个圈,再取圈外;右边要求同时在 A 外和 B 外。两边着色区域相同,本例都只包含点数 5。


集合 <math>A</math> 的所有子集组成幂集,记 <math>\mathcal P(A)</math>。若 <math>A=\{u,v\}</math>,幂集为 <math>\{\varnothing,\{u\},\{v\},\{u,v\}\}</math>。幂集元素是子集,而不是原来两个对象。有限集合若有 <math>n</math> 个元素,其每个元素都可选择“加入”或“不加入”某个子集,所以子集共有 <math>2^n</math> 个。
[[File:Gezhi-teaching-foundation-sets-demorgan.svg|frame|center|alt=左右两个相同的全集与相交圆,均着色两圈以外区域,展示并集的补等于两个补集的交|德摩根律把“并集之外”改写成“两个集合都不属于”。]]


这个计数还解释了特征函数:给每个原集合元素标零或一,就编码了一个子集。两种描述信息完全相同,但适合的运算不同。集合语言强调属于哪些对象,零一函数语言则方便逐点计算。以后在[[概率]]中,事件的指示函数就是这一想法的数值形式。
一般证明可以从任意一个全集中的元素 x 出发。它属于左边,当且仅当它不属于 <math>A\cup B</math>;这又等价于 <math>x\notin A</math> 且 <math>x\notin B</math>,正是属于右边的条件。左右两边的成员条件完全相同,集合便相等。


=== 关系如何把集合分块 ===
另一条德摩根律为
在一个集合内,“具有相同余数”“同一天出生”“是同一向量的不同坐标表示”等分类,都需要说明怎样判断等价。若关系具有自反性、对称性和传递性,便称为等价关系。自反性使每个元素属于自己的类别;对称性排除单向归属;传递性保证经由共同对象连接的两类不能互相冲突。
<math display="block">(A\cap B)^c=A^c\cup B^c.</math>
“不同时满足两个条件”,意味着至少一个条件失败。例如骰子点数 4 不是“既偶数又不超过 3”的点数,尽管它满足偶数这个条件。这说明右侧要用并集。


以整数除以三的余数为例,所有整数分成三类,每类分别包含余零、余一、余二的数。每个整数恰落入其中一类,任意两类不相交,而三类合起来覆盖全部整数。这样的非空子集族称为原集合的一个划分。类别数只有三个,并不表示每类元素有限;这里每个类别都无限。
用同样的方法,可以证明分配律:
<math display="block">A\cap(B\cup C)=(A\cap B)\cup(A\cap C).</math>
左侧要求先属于 A,再在 B、C 中至少属于一个。按后一个条件分成两种情况,正好得到右侧的两部分。


一般地,等价关系的等价类构成一个划分。若两个类别有共同元素,使用对称性和传递性便可把一类中任何元素连到另一类的代表,于是两类相同。反过来,任何划分都能定义一个等价关系:两个元素属于同一块时才等价。这给出“关系规则”与“分块结果”之间的对应,而不只是给分类另起一个名字。
差集的分配形式则需要重新检查。例如
<math>A\setminus(B\cup C)</math> 应当是 <math>(A\setminus B)\cap(A\setminus C)</math>。若误用并集,取 <math>A=B=\{1\}</math>、<math>C=\varnothing</math>,左侧为空,误写的右侧却含有 1。一个具体元素已足以判定两集合不等。


不是任何相似性都能当作等价关系。例如规定两个实数相差不到一就算相似,零与零点六相似,零点六与一点二相似,但零与一点二不相似,传递性失败。因此凭局部相似直接分成互不重叠的类别,可能遇到边界冲突。集合论要求写清规则,正是为了把这种隐含问题暴露出来。[[同余]]提供了一个完整满足三条条件的分类模型。
=== 用元素检查区域 ===
下面固定全集 <math>U=\{1,2,3,4,5,6\}</math>,<math>A=\{2,4,6\}</math>,<math>B=\{4,5,6\}</math>。选择一种运算后,先逐个判断哪些数满足条件,再与着色区域核对。特别比较“并集的补集”和“两个补集的交集”:两种描述都留下 1 与 3。这个有限例子帮助读图,前面的逐元素论证才说明等式对任意集合成立。


== 无限集合为什么需要另一种大小比较 ==
<math-experiment type="sets" />
两个集合若存在双射,就称等势,即能一一配对。对有限集合,这与元素个数相等一致;对无限集合则提供了不依赖“数完”为止的比较方式。非负整数与非负偶数可以按 <math>n\mapsto2n</math> 一一配对,尽管偶数是真子集。因此“真子集必然更少”只适用于有限集合。


但这并不意味着所有无限集合一样大。康托尔定理说,任何集合到它的幂集都不存在满射。证明可以直接给出:假设 <math>f:A\to\mathcal P(A)</math> 能列出所有子集,构造 <math>D=\{x\in A:x\notin f(x)\}</math>。若 <math>D=f(d)</math>,则 <math>d\in D</math> 等价于 <math>d\notin D</math>,产生矛盾。所以总有一个子集不在列表中。
== 用集合建立配对和选择 ==
有时一个对象由两个部分组成,例如一次选择由“尺码”和“颜色”共同决定。这需要有序对:第一项与第二项各有位置,<math>(1,2)</math> <math>(2,1)</math> 因而不同。


另一方面,把每个元素送到只含它自身的单元素集,就得到原集合到其幂集的单射:不同元素产生不同单元素集。结合不存在满射的结论,才完整表达幂集严格更大的含义;不能只凭子集数量的有限直觉,跳过无限情形所需的比较规则。
设 <math>A=\{0,1\}</math>、<math>B=\{a,b,c\}</math>。全部可能的有序对组成'''笛卡尔积'''
<math display="block">A\times B=\{(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)\}.</math>
每个第一项都配上三个第二项,共有 <math>2\cdot3=6</math> 对。一般有限集合满足 <math>|A\times B|=|A||B|</math>;有一边为空时,连一个完整配对也没有,积便为空。[[函数]]的输入与输出可以组成有序对,因此函数也能用这种语言描述。


这个论证不要求原集合可数,也不依赖十进制展开的细节。它的构造方式是对每个候选集合,在与其索引对应的位置做出相反选择,从而保证新集合不等于任何一个候选。有限情况下,定理与 <math>2^n>n</math> 一致;无限情况下,它说明大小还有严格不同的层次。此处只介绍结论与证明,不把无限基数的进一步运算混同于普通整数运算。
另一种问题是从一个集合中选出任意一些元素。若 <math>A=\{u,v\}</math>,全部选法为
<math display="block">\varnothing,\quad\{u\},\quad\{v\},\quad\{u,v\}.</math>
把这些子集作为元素放在一起,得到 A 的'''幂集''' <math>\mathcal P(A)</math>。一个有 n 个元素的集合,每个元素都有“选”与“不选”两种状态,故幂集有 <math>2^n</math> 个元素。也可以用一串 0、1 记录这些选择;在[[概率]]中,事件的指示函数采用的就是这种记录方式。


== 集合构造的边界与历史 ==
== 按同一种标准分组 ==
朴素地允许“任何条件描述出的对象全体”形成集合,会出现罗素型矛盾。假定所有不属于自身的集合可以组成集合 <math>R</math>,再问 <math>R</math> 是否属于自身,两种答案都会与定义冲突。问题不在于普通有限集合运算失效,而在于允许无限制地搜集所有集合的构造原则过强。
将整数按除以 3 的余数分组,会得到三类:余 0、余 1、余 2。每个整数恰在其中一类,各类互不重叠,合起来又包含全部整数。这样的一组非空子集叫作原集合的'''划分'''。


现代公理化集合论限定哪些构造保证得到集合。例如分离思想允许从一个已经给定的集合中,筛选满足条件的元素,而不是自动承认一个包罗所有集合的全集。初等数学通常在清楚指定的数字、函数或几何对象范围内操作,因此不必每次展开公理体系,但仍应避免宣称存在“所有集合组成的集合”。
这里“属于同一类”有三个性质:每个数与自己同类;a 与 b 同类时,b 也与 a 同类;a 与 b 同类、b 与 c 同类时,a 与 c 也同类。这分别称为自反性、对称性和传递性。具备这三条性质的关系叫作等价关系。


Cantor 在 1874 年的论文中研究代数实数与实数的大小差异,是现代集合论形成的重要节点;其工作把无限大小作为可精确比较的数学问题。Zermelo 在 1908 年提出集合论公理系统,为允许的集合构造提供规则。这是从研究无限到处理基础问题的两种不同贡献,不能写成同一次发现。[https://mathshistory.st-andrews.ac.uk/HistTopics/Beginnings_of_set_theory/ MacTutor:A history of set theory]、[https://plato.stanford.edu/entries/zermelo-set-theory/ Stanford Encyclopedia:Zermelo’s Axiomatization of Set Theory]分别讨论了这些发展。
给定等价关系,把与 a 等价的所有元素收集起来,便得到 a 的等价类。若两类共享一个元素 z,第一类的任意元素可以经由 z 与第二类的代表相连,由对称性和传递性可知它也在第二类;反过来也成立。因此两类一旦相交就必相同。这说明等价类确实形成划分。反过来,从任意划分出发,把“在同一块中”作为等价的定义,也具有上述三条性质。


== English overview ==
“看起来接近”未必能如此分组。例如把两个相差不到 1 的实数称为接近,0 与 0.6 接近,0.6 与 1.2 接近,0 与 1.2 却不接近。缺少传递性时,就不能据此直接形成互不重叠的等价类。整数的[[同余]]提供了严格成立的分组例子。
<div lang="en" class="math-english-summary">
A set is determined by its elements. Order and repeated occurrences do not matter, so a set is different from a sequence or a multiset. Membership asks whether one object belongs to a set, whereas inclusion asks whether every element of one set belongs to another. These distinctions remain important when sets themselves are elements.


Union, intersection, difference, and complement translate combinations of conditions into operations on sets. Complements require a specified universe. Worked examples with finite sets and real intervals show how membership and endpoint conditions determine the result. Elementwise arguments prove identities such as De Morgan's laws without relying on a particular diagram.
== 无限集合的大小 ==
对有限集合,可以数元素个数;对无限集合,可以改问元素能否一一配对。若两集合之间存在[[函数|双射]],就称它们'''等势'''。


Cartesian products collect ordered pairs, and power sets collect subsets. These constructions provide the language for relations, functions, and counting. Bijections compare the sizes of sets, including infinite ones. An infinite set can be equinumerous with a proper subset, but Cantor's theorem shows that its power set is always strictly larger. Unrestricted collection principles lead to paradoxes, which motivates the controlled constructions of axiomatic set theory.
非负整数与非负偶数可按 <math>n\mapsto2n</math> 配对:0 配 0,1 配 2,2 配 4,依此类推。不同输入不会配到同一个偶数,每个非负偶数也恰好对应它的一半。因此无限集合可能与自己的真子集等势。
</div>


== 编者评注(AI 辅助) ==
但无限集合也有不同的大小。康托尔定理说,对任何集合 A,函数 <math>f:A\to\mathcal P(A)</math> 都不可能列出 A 的全部子集。理解这个结论,可以设想每个元素 x 名下登记一个子集 f(x),然后试着构造一个没有登记过的子集。
本条的重点不是罗列符号,而是区分元素、子集和由子集组成的新集合。有限列举与区间端点两套例子分别检查离散对象和连续范围,逐元素证明再说明结论为何不依赖图形。无限部分保留完整的幂集证明,但不展开基数理论的全部技术。文字由 AI 辅助整理;编者把构造边界放在最后,是为了使初等运算可直接使用,同时不把朴素直觉误写成无限制的公理。


== 参考资料与后续阅读 ==
构造方法是:检查 x 是否在自己名下的子集 f(x) 中;不在,就把 x 选入新集合,在,就不选。由此得到
* [https://www.jirka.org/ra/html/sec_basicset.html Jiří Lebl,Basic Analysis,Basic set theory]:集合、函数与大小比较的开放教材。
<math display="block">D=\{x\in A:x\notin f(x)\}.</math>
* [https://mathshistory.st-andrews.ac.uk/HistTopics/Beginnings_of_set_theory/ J. J. O’Connor、E. F. Robertson,A history of set theory]:Cantor 的研究与历史脉络。
D 不可能等于任何 f(d)。如果 d 属于 D,构造规则要求 d 不属于 f(d),两集合在 d 处不同;如果 d 不属于 D,规则又要求 d 属于 f(d),仍然不同。因此总有一个子集漏在列表之外。
* [https://plato.stanford.edu/entries/zermelo-set-theory/ Stanford Encyclopedia of Philosophy,Zermelo’s Axiomatization of Set Theory]:1908 年公理化工作的背景与内容。
 
* 后续可读[[函数]]、[[逻辑]]、[[组合数学]]、[[概率]][[拓扑空间]]。
同时,<math>x\mapsto\{x\}</math> 能把 A 中的不同元素送到不同子集。A 可以嵌入自己的幂集,而幂集无法被 A 一一列尽,这就是幂集严格更大的含义。有限情形的 <math>2^n>n</math> 是同一个现象的计数形式。
 
== 集合论的发展与构造边界 ==
Cantor 在 1874 年的论文中比较代数实数与全体实数的大小,推动了对不同无限规模的研究。[https://mathshistory.st-andrews.ac.uk/HistTopics/Beginnings_of_set_theory/ MacTutor 集合论史]介绍了这一工作及后续的发展。
 
研究也表明,并非随便描述一个“全体”都能得到集合。若假设所有不属于自身的集合组成一个集合 R,再问 R 是否属于自身,就会出现矛盾:属于自身便不符合收集条件,不属于自身又符合条件而应被收集。这是罗素悖论的形式。
 
Zermelo 在 1908 年提出公理系统,限制哪些构造能够产生集合。其中的分离原则允许从一个已给定的集合中筛选满足条件的元素,而不直接承认一个包含所有集合的全集。这样,开头从骰子全集 U 中筛选偶数,与任意搜集“所有集合”便有了明确区别。[https://plato.stanford.edu/entries/zermelo-set-theory/ Stanford Encyclopedia:Zermelo’s Axiomatization of Set Theory]
 
== 参考资料 ==
* [https://www.jirka.org/ra/html/sec_basicset.html Jiří Lebl,Basic Analysis,Basic set theory]:集合、函数与大小比较。
* [https://mathshistory.st-andrews.ac.uk/HistTopics/Beginnings_of_set_theory/ J. J. O’Connor、E. F. Robertson,A history of set theory]
* [https://plato.stanford.edu/entries/zermelo-set-theory/ Stanford Encyclopedia of Philosophy,Zermelo’s Axiomatization of Set Theory]
* 相关条目:[[函数]]、[[逻辑]]、[[组合数学]]、[[概率]][[拓扑空间]]。
[[分类:基础与逻辑]]
[[分类:基础与逻辑]]

2026年9月20日 (日) 07:17的最新版本

集合(set)是把一些确定的对象放在一起所形成的数学对象,其中的对象叫作元素。两个集合只要元素完全相同,就是同一个集合;元素的排列顺序和重复书写的次数不影响集合。

例如,方程 x2=1 的实数解有两个,可以把它们合写成解集 {1,1}。花括号表示“把这些对象作为一个整体”。集合语言使我们既能讨论某一个解,也能讨论所有解之间的关系。

怎样说明一个集合

设一枚骰子的六种点数构成集合 U={1,2,3,4,5,6}. 如果只取偶数点数,就得到 A={2,4,6}。记号 2A 读作“2 属于 A”,而 3A 表示 3 不是 A 的元素。

除了逐个列举,还可以用条件描述同一个集合: A={nU:n 是偶数}. 冒号前说明从哪里取对象,冒号后说明筛选条件。这样写特别适合不能逐项列完的集合。例如 {n:n>0} 是全体正整数,其中 表示整数集合。

范围会影响结果。方程 x2=1 在实数中的解集是 {1,1},限制在非负实数中则只有 {1}。“很大的数”还没有确定的范围和标准,而“超过一百万的整数”已经能逐一判断某个对象是否属于其中。定义一个集合并不要求能迅速找到它的每个元素,但成员条件应当明确。

集合也不保留次数。例如 {1,2,2}={1,2}。如果一组测量记录为 1、2、2,改写成集合后就丢失了一次重复测量;计算平均值时仍须使用原记录。需要保留顺序的对象可以用序列表示,需要保留次数的对象可以用多重集表示。

“属于”和“包含”问的是两件事

继续看骰子集合。A={2,4,6} 中的每个元素都在 U 中,因而称 A 是 U 的子集,记为 AU。这个符号问的是一整组对象是否全部被包含,而 2A 问的是一个对象是否属于其中。

集合本身也可以充当元素。取 C={1,{2}}. C 的两个元素分别是数字 1 和集合 {2}。因此 {2}C,但 2C。另一方面,{1}C,因为它唯一的元素 1 在 C 中;{2}⊈C,因为它唯一的元素 2 不在 C 中。辨别这两种关系时,要先看清正在检查的是哪个对象。

没有任何元素的集合称为空集,记作 。它与 {} 不同:前者没有元素,后者有一个元素,这个元素本身是空集。空集是任何集合的子集,因为不存在“属于空集却不属于另一个集合”的元素。

证明两个集合相等,常用双向包含:先证明 A 的每个元素都在 B 中,再证明 B 的每个元素都在 A 中。这样双方都没有多余的元素,便有 A=B。这里的 允许相等;若 A 是 B 的子集而又不等于 B,记为 AB,称为真子集。

把两个筛选条件合起来

除偶数点数 A={2,4,6} 外,再设 B={1,2,3},表示不超过 3 的点数。现在有几种不同的筛选要求。

“是偶数,或者不超过 3”得到并集 AB;这里“或者”允许两个条件同时成立。“是偶数,并且不超过 3”得到交集 AB。逐项筛选,得到 AB={1,2,3,4,6},AB={2}. 下图将两种筛选并排画出。左图着色整个 A 与 B,只要在任一圈内便被保留;右图只着色两圈重叠处,保留下来的元素只有 2。

骰子点数集合的并集与交集,左图两圈整体着色包含一二三四六,右图只着色重叠处的二
并集取两圈覆盖的全部区域,交集只取共同区域。

点数 2 同时符合两个条件,但在并集中只出现一次。记 |A| 为有限集合 A 的元素个数,就有 |AB|=|A|+|B||AB|=3+31=5. 减去交集,是因为先前相加时把其中的元素计算了两遍。这是组合数学中容斥计数的起点。

“是偶数,但超过 3”得到差集 AB={4,6};反过来,BA={1,3}。差集有方向,交换两集合会改变答案。

在已经指定的全集 U 内,所有不属于 A 的元素组成 A 的补集Ac=UA={1,3,5}. 这里的“不属于”仅在骰子的六种点数中检查。如果全集扩成从 1 到 10 的整数,同时保持 A 仍为 {2,4,6},补集中就还包括 7、8、9、10。

区间运算怎样处理端点

集合的元素也可以遍布一段连续范围。令 A=[1,2)B=(0,3],方括号表示包括端点,圆括号表示不包括。

同时属于两个区间,需要 x>0x<2,所以交集是 (0,2)。至少属于一个区间,就覆盖了从 −1 到 3 的所有点,故并集为 [1,3]

再求差集。A 中的 0 不属于 B,应当保留;A 中任何大于 0 的点都属于 B,应当删去,因此 AB=[1,0]。同理,2 属于 B 却不属于 A,所以 BA=[2,3]。逐个检查边界点,便能决定最后使用圆括号还是方括号。

集合等式为什么成立

求“并集的补集”,就是找两个条件都不符合的对象。仍用骰子例子,AB 只缺少 5;而既不是偶数、又不小于等于 3 的点数也只有 5。这提示了德摩根律 (AB)c=AcBc. 下图把两种描述放在同一个全集中:左边先合并两个圈,再取圈外;右边要求同时在 A 外和 B 外。两边着色区域相同,本例都只包含点数 5。

左右两个相同的全集与相交圆,均着色两圈以外区域,展示并集的补等于两个补集的交
德摩根律把“并集之外”改写成“两个集合都不属于”。

一般证明可以从任意一个全集中的元素 x 出发。它属于左边,当且仅当它不属于 AB;这又等价于 xAxB,正是属于右边的条件。左右两边的成员条件完全相同,集合便相等。

另一条德摩根律为 (AB)c=AcBc. “不同时满足两个条件”,意味着至少一个条件失败。例如骰子点数 4 不是“既偶数又不超过 3”的点数,尽管它满足偶数这个条件。这说明右侧要用并集。

用同样的方法,可以证明分配律: A(BC)=(AB)(AC). 左侧要求先属于 A,再在 B、C 中至少属于一个。按后一个条件分成两种情况,正好得到右侧的两部分。

差集的分配形式则需要重新检查。例如 A(BC) 应当是 (AB)(AC)。若误用并集,取 A=B={1}C=,左侧为空,误写的右侧却含有 1。一个具体元素已足以判定两集合不等。

用元素检查区域

下面固定全集 U={1,2,3,4,5,6}A={2,4,6}B={4,5,6}。选择一种运算后,先逐个判断哪些数满足条件,再与着色区域核对。特别比较“并集的补集”和“两个补集的交集”:两种描述都留下 1 与 3。这个有限例子帮助读图,前面的逐元素论证才说明等式对任意集合成立。

集合的交、并与补

选择一种集合运算,对照区域和元素,看符号描述的是哪些对象。

静态配图与完整推导见本节正文;交互演示需浏览器启用 JavaScript。

用集合建立配对和选择

有时一个对象由两个部分组成,例如一次选择由“尺码”和“颜色”共同决定。这需要有序对:第一项与第二项各有位置,(1,2)(2,1) 因而不同。

A={0,1}B={a,b,c}。全部可能的有序对组成笛卡尔积 A×B={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}. 每个第一项都配上三个第二项,共有 23=6 对。一般有限集合满足 |A×B|=|A||B|;有一边为空时,连一个完整配对也没有,积便为空。函数的输入与输出可以组成有序对,因此函数也能用这种语言描述。

另一种问题是从一个集合中选出任意一些元素。若 A={u,v},全部选法为 ,{u},{v},{u,v}. 把这些子集作为元素放在一起,得到 A 的幂集 𝒫(A)。一个有 n 个元素的集合,每个元素都有“选”与“不选”两种状态,故幂集有 2n 个元素。也可以用一串 0、1 记录这些选择;在概率中,事件的指示函数采用的就是这种记录方式。

按同一种标准分组

将整数按除以 3 的余数分组,会得到三类:余 0、余 1、余 2。每个整数恰在其中一类,各类互不重叠,合起来又包含全部整数。这样的一组非空子集叫作原集合的划分

这里“属于同一类”有三个性质:每个数与自己同类;a 与 b 同类时,b 也与 a 同类;a 与 b 同类、b 与 c 同类时,a 与 c 也同类。这分别称为自反性、对称性和传递性。具备这三条性质的关系叫作等价关系。

给定等价关系,把与 a 等价的所有元素收集起来,便得到 a 的等价类。若两类共享一个元素 z,第一类的任意元素可以经由 z 与第二类的代表相连,由对称性和传递性可知它也在第二类;反过来也成立。因此两类一旦相交就必相同。这说明等价类确实形成划分。反过来,从任意划分出发,把“在同一块中”作为等价的定义,也具有上述三条性质。

“看起来接近”未必能如此分组。例如把两个相差不到 1 的实数称为接近,0 与 0.6 接近,0.6 与 1.2 接近,0 与 1.2 却不接近。缺少传递性时,就不能据此直接形成互不重叠的等价类。整数的同余提供了严格成立的分组例子。

无限集合的大小

对有限集合,可以数元素个数;对无限集合,可以改问元素能否一一配对。若两集合之间存在双射,就称它们等势

非负整数与非负偶数可按 n2n 配对:0 配 0,1 配 2,2 配 4,依此类推。不同输入不会配到同一个偶数,每个非负偶数也恰好对应它的一半。因此无限集合可能与自己的真子集等势。

但无限集合也有不同的大小。康托尔定理说,对任何集合 A,函数 f:A𝒫(A) 都不可能列出 A 的全部子集。理解这个结论,可以设想每个元素 x 名下登记一个子集 f(x),然后试着构造一个没有登记过的子集。

构造方法是:检查 x 是否在自己名下的子集 f(x) 中;不在,就把 x 选入新集合,在,就不选。由此得到 D={xA:xf(x)}. D 不可能等于任何 f(d)。如果 d 属于 D,构造规则要求 d 不属于 f(d),两集合在 d 处不同;如果 d 不属于 D,规则又要求 d 属于 f(d),仍然不同。因此总有一个子集漏在列表之外。

同时,x{x} 能把 A 中的不同元素送到不同子集。A 可以嵌入自己的幂集,而幂集无法被 A 一一列尽,这就是幂集严格更大的含义。有限情形的 2n>n 是同一个现象的计数形式。

集合论的发展与构造边界

Cantor 在 1874 年的论文中比较代数实数与全体实数的大小,推动了对不同无限规模的研究。MacTutor 集合论史介绍了这一工作及后续的发展。

研究也表明,并非随便描述一个“全体”都能得到集合。若假设所有不属于自身的集合组成一个集合 R,再问 R 是否属于自身,就会出现矛盾:属于自身便不符合收集条件,不属于自身又符合条件而应被收集。这是罗素悖论的形式。

Zermelo 在 1908 年提出公理系统,限制哪些构造能够产生集合。其中的分离原则允许从一个已给定的集合中筛选满足条件的元素,而不直接承认一个包含所有集合的全集。这样,开头从骰子全集 U 中筛选偶数,与任意搜集“所有集合”便有了明确区别。Stanford Encyclopedia:Zermelo’s Axiomatization of Set Theory

参考资料