集合是不同对象(称为成员)的无序聚集。
集合的两个重要特点:一、成员是无序的;二,每个成员都只在集合中出现一次。
集合是离散数学中的重要部分,离散数学与计算机科学之间有着很深的渊源。
在计算机科学中,我们使用集合来归类数据,尤其是当我们计划以后将其与其他数据相关联时。
C语言并没有原生支持集合,而是作为一种抽象数据类型来实现。
集合的定义
集合的符号:∪ ∩ ∈ ⊆ ⊂ ⊇ ⊃ ∨ ∧ ∞ Φ。
1、空集:没有包含任何成员的集合。
全域:集合的所有可能成员(有时候比较难定义!)。
以集合的写法可以表示为:
S=U 表示全域 S=Φ表示空集
2、集合相等:如果两个集合中所包含的成员完全一样,则称这两个集合相等。
例如,如果S1={1,2,3},S2={1,2,3},S3={1,2,4},则S1等于S2,但S1不等于S3。以集合的写法表示为:
S1=S2 表示S1和S2相等;S1≠S3表示S1和S3不相等。
3、子集:如果集合S2包含另一个集合S1的所有成员,则S1是S2的子集。
例如,S1={1,3},S2={1,2,3},S3={1,2},则S1是S2的子集,但S1不是S3的子集。以集合的写法表示为:
S1⊂S2表示S1是S2的子集;
集合的基本操作
1、两个集合S1和S2的并集也是一个集合,记为Su ,它包含了S1和S2中的所有成员。
例如,如果集合S1={1,2,3},S2={3,4},则Su={1,2,3,4}。以集合的写法表示为:
Su=S1∪S2。
2、两个集合S1和S2的交集也是一个集合,记为Si ,它只包含同时存在于S1和S2中的成员。
例如,如果集合S1={1,2,3},S2={1,2},则Si={1,2}。以集合的写法表示为:
Si=S1∩S2。
3、两个集合的差集也是一个集合,记为Sd,它只包含在S1中出现过且不属于S2的成员。
例如,如果集合S1={1,2,3},S2={3,4},则Sd={1,2}。以集合的写法表示为:
Sd=S1-S2。
集合的性质
1、某个集合与空集的交集结果一定是空集。某个集合与空集的并集结果还是原来的集合本身。
这些行为由 集合的空集律 表示为:
S∩Φ=Φ
S∪Φ=S
2、与集合本身求交集结果还是集合本身。同样的,与集合本身求并集结果也还是集合本身。
这种行为由 集合的幂等律 描述为:
S∩S=S
S∪S=S
3、集合S1与集合S2的交集其结果等同于集合S2与集合S1的交集。同样的道理也适用于并集的情况。
这种行为由 集合的交换律 描述为:
S1∩S2 = S2∩S1
S1∪S2 = S2∪S1
4、一组集合的交集可以按照任意顺序来求解。同样的道理也适用于并集的情况。
这种行为由 集合的结合律 表示为:
S1∩(S2∩S3) = (S1∩S2)∩S3
S1∪(S2∪S3) = (S1∪S2)∪S3
5、某集合与其他两个集合的并集相交的结果可以按照一种分配的方式来解决。同样的道理也适用于求解某集合与其他两个集合的交集相合并的情况。
这种行为由 集合的分配律 描述为:
S1∪(S2∩S3) = (S1∩S2)∪(S1∩S3)
S1∪(S2∪S3) = (S1∪S2)∪S3
6、某集合与该集合和另一个集合的并集相交结果等于该集合本身。同样的道理也适用于求解某集合与该集合和另一个集合的交集相合并的结果。
这种行为由 集合的合并律 描述为:
S1∩(S1∪S2) = S1
S1∪(S1∩S2) = S1
7、求解一个集合与其他两个集合的交集或并集之差(德摩根定律):
S1 - (S2 ∪ S3) = (S1 - S2) ∩ (S1 - S3)
S1 - (S2 ∩ S3) = (S1 - S2) ∪ (S1 - S3)