早期一些神奇的数学发现,虽令人惊叹,却并不代表人类掌握了用数学认识世界和改造世界的能力。要把世界运行的基本要素抽象成可以用符号和文字表达的概念,并进一步用逻辑整理这些概念背后的关系,我们的祖先还有很长的路要走。
他们迈出的第一步,称为“配对”。
“配对”看上去并不太像一个数学概念,但在数学发展的过程中,它却扮演了举足轻重的角色。为了说明这点,让我们回到两位匈牙利贵族的数数游戏,他们之间的比赛还没有结束。贵族A以绝对优势赢了游戏,按照规定,贵族B要付给他一枚金币,虽然这两位贵族不大可能说出自己手里都有多少金币,但他们却很想比一比究竟谁更有钱,你能为他们设计出一种既公正又简单的比较方法吗?
相信你很快就能够给出答案。例如,你可以借鉴一个大家小时候都玩过的“你拍一我拍一”的游戏,让两位贵族先生把身上所有的金币都拿出来,然后轮流拍出手里的金币,你拍一枚,我拍一枚,谁先拍光谁就是输家。仔细想一想,这个方法确实好,它能让我们在不知道两个集合元素个数的情况下可以比较它们的大小。
这种方法的数学原理很简单,它用到了集合及集合之间的一一映射。
集合是高中数学涉及的第一个概念,与矩阵一样,它的定义也十分容易理解。简而言之,集合是由一些确定的且不同对象构成的整体,集合中的每个对象称为集合的元素。例如,{飞机,大炮,轮船}是一个集合,{语文,数学,英语}是一个集合,{张三,李四,王五}也是一个集合,这3个集合都包含了3个元素。
虽然集合的定义非常简单,但是有两个内涵需要明确,一是集合的互异性,二是集合的确定性。集合的互异性是指一个集合中不能出现两个相同的元素,如4个数字的全体{1,2,2,3}就不是一个集合,因为这个全体中元素“2”出现了两次。集合的确定性是指一个集合中的元素不管采用描述法还是列举法都必须被明确地规定下来,不能有模棱两可的情况,例如,“我们班的帅哥”这种模糊的说法不能定义一个集合,因为“帅哥”的评判标准因人而异,很难通过数学量化来判定。
数学家通过何种方式研究集合呢?基本方式是构造集合之间的映射。通俗地讲,集合A到集合B的映射是一个对应法则,它把集合A中的每个元素唯一地对应到集合B中的某个元素。如果A中的任意两个元素都不对应B中的同一个元素,那么我们称这个映射为单射;如果B中的每个元素都至少有A中的一个元素与之对应,那么我们称这个映射为满射,既是单射又是满射的映射称为一一映射。图3-1展示了各包含两个元素的集合之间所有可能的映射,其中(c)和(d)是一一映射。
两位贵族先生比较谁更有钱的过程事实上就是在两个集合{贵族先生A拥有的金币}和{贵族先生B拥有的金币}之间构造映射的过程。不难看出,如果我们能在两个集合之间构造出一个一一映射,这两个集合所包含的元素个数就一样多,两个集合一样大。
图3-1 各包含两个元素的集合之间所有可能的映射
一一映射虽然看似简单,却蕴含着深刻的数学思想。若能在生活中巧妙利用,往往可以收到事半功倍的效果。
例如,你负责一次网球比赛的组织工作,报名参赛的选手总共有136名,假设比赛采用单败淘汰制,你能迅速告诉赞助商总共有多少场比赛吗?
那些拿出纸笔准备计算的同学可以先停一停。因为136不是2的方幂,如果按照通常的思路将选手之间两两配对进行比赛,那么三轮过后就会遇到麻烦,届时将剩下17名选手,再进行下去,必有1名选手轮空。你当然能够想出各种各样的方法来解决这个问题,比如抽签晋级、高排位选手直接晋级等,甚至在一开始就设置一些资格赛筛选出一个2的方幂。但不管你采用什么样的方法,总的比赛场次是不变的,它是一个唯一确定的数。
奥秘就藏在“单败淘汰”这4个字中。每进行一场比赛,输掉的人会被淘汰,这就在这次赛事所有比赛组成的集合与被淘汰选手组成的集合之间建立了一一映射。不管赛制如何设定,冠军只有一个,为了决出最后的胜利者,需要淘汰135名选手,自然也就需要135场比赛。
一一映射的妙用,可谓“一剑封喉”,直击问题核心。
当然,有些人故意打破一一映射或一一对应的原则,为了最大限度地获取利益,如在民航业中,航空公司经常超售机票,把空座飞行的可能性降到最低。但与火车不同,飞机是没有站票的,因此可售机票的数量必须与飞机座位数保持一致。这就经常造成尴尬的局面:有时购票乘客的数量超过飞机可提供的座位数量。
虽然机票超售的问题可以通过支付较小的代价进行解决,但下面这个例子,解决起来可就没有那么轻松。
20世纪50年代,我国实施了汉字简化的举措。尽管汉字字形的简化看似与数学没有关系,但随着汉字不仅字形简化了,字数也减少了,这件事情就和数学产生了关联。具体来讲,繁体字集合与简体字集合之间,存在一个多对一而并非一一对应的关系。例如,繁体字“頭髮”的“髮”和“發財”的“發”在简体字中都对应“发”;而“歷史”的“歷”与“曆法”的“曆”在简体字中都对应“历”。
这种多对一的关系会带来多大的麻烦呢?
如果你想把一本繁体字写成的书翻译成简体字(不考虑不同地区习惯用语的不同),那很容易,只要把简繁对照表编成一个程序,借助计算机可以迅速完成。但如果你想把一本简体字写成的书快速翻译成繁体字,那可就没有那么容易了,产生错误的机会其实相当大,特别是在古文字较多的领域,一个简体字对应的繁体字写法有好几种,要让计算机根据上下文自动确定一个准确原像,对现有的单机软件来说,还是一个艰巨的任务。
我们举了很多例子来说明一一映射的重要性,因为一一对应正是数字诞生背后的核心逻辑。历史上,当有人首次意识到“一双翅膀”“一对情侣”“两头野兽”这些包含不同种类元素的集合都可以一一配对,并决定用一个统一的符号来表达这一共性时,抽象的数字“2”便诞生了,它代表了所有元素数目为2的集合所共有的属性,自然数的这种属性被称为基数。
需要指出的是,数字“2”只是表示基数的一个符号。如果你愿意,可以使用其他任何文字或符号来代替它。例如,你可以用汉字“人”代替“2”,用汉字“乙”来代替“1”,用汉字“土”来代替“3”,因为这些汉字的笔画数恰好分别是2、1、3,所以可以作为相应基数的范式符号。事实上,在语言文字中的数字真正形成之前,人类早期的基数就是用类似的范式符号来表达的,例如,“2”的符号是鸟翼,“3”的符号是苜蓿叶,“4”的符号是兽足,“5”的符号是手。
但很遗憾,即使规定好了所有基数的范式符号,仍然不能指望原始人能够从中发展出计数和加法运算的规则。如果要问他们“鸟翼”加上“苜蓿叶”等于什么,他们一定无法理解。即使他们最终理解了你的问题,他们也无法直接给出答案,而是伸出双手逐一和目标集合配对,等到五根手指配对完毕,他们才能回答“鸟翼”加上“苜蓿叶”等于“手”。
这说明牵涉计数和加法运算的时候,人们需要一个包含所有基数的标准集合,其中的元素被赋予了某种顺序可以次第排列。这正是“屈指记数法”展示的过程,“1”的后继是“2”,“2”的后继是“3”,“3”的后继是“4”,自然数这种体现了“后继”观念的属性被称为序数。
有了序数之后,加法就可以被真正定义了,等式1+1=2的真正含义是基数“1”的后继是基数“2”。请记住这点,序数是自然数加法的抽象本质。
你能再举出一个“一一对应”在实际生活中发挥重要作用的例子吗?