书城现实数学大帝
57676100000407

第407章 引入空集?

空集是指不含任何元素的集合。空集是任何集合的子集,是任何非空集合的真子集。空集不是无;它是内部没有元素的集合。

可以将集合想象成一个装有元素的袋子,而空集的袋子是空的,但袋子本身确实是存在的。

为什么会引入,因为可以方便研究子集。

在没有集合的时候,就要空集,这样方便,也是一个结果,不能没有结果的时候就用无结果。

更多更复杂的概念里更需要引入空集了。

好比数字中因子是1和自身,空集代表这个1.

跟数字中零差不多,但比零虚空,是纯粹没有的意思。

当两圆相离时,它们的公共点所组成的集合就是空集;

当一元二次方程的根的判别式值△<0时,它的实数根所组成的集合也是空集。

123

集合论的本质是建构性的,对集合,我们没有定义,不说它是什么或不是什么,而说通过什么手段我们可以构建集合。这个思想的公理表达就是我们前面谈到的外延公理和分类公理——集合的性质、集合与集合之间的关系以及新集合的构建都是由其成员决定的。如果把集合作为一种工具或者语言为某个特定的领域建模,那么相应概念的定义必然具有两重性:概念的内涵和外延,而概念的外延的表述正是集合的外延公理。如果概念体系是一个层次结构那么分类公理可以使我们在一个通用概念下定义下位概念。分类公理定义概念的本质仍然是成员性:泛集集合中的部分元素满足某个条件。换句话说,用一个断言我们可以在泛集中“圈”出一部分元素,然后宣布新概念的诞生,而这个新概念是由这些“圈”出的元素作为实例而存在的。

上次我们谈到集合的构建过程时曾说过,一个新集合的构建要么从给定已经构建的集合,要么是从某个最原始的“本源”集合,因为既然任何新集合的构建都是从别的集合开始的,那么我们就要问,什么是最原始的“本源”集合?这个问题翻译成哲学问题就是:什么是最原始的“存在”,在那个“存在”之前世界是什么样?如果离开集合论,那么我们可能听说过各种各样的回答,从各种宗教对世界产生的解释到各种神话传说等等,无一不反映了人类对这个世界存在性问题的认知。这个问题的本质就是:什么是存在,在“存在”存在之前或者“存在”消失之后是否就是不存在?那“不存在”又是什么?著名的形而上学哲学家海德格尔曾经问道:我们只应当研究存在和不存在……但什么是不存在?我们应当到哪里去找这个不存在?而不存在,在中国的文化传统中大致相当于释家的“空”或道家的“无”。“不存在”是否就是释家的“空”或道家的“无”本人没有能力评论,但是有一点是肯定的:“不存在”这个概念需要“存在”这个概念的支持,否则我能否说不存在“不存在”?这在西方哲学,称作“柏拉图的胡子”悖论问题:如果要说明某物不存在,首先要假定其存在。就像刚才所说,说某物不存在,我们必须要承认存在着“不存在”。例如,我问:世界上有鬼吗?你回答:没有鬼。既然没有鬼,那么你提到的那个没有的“鬼”是指什么?这个悖论的实质是说,我们应当如何定义不存在?

“不存在”问题,不仅仅是形而上哲学家们讨论的问题,也是计算机科学考虑的问题。如果说哲学中的“不存在”问题仍然属于象牙塔内的“思辨”问题,对计算机科学家来说,这个问题却是个决定计算机程序“生死”的大问题。“不存在”问题,在计算机程序中有三种情况:第一、概念本身不存在:因为没有定义,这个时候这个程序就是个无效程序(invalid),或者称之为“句法错误”(syntax error),在这个意义上,计算机是不承认“不存在”的。第二:存在概念但没有相应的值:意思是,我定义了一个名称,但并不存在一个被指称对象。这个时候,这个概念被赋予一个“null”值,表示没有指称的个体;第三,明确表示为“空”,例如字符串类型当不包含任何文字时则用“”表示,这个“空”其实是“有”,而不是“无”??。由此可以看出,计算机实际上是用另一种“存在”定义指称意义上的“不存在”的。

集合论对“不存在”的定义就是空集。但是空集是表示不存在吗?“当然是!”你会说,“因为根据外延定理,空集之所以空是因为它的元素数量为0。”这话是没错,但是空集本身是存在的,我们实际上是在用“存在的”空集描述什么是不存在,难道不是吗?

不过空集最有意思的是:我们先用“存在”的空集描述不存在,然后再用空集所描述的不存在构建其它存在的集合。这颇有道家“无生有”的概念,就像道德经中所述:

“天下万物生于有,有生于无。”

在集合论中,我们的最原始的“本源”集合,就是这个充满“柏拉图胡子”悖论的空集——“存在”一个包含“不存在”的集合——{},或者或?,后者是挪威语或丹麦语的字母,由布尔巴基学派引入。只有这个集合,是所有其它集合构建的“本源”集合。这个空集公理,在策梅洛-弗兰克尔公理集合论中并不存在,因为这个公理可以从外延定理推导,但是其它集合论、例如Kripte-Platek集合论则把空集公理作为独立公理。

空集在集合论中作用非常独特,首先,从外延公理可知,空集是唯一的,换句话说,世界上只有一个“无”,而“有”则是无数多,例如“有一个”、“有两个”、“有N个”,因此我们说“所有”不说“所无”,计算机中有时用0或-1表示无,用其它任意值表示有,大概也对应着这个意思,单独的“无”对众多的“有”。第二、任何其它集合都会以空集作为自己的一个子集,换句话说,根据分类公理,“没有”、“不存在”可以是任何其它概念的下位概念;作为初学者,刚开始接受这个概念可能很别扭,但是一旦想通了就会觉得非常合理,为什么?留给你去思考吧!!

有了空集作为我们构建集合的起点,我们还无法构建新集合,还需要另外一个公理作为工具,这个公理就是:无序对公理(axiom of unordered pair),又称配对公理(axiom of pairing):如果有两个集合,那么就会存在以这两个集合为唯二元素的集合。

这个公理大致上就相当于《道德经》中的“道生一,一生二,二生三,三生万物。”,告诉我们如何从一个集合构建两个集合,如何从“无”集合构建“有”集合。这个过程是这样的:

1 存在着唯一的空集合?;(空集合公理)

2 由无序对公理,我们可以构建:{?,?}=>{?};(构建了新集合{?})

3 由无序对公理,我们可以构建:{?,{?}};

4 由无序对公理,我们可以构建:{?,{?},{?,{?}}}

……

通过这样的过程,我们可以构建无穷多个集合[1]。不过有人会问,就算用这样的方法可以得到多个集合,但是这些集合仅仅是由?或者以?为元素的集合构成的集合,如果我们想要构建其它元素的集合怎么办?很容易,利用分类公理,设定条件S(x),就可以建立相应的子集合。例如:S(x):= x=a 或 x=b,翻译成汉语句子就是:给定的元素a和b具有S性质,那么根据无序对公理所得到的集合就是:{x ∈ A:S(x)}={a, b},其中,“:=”的意思是“定义为”。

这个构建过程有一点需要注意,所有集合的元素仍然是集合,并没有出现我们以前所看到的更直观的以有限数量的“个体”构成的集合。这里能说的就是,集合论、特别是公理集合论所讨论的集合概念,大部分都是包含其他集合作为元素的集合。

[1]用这种方法构建的集合群,称作von Neumann Universe,我暂且译作“冯·诺依曼空间”,或者,为了减少不必要的误会与误读(与希尔伯特空间相混淆),干脆不译,称作“冯·诺依曼Universe”。对于“冯·诺依曼Universe”我们会在后面关于集合的势(cardinality)的话题中详细讨论。