2.4 集合[1]
2.4.1 集合的相关概念
1.集合的定义
虽然集合是数学及相关学科不可缺少的表示数据的工具,但目前我们还很难给出集合的精确定义,一般都采用描述的方式对集合进行定义。
定义2-21 具有相同性质的一组事物所构成的整体就可描述成一个集合。构成集合的单个事物称为该集合的元素。
例如:某学校的全体学生构成了一个集合,而该学校的每个学生都是该集合中的一个元素。
2.集合的表示
集合的表示:通常用大写的英文字母A,B,C,…表示集合。
元素的表示:通常用小写的英文字母a,b,c,…表示集合中的元素。
3.集合和元素之间的关系
定义2-22 若是集合中的一个元素,则称属于,并记作;若不是集合中的元素,则称不属于,并记作。
4.集合的特点
(1)无序性:构成集合的元素在集合中无位置和顺序的区分,如A={1,2,3,4}和B={3,2,4,1}可看作同一集合。
(2)互异性:在一个已经定义的集合中,不允许存在多个相同的元素。
(3)确定性:集合和元素之间是隶属关系,即元素属于集合。对于某个元素来说,它在集合中是否存在是确定的。
5.集合的描述
集合的描述可用如下方法。
(1)穷举法。穷举法有时也称为列举法,即将构成某集合的元素全部列举出来。
如、{学生,教师,校长}等表示集合,显然,,;学生,工人。
Python中可用如下的方式定义集合:
输出结果如下:
输出结果如下:
从输出结果来看,集合中的元素具有无序性。
(2)谓词法。谓词法也称为描述法,就是将某集合中元素所具有的共同属性描述出来,形式如下:
T={x|x具有性质s}
如T={y|y是大于1小于10的所有整数}表示该集合T由元素2,3,4,5,6,7,8,9构成。
6.常用集合的表示
一些常用的集合表示如下:
N={x|x为自然数},表示自然数集合;
Z={x|x为整数},表示整数集合;
Z+={x|x为整数且x>0},表示正整数集合;
Q={x|x为有理数},表示有理数集合;
R={x|x为实数},表示实数集合;
C={x|x为复数},表示复数集合。
2.4.2 集合关系
1.子集
定义2-23 若集合中的每个元素都在集合中出现,则称是的子集,记作。
如集合,,则可知。
如果,那么也称集合包含于。
同理:对于,也记作,此时可称包含。
特别地,若,即集合是集合的子集,同时,集合中至少存在一个元素不属于,则称是的真子集,记作或。
如集合,,则可知。
2.相等集合
定义2-24 若两个集合和互为子集,则称两个集合相等,记作。
如,,则。
两个相等的集合包含的元素个数一定相等,对应元素也一定一样。
3.全集
定义2-25 若就某个讨论范围而言,集合是讨论范围内所有元素构成的集合,则称是完全集,简称全集。
一般情况下,全集是对某个范围而言的,是一个相对概念。
如设={x|x是全体自然数},则称为自然数范围的全集,但在比自然数大的范围(如整数集合),就不再是一个全集。
4.空集
定义2-26 不包括任何元素的集合称为空集,记作。
空集是任何集合的子集。
5.幂集
定义2-27 对于有限个元素构成的集合简称有限集),由该集合的所有子集构成的集合称为该集合的幂集,记作,即。
如,则。
在集合的所有子集中,和又称为平凡子集。
假设是n个元素构成的有限集,则的幂集包含的元素个数为个。
2.4.3 基数
集合中元素的个数对于集合运算来说意义非常大,集合的基数和集合的元素有很重要的联系。
1.集合等势
定义2-28 设、为两个集合,若存在从到的双射函数,则称与是等势的,记作。
根据集合等势的概念,凡是等势的集合,必定能够构成一一对应关系,即能够把两个集合的元素按照一对一的关系进行对应,这样的方法既可以用于有限集,又可以用于无限集。
2.集合的基数
(1)有限集的基数。
定义2-29 对于有限集,根据等势关系,将与等势的唯一的自然数称为M的基数,记作(或cardM)。空集的基数记作0。
根据集合基数的定义,有限集的基数就是集合中所包含元素的个数。同理,按照等势集合的定义,凡是具有相同元素的有限集都具有相同的基数,也就是说当与按照等势关系属于同一类时,与就有相同的基数,即。
结论:单个元素构成的集合的基数为1,两个元素构成的集合的基数为2,以此类推,一个有限集的基数与自然数构成一一对应的关系。
(2)无限集的基数。
对于无限集,虽然没有具体的数值,但按照等势集合的定义,无限集也有基数。下面规定:
自然数集合的基数称为阿列夫零;
实数集合的基数称为阿列夫。
3.可数集和不可数集
对于有限元素构成的集合,其元素个数为集合的基数。
对于无限集,一般无法数出集合元素的个数,这时可以通过等势关系所建立的“映射”来确定集合的基数。
定义2-30 将能够与自然数集合等势的任何集合称为可数集合,简称可数集。将既不是有限集,又不是可数集的集合称为不可数集。
可数集的基数记作。如{1,2,3,4,…,n,…}{3,6,9,12,…,3n,…}{1,3,5,7,…,2n-1,…}都是可数集。
从上述定义和实例可以看出,可数集就是集合中的元素可以与自然数集合N的每个元素建立对应关系的集合,即可数集中的元素可以按照自然数的顺序排成类似于的序列。
2.4.4 集合运算
1.集合的交集运算
定义2-31 对任意两个集合、,将由这两个集合的共同元素组成的集合称为和的交集,记作,如图2-3所示。
图2-3 A与B的交集
例2-10 和是由学校计算机系专业课程构成的集合,且={‘高等数学’,‘英语’,‘数据结构’,‘Python编程’},={‘C语言程序设计’,‘Java程序设计’,‘英语’,‘编译原理’,‘数据结构’},则={‘英语’,‘数据结构’}。
在Python中,、A.intersection(B)都表示A和B的交集。
2.集合的并集运算
定义2-32 对于任意两个集合、,将由所有属于A和属于B的元素组成的集合M称为和的并集,记作,如图2-4所示。
图2-4 A与B的并集
例2-11 ={‘高等数学’,‘英语’,‘数据结构’,‘Python编程’},={‘C语言程序设计’,‘Java程序设计’,‘英语’,‘编译原理’,‘数据结构’},则={‘高等数学’,‘英语’,‘数据结构’,‘Python编程’,‘C语言程序设计’,‘Java程序设计’,‘编译原理’}。
在Python中,、A.union(B)都表示和的并集。
3.集合的补(差)集运算
定义2-33 设、为任意两个集合,将由所有属于但不属于的元素组成的集合M称为关于的相对补集,或称集合的差,记作,如图2-5所示。
图2-5 B关于A的补集
若给定全集,有,则中不属于的所有元素组成的集合称为的绝对补集,或简称补集,记作CUA。
例2-12 ={‘高等数学’,‘英语’,‘数据结构’,‘Python编程’},={‘C语言程序设计’,‘Java程序设计’,‘英语’,‘编译原理’,‘数据结构’},则={‘高等数学’,‘Python编程’}。
在Python中,、A.difference(B)都表示A和B的差集。
4.集合的对称差运算
定义2-34 对于任意两个集合、,将或属于或属于但不同时属于和的元素构成的集合M称为对称差,记作,如图2-6所示。
图2-6 A与B的对称差
例2-13 ={‘高等数学’,‘英语’,‘数据结构’,‘Python编程’},={‘C语言程序设计’,‘Java程序设计’,‘英语’,‘编译原理’,‘数据结构’},则={‘高等数学’,‘Python编程’,‘C语言程序设计’,‘Java程序设计’,‘编译原理’}。
在Python中,、A.symmetric_difference(B)都表示和的对称差。
2.4.5 综合案例及应用
集合的运算可用于有限个元素的计数问题。
设是个有限集,集合的基数(集合包含元素的个数)分别用来表示,则对于个有限集来说,有如下结论:
这个结论称为包含排斥原理。
例2-14 某学校计算机系的“双创”团队有20名学生,现要统计他们在某年度参加大赛的情况,大赛项目包括“网络大赛”“创新创业大赛”“云计算大赛”三大类;经过统计,在20名学生中,参加过“网络大赛”的有7名,参加过“创新创业大赛”的有8名,参加过“云计算大赛”的有5名,有3名学生同时参加过上述三类大赛,试求至少有多少名学生没参加过上述任何一项比赛,并计算参加大赛的学生所占的比例。
解:设={x|x参加过“网络大赛”},={x|x参加过“创新创业大赛”},={x|x参加过“云计算大赛”}。
由题意可知:,,,。
因为,,,所以,即最多有14名学生参加过比赛,因此,至少有6名学生没参加过任何一项比赛。
利用Python程序实现上述实例的代码如下:
输出结果如下: