跳到主要内容

2.2. 集合运算

两个或多个集合可以以许多不同的方式结合在一起。

并集(union)
AABB为集合,集合AABB的并集,用ABA\cup B表示,是一个集合,它包含AABB中或同时在AABB中的元素。

一个元素xx属于AABB的并集当且仅当xx属于AAxx属于BB。这说明

AB={xxAxB}A\cup B = \{x \enspace | \enspace x \in A \lor x \in B \}
交集(intersection)
AABB为集合,集合AABB的交集,用ABA\cap B表示,是一个集合,它包含同时在AABB中的那些元素。

一个元素xx属于集合AABB的交集当且仅当xx属于AA并且xx属于BB。这说明

AB={xxAxB}A\cap B = \{x \enspace | \enspace x \in A \land x \in B \}

两个集合称为不相交的,如果它们的交集为空集。

集合基数的计算AB=A+BAB|A \cup B| = |A| + |B| - |A \cap B|。把这一结果推广到任意多个集合的并集就是所谓的包含排斥原理或简称容斥原理。容斥原理是枚举中的一项重要技术。

差集(difference)
AABB为集合,集合AABB的差集,用ABA - B表示,是一个集合,它包含属于AA而不属于BB的元素。AABB的差集也称为B相对于A的补集。

集合AABB的差集有时也记为 ABA \setminus B

一个元素xx属于AABB的差集当且仅当xAx \in AxBx \notin B,这说明

AB={xxAxB}A - B = \{x \enspace | \enspace x \in A \land x \notin B\}
对称差(symmetric difference)
集合AABB的对称差,用ABA\oplus B表示,是属于AA或属于BB但不同时属于AABB的元素组成的集合。
AB={x(xAxB)xAB}AB=ABAB\begin{array}{ll} A\oplus B = \set{x | (x \in A \lor x \in B) \land x \notin A\cap B } \\ A\oplus B = A\cup B \setminus A\cap B \end{array}

例:A={0,1,2,3},B={1,3,5,7,9}.AB={0,2,5,7,9}A = \set{0,1,2,3}, B=\set{1,3,5,7,9}. A\oplus B = \set{0,2,5,7,9}

补集
UU为全集。集合AA的补集,用A\overline{A}表示,是AA相对于UU的补集。所以集合AA的补集是UAU-A。补集也可以写成UA\complement{_U}{A}

一个元素x属于A当且仅当xAx \notin A。这说明

UA=A={xUxA}\complement{_U}{A} = \overline{A} = \{x \in U | x \notin A\}

{xUxA}\{x \in U | x \notin A\}是一个真值集,意为满足 xAx \notin A并且 xUx \in U的所有元素的集合。

集合恒等式

恒等式名称
AU=A,A=AA \cap U = A,\enspace A\cup\varnothing = A恒等率
AU=U,A=UA \cup U = U,\enspace A\cap\varnothing = U支配率
AA=A,AA=AA \cap A = A,\enspace A\cup A = A幂等率
(A)\overline{(\overline{A})}补率
AB=BA,AB=BAA \cap B = B\cap A,\enspace A \cup B = B\cup A交换率
A(BC)=(AB)CA(BC)=(AB)CA\cup(B\cup C)=(A\cup B)\cup C \\ A\cap(B\cap C)=(A\cap B)\cap C结合率
A(BC)=(AB)(AC)A(BC)=(AB)(AC)A\cup(B\cap C)=(A\cup B)\cap(A\cup C)\\ A\cap(B\cup C)=(A\cap B)\cup(A\cap C)分配率
AB=ABAB=AB\overline{A\cap{B}}=\overline{A}\cup\overline{B}\\ \overline{A\cup{B}}=\overline{A}\cap\overline{B}德摩根率
A(AB)=AA(AB)=AA\cup(A\cap B)=A\\A\cap(A\cup B)=A吸收率
AA=UAA=A\cup\overline{A}=U\\A\cap\overline{A}=\varnothing互补率

分配率证明:
A(BC)=(AB)(AC)A\cup(B\cap C)=(A\cup B)\cap(A\cup C)

此题证明主要用到了逻辑运算中的分配率p(qr)=(pq)(pr)p \lor(q\land r) = (p \lor q)\land(p\lor r)

A(BC)={xxAx(BC)}={xxA(xBxC)}={x(xAxB)(xAxC)}={xxABxAC}=(AB)(AC)\begin{array}{lll} A\cup(B\cap C) &=\{x \enspace | \enspace x \in A \lor x \in(B \cap C)\}\\ &= \{x \enspace | \enspace x \in A \lor (x \in B \land x\in C)\}\\ &= \{x \enspace | \enspace (x \in A \lor x \in B)\land(x\in A \lor x \in C) \}\\ &= \{x \enspace | \enspace x \in A\cup B \land x \in A\cup C\}\\ &= (A\cup{B})\land(A\cup{C}) \end{array}

A(BC)=(AB)(AC)A\cap(B\cup C)=(A\cap B)\cup(A\cap C)的证明与上面类似。

德摩根率证明:

AB={xxAB}补集的定义={x¬(xAB)}不属于符号的含义={x¬(xAxB)}交集的定义={x¬(xA)¬(xB)}逻辑等价式的第一德摩根率={xxAxB}不属于符号的含义={xxAxB}补集的定义={xxAB}并集的定义=AB集合构造器记号的含义\begin{array}{lll} \overline{A \cap B} &= \{x \enspace | \enspace x \notin A\cap B\} & \small\text{补集的定义}\\ &= \{x \enspace | \enspace \lnot( x \in A\cap B)\} & \small\text{不属于符号的含义}\\ &= \{x \enspace | \enspace \lnot( x \in A \land x \in B)\} & \small\text{交集的定义}\\ &= \{x \enspace | \enspace \lnot(x \in A) \lor \lnot(x \in B) \} & \small\text{逻辑等价式的第一德摩根率}\\ &= \{x \enspace | \enspace x \notin A \lor x \notin B\} & \small\text{不属于符号的含义}\\ &= \{x \enspace | \enspace x \in \overline{A} \lor x \in \overline{B}\} & \small\text{补集的定义}\\ &= \{x \enspace | \enspace x \in \overline{A}\cup\overline{B}\} & \small\text{并集的定义}\\ &=\overline{A}\cup\overline{B} & \small\text{集合构造器记号的含义} \end{array}

扩展的并集和交集

由于集合的交集和并集满足结合律,所以只要AABBCC为集合,则ABCA\cup{B}\cup{C}ABCA\cap{B}\cap{C}均有定义,即这样的记号是无二义性的。我们不需要用括号来指明哪个运算在前。

  • ABCA\cup{B}\cup{C}包含那些至少属于AABBCC为中一个集合的元素。
  • ABCA\cap{B}\cap{C}包含那些属于AABBCC全部3个集合中的元素。
多个集合的并集
一组集合的并集是包含那些至少是这组集合中一个集合成员的元素的集合。
我们用下列记号
A1A2...An=i=1nAiA_1 \cup A_2 \cup ... \cup A_n = \bigcup_{i=1}^{n}A_i

表示集合A1A2...AnA_1 \cup A_2 \cup ... \cup A_n的并集。

多个集合的交集
一组集合的交集是包含那些属于这组集合中所有成员集合的元素的集合。
我们用下列记号
A1A2...An=i=1nAiA_1 \cap A_2 \cap ... \cap A_n = \bigcap_{i=1}^{n}A_i

表示集合A1A2...AnA_1 \cap A_2 \cap ... \cap A_n的交集。

例题:Ai={i,i+i,i+2,...}A_i = \{i, i+i, i+2, ...\}i=1,2,3,...i=1,2,3,...。那么,

i=1nAi=i=1n{i,i+i,i+2,...}={1,2,3,...}\bigcup_{i=1}^{n}A_i=\bigcup_{i=1}^{n} \{i, i+i, i+2, ...\}=\{1,2,3,...\}

i=1nAi=i=1n{i,i+i,i+2,...}={n,n+1,n+2,...}=An\bigcap_{i=1}^{n}A_i=\bigcap_{i=1}^{n}\{i, i+i, i+2, ...\}=\{n, n+1,n+2,...\}=A_n

我们可以将并集和交集的记号扩展到其他系列的集合。

A1A2...An...=i=1AiA1A2...An...=i=1AiA_1 \cup A_2 \cup ... \cup A_n\cup ... = \bigcup_{i=1}^{\infty}A_i\\ A_1 \cap A_2 \cap ... \cap A_n\cap ... = \bigcap_{i=1}^{\infty}A_i

更一般地,当  I  \;I\;是一个集合时,可以用记号iIAi\bigcap_{i\in{I}} A_iiIAi\bigcup_{i\in{I}} A_i分别表示对于iIi \in I 的集合AiA_i的交集和并集。注意我们有

iIAi={xiI(xAi)}iIAi={xiI(xAi)}\textstyle\bigcap_{i\in{I}} A_i = \{x \enspace | \enspace \forall\: i \in I (x \in A_i)\} \text{和} \bigcup_{i\in{I}} A_i=\{x \enspace | \enspace \exist\: i \in I (x \in A_i)\}

例题: 假设对于i=1,2,3,...i=1,2,3,...,集合 Ai={1,2,3,...,i}A_i = \{1, 2, 3, ...,i\}。那么,

i=1Ai=i=1{1,2,3,,i}={1,2,3,}=Z+\bigcup_{i=1}^{\infty}A_i=\bigcup_{i=1}^{\infty} \{1,2,3,\dots,i\} = \{1,2,3,\dots\} = Z^+ i=1Ai=i=1{1,2,3,,i}={1}\bigcap_{i=1}^{\infty}A_i=\bigcap_{i=1}^{\infty} \{1,2,3,\dots,i\} = \{1\}

集合的计算机表示

利用二进制的位运算可以快速对集合进行各种运算。

U={1,2,3,4,5,6,7,8,9,10}U=\{1,2,3,4,5,6,7,8,9,10\},集合A={1,3,5,7,9}A = \{1,3,5,7,9\}B={2,4,6,8,10}B = \{2,4,6,8,10\},将集合元素在全集中的位置标记为A,不在的位置标记为0,则

A=1010101010B=0101010101AB=10101010100101010101=1111111111=UAB=10101010100101010101=0000000000=A=¬1010101010=0101010101=B\begin{array}{ll} A &= 10\: 1010\: 1010\\ B &= 01\: 0101\: 0101\\ A\cup{B} &= 10\: 1010\:1010 \lor01\: 0101\: 0101=11\: 1111\: 1111 = U\\ A\cap{B} &= 10\: 1010\:1010 \land01\: 0101\: 0101=00\: 0000\: 0000 = \varnothing\\ \overline{A} &= \lnot 10\: 1010\: 1010 = 01\: 0101\: 0101 = B \end{array}