集合基本概念
 集合的表示法
- 列举法
 
- 特征法
 
 子集
定理1.1:集合A和集合B相等的充要条件是:A⊆B⋀B⊆A
 
空集$ \emptyset $是任何集合的子集
 全集和补集
补集:设集合A,属于全集E,对于任意元素x
- x∈E
 
- x∈/A
 
则有x促成的集合称为A的补集合,记为:~A或Aˉ
 幂集
幂集:设A是集合,有A的所有子集作为元素构成的集合称为A的幂集,记为P(A)
定理1.2:设A是具有n个元素的有限集,即|A| = n ,其幂集的基∣P(A)∣=2n
 
 定理1.1.2 证明
证明:根据排列组合规律,幂集的基为:∣P(A)∣=Cn0+Cn1+Cn2+...+Cnn
由二项式定理得:(a+b)n=Cn0×an+Cn1×a(n−1)×b1+...+Cnn−1×a1×bn−1+Cnn×bn
令a=b=1,得:2n=Cn0+Cn1+Cn2+...+Cnn
∴∣P(A)∣=2n
由此我们可以知道,一个集合A的所有子集的个数,一定是2的幂次,那么如何遍历一个集合的所有子集呢?
 子集的遍历(生成幂集)
遍历一个集合的子集,也就是要生成该集合对应的幂集,由于幂集的元素个数总为2的次方,而对于集合中的每一个元素,讨论他是否在某个子集中时,他只有两种状态,在于不在,于是可以用0,1两种表示,则我们可以用n位二进制来表示幂集中的所有元素,而由定理1.1.2的证明我们可以知道n位二进制数是足够的,下面我们来实现一下:
 查看代码 
              
              1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | void BinarySearch(set<int> &mySet) {     int length = mySet.size();     int n = 1 << length;     for (int i = 0; i < n; i++)     {         for (int j = 0; j < n; j++)         {             if (i & (1 << j))             {                 cout << j << " ";             }         }         cout << endl;     } }
   | 
 
               
             
 集合基本运算
 交和并
- A∩B=B∩A,A∪B=B∪A
 
- (A∩B)∩C=A∩(B∩C),(A∪B)∪C=A∪(B∪C)——结合律
 
- A∩A=A,A∪A=A
 
- A∩∅=∅,A∪∅=A
 
- A∩E=A,A∪E=E
 
 分配律
定理1.3:A∩(B∪C)=(A∩B)∪(A∩C)
 
定理1.3:A∪(B∩C)=(A∪B)∩(A∪C)
 
 德·摩根率
定理1.4:A∪Bˉ=Aˉ∩Bˉ
 
定理1.4:A∩Bˉ=Aˉ∪Bˉ
 
 证明
 点击查看证明 
              
              证明:设A∪Bˉ=P,Aˉ∩Bˉ=Q,x∈P,
则x∈/A⋀x∈/B
即x∈Aˉ⋀x∈Bˉ
∴x∈Aˉ∩Bˉ
∴P⊆Q
设y∈Q
则y∈Aˉ⋀y∈Bˉ
∴y∈/A⋀y∈/B
∴y∈P
∴Q⊆P
由定理1.1得P=Q
               
             
定理1.3也可由类似方法证明
 吸收律
定理1.5:A∪(A∩B)=A
 
定理1.5:A∩(A∪B)=A
 
 不知名公式
定理1.6:A∪(Aˉ∩B)=A∪B
 
 差和对称差(异或)
差:设A、B为集合,x为元素
- x∈A
 
- x∈/B
 
由x组成的集合称为A与B的差集,记为A-B
- A−A=∅
 
- $ A - \emptyset = A$
 
- A−E=∅
 
- E−A=Aˉ
 
定理1.7:A−B=A∩Bˉ
 
定理1.7:A−(B∪C)=(A−B)∩(A−C)
 
定理1.7:A−(B∩C)=(A−B)∪(A−C)
 
对称差:设集合A、B,x为元素
- x∈A⋀x∈/B⋁
 
- x∈B⋀x∈/A
 
由x组成的集合称为A与B的对称差,记为A⊕B
定理1.8:A⊕B=(A−B)∪(B−A)
 
定理1.8:A⊕B=(A∪B)∩(Bˉ∪Aˉ)=(A∪B)−(A∩B)
 
定理1.8:A∩(B⊕C)=(A∩B)⊕(A∩C)
 
 集合运算总结
 等幂率
- A∩A=A
 
- A∪A=A
 
 交换率
- A∩B=B∩A
 
- A∪B=B∪A
 
- A⊕B=B⊕A
 
 结合律
- (A∩B)∩C=A∩(B∩C)
 
- (A∪B)∪C=A∪(B∪C)
 
- (A⊕B)⊕C=A⊕(B⊕C)
 
 分配律
- A∩(B∪C)=(A∩B)∪(A∩C)
 
- A∪(B∩C)=(A∪B)∩(A∪C)
 
- A∩(B⊕C)=(A∩B)⊕(A∩C)
 
 摩根率
- A∩Bˉ=Aˉ∪Bˉ
 
- A∪Bˉ=Aˉ∩Bˉ
 
 吸收率
- A∩(A∪B)=A
 
- A∪(A∩B)=A
 
 补余率
- A∩Aˉ=∅
 
- A∪Aˉ=E
 
 同一率
- A∩E=A
 
- A∪∅=A
 
 零一率
- A∪E=E
 
- A∩∅=∅
 
 其它
- Aˉˉ=A
 
- A−B=A∩Bˉ
 
- A⊕B=(A−B)∪(B−A)=(A∩Bˉ∪(Aˉ∩B)=(A∪B)−(A∩B)=(A∪B)∩(Aˉ∪Bˉ)
 
- A⊕A=∅
 
- ∅ˉ=E
 
- $ \bar{E} = \emptyset$