网站首页 (Homepage)                                      欢   迎   访   问  谢  国  芳 (Roy  Xie) 的  个  人  主  页
Welcome to Roy Xie's Homepage
 返回 (Return)

 

从自然数的算术谈起

 —— A Friendly Introduction to Modern Algebra 

 谢国芳(Roy Xie)                               Email:  roixie@163.com   

正如人人都会说话,几乎人人都懂得数的运算——加减乘除,这是我们在小学时就学会了的,那时的数学还叫做算术,“算术”者,顾名思义,即关于数的运算的知识。在加减乘除这四种运算中,最基本的是加法[1],而在所有数中,最基本的是自然数,所以,让我们首先回忆自然数的加法有哪些法则或者说性质。

用 N 表示全体自然数的集合(N 源自英文 Natural Number 的首字母),于是 “a是一个自然数” 这句话就可以简单地表示为 a ∈ N (读作 “a 属于N”)。

自然数集合 N 中加法的性质

(1)封闭性:任意两个自然数的和是一个自然数。用数学语言表示即

对于任意 a, b ∈ N, a + b ∈ N

例: 1 ∈ N, 1 + 1 = 2 ∈ N

“嘻嘻”,你或许会嗤笑道,“这算什么性质?” 好像这是理所当然,何须废话的。但稍加思索你就会发现并不是这样,例如自然数集合N中的减法和除法就不满足封闭性(例: 2, 3 ∈ N, 但是 2 - 3 = -1 N,3 ÷ 2 = 1.5 N )。[2]

(2)结合律:  (a + b) + c = a + (b +c)

例: (2 + 3) + 5 = 2 + (3 +5) = 10

(3)交换律:   a + b = b + a

例: 2 + 4 = 4 + 2 = 6

 以上就是自然数集合 N 中加法运算的全部性质。  

德国数学家克罗内克(Kronecker,1823 ~1891) 有一句名言:“上帝创造了自然数,其余一切都是人造的。”("God created the natural numbers; all the rest is the work of man." ),实在说得精辟极了。除了自然数好像是天定的,其余的数像负数、有理数、无理数、代数数、超越数、实数、虚数、四元数、p进数(p-adic number),还有数学中的很多其他对象,统统都是人的心智构造出来的。构造是现代数学的基本方法[3],集合论的创始人康托尔(Cantor,1845~1918)说,“数学的本质全在于它的自由”("The essence of mathematics lies entirely in its freedom." ), 在数学的世界中人是真正的造物主,充当上帝的角色。世界本来漆黑一片、空无一物,上帝说,“有光吧”(" Let there be light. "),于是就有了光;上帝说,“有天地吧”,于是就有了天地;在创造了天地后,上帝觉得天地间空荡荡的,甚是无趣,于是又创造了草木虫鱼,禽鸟走兽,和作为万物之灵的人。我们接下来要做和上帝同样的事情:无中生有地构造出一系列华美新奇的数学对象。

据说人是上帝依据自身的形象创造的,同样,我们的构造也并不是凭空瞎造,我们将用数学中最基本最简单最天然的对象——自然数为原型进行构造,构造的手段是抽象化和形式化。

让我们把注意的目光回到前面我们所说的自然数加法满足的三条法则——封闭性,结合律,交换律上面,接下来我们就要对它们进行抽象化(make it abstract, thereby make it more general)和形式化(get rid of the content, keep the form only),这种抽象化和形式化是双重的:

(1)对象的抽象化和形式化

前面各式中的字母a, b, c 不再限于代表自然数或者任何其他的数(如普通代数中那样,“代数”的本义就是用文字符号代表数[4]),它可以代表你能想象的任何东西,用数学语言说,即任何一个集合中的任何元素。也就是说,前面的自然数集合N可以用任意集合代替,a,b,c可以是该集合中的任何元素。

(2)运算的抽象化和形式化

前面的加法也可以用任意的运算(严格地说是两元运算[5])代替,加号 “ + ” 可以替换成任意一个由你指定的运算符号,你喜欢用什么符号表示就用什么符号表示(比如说一个圈点 “ · ”,一个叉叉 “ × ”、或者更高明的,就用空白,即把 a 和 b 连写成 ab 即表示你所定义的运算的结果)。

在运算的对象和运算的具体定义都被抽象掉了、“任意化”、“虚化”了以后,剩下唯一固定不变、不能随意更改的就是运算所满足的法则——封闭性、结合律、交换律,这些法则相当于几何中的公理,我们不能更改它们,但可以从中作出选择。[6]

现在让我们设想任意一个集合,该集合上的任意两个元素都定义有某种运算,它也像加法一样满足封闭性和结合律,我们给这样的集合(更准确地说是赋有这样的运算的集合)起一个专有的名称——“半群”。

把它显式地写出来,就是:

半群(semigroup)的定义

若一个集合 S 中任意两个元素 a, b 都有一种运算 a • b,它满足下列条件:

(1)封闭性: 对于任意 a, b ∈ S,a • b ∈ S,

(2)结合律:  ( a • b ) • c = a • ( b • c )

则称S为一个半群(semigroup),更严格的说法是,S关于该运算构成一个半群,也可以说该运算赋予了S一个半群结构,或者说它使S成为一个半群。

如果该运算还满足交换律(a • b = b • a),则称S为交换半群(commutative semigroup)。

为什么叫“半群”呢?因为它只具有一半 “群”(group)的结构。“群”是我们后面要引入的一个更有意思也更重要的抽象代数对象、因为它的结构更精细,内容更丰富,专门研究群的数学分支叫群论(group theory),其内容之丰富、威力之大、应用之广差不多可以从抽象代数大家族中分离出来另立门庭,自成一体了。“半群”已经初具群的雏形,一半已经像群了,但还缺少另一半(你能猜想出所缺失的另一半是什么吗)。

在很大程度上,我们定义“半群”只是为了以后定义“群”作准备,明白它是怎样一步一步“动态地”构造出来的(而不是一下子拿出一个现成的东西说它是一个群),这样一来你对它的印象一定会更深刻,理解也会更深刻。而且有时候群的确并不是现成就存在的,而是从半群构造出来的,一个典型的例子是椭圆曲线上的有理点所构成的群[7]。很多半群最后都可以成功地升级变成群(通过适当地构造出单位元和逆元——如果它们一开始不存在),就像雏鸡长大变成鸡。但也有一些半群因为先天不足,永远只是“雏鸡”,怎么也变不了群。

另外,在引入群之前先定义半群也能给你一种真正进入抽象代数广阔大世界的感觉(群的势力虽大,但毕竟只是抽象代数大家族中的一员,只有放在抽象代数的大背景中才能更深刻地理解它和它同其他成员的亲缘关系)。

你或许会以为,这只是给某个东东(你甚至说不出它到底是个什么东西,因为它太抽象了)起了一个好听的名词而已,又有什么用处呢?

如果你一时想像不出如此抽象的玩意会有什么用处(当然是有用处的,而且有大用处,不过要讲它的用处就必须涉及比较专业的数学,这里就不展开了,留到以后慢慢讲),没关系,权且就当它只是漂亮的响当当的名词吧,《爱丽丝漫游奇境记》(Alice's Adventures in Wonderland )中的小爱丽丝不懂“经度”(Longitude)和“纬度”(Latitude)为何物,只觉得它们说起来怪好听的,是响当当的好字眼,希望你现在对“群”啦、“半群”啦亦作如是观。有了这样一个名词,至少使我们的表达变得更经济、更简洁、更精练了,节省了口舌(说话时)和空间(书写时),这本身就是一个它的充分的 raison d'être (存在的理由),数学概念和数学符号的一大功能正在于此。

例如,现在我们就可以把自然数加法的所有性质归纳成一句话,即

全体自然数关于加法构成一个交换半群。

你看,刚才需要罗哩罗嗦地说一大堆话描述自然数中的加法的性质,现在我们只用一句话就把它们全部概括了!言简意赅至此,岂不妙哉?

当然,引入半群这个名词的作用绝不仅仅是为了节省口舌,“名为实之宾”,我们必须理解这个名词所指的概念,这的确是一个非常抽象的概念(此抽象代数之所以得名也),它也许是你迄今为止碰到过的最抽象的东西,与其说它是一个东西,不如说它是一个类(class)。普通的名词如“人”也是一个抽象概念、一个类名,是从无数个具体的千差万别的人的共同属性中抽象出来的。人按性别又分男人、女人,按年龄分老年人、中年人、青年人、少年、孩童,按肤色分白人、黑人、黄种人,按财富分穷人、富人,按国别分中国人、美国人、英国人、法国人、德国人、西班牙人、俄罗斯人……,但抛开所有这些差异,他们全都是人,每一个人都是“人”这一抽象概念的具体实现(embodiment),都具备人的基本特征和共性。在这一点上,抽象代数的概念和普通名词的概念并没有什么两样,都是抓住事物最大的共性而不及其余,我们不知道(也不关心)运算的对象是什么,运算的具体定义是什么,我们只知道它满足两个共同的性质——封闭性和结合律,然后我们就说赋有这样运算的集合是一个“半群”。

从定义看,“半群”和接下去我们马上要讲的“群”以及所有其他抽象代数概念如“环”(ring)、“域”(field)等都只是一个空架子、一个没有“肉身”的躯壳,一个只有基本框架(用数学语言说即代数结构)的模板,里面可以填入任意的内容(但它们的结构都是一样的,用数学语言说是“同构的”)。正是因为这种高度抽象化,所以它们才具有最大的普遍性,能找到有多种多样的“化身”即具体的实例,渗透到数学的每一个分支和各门自然科学——特别是其中数学比较发达的科学像物理学、化学中,用一条无形的纽带把表面看上去千差万异的事物内在地联系在一起。

楚霸王项羽少年时不屑学剑,说剑法学得再好,打仗时只能对付一个人,是“一人敌”,他要学“万人敌”——兵法。  

各个传统数学分支,如平面几何,代数,解析几何,微积分,也都是一对一的“一人敌”,只能用来对付一些特定的具体的问题,而抽象代数却地地道道地可以说是“万人敌”,以一对万,以不变应万变,“抱一而为天下式”,不针对某一个特定的具体问题而又同时解决了无数个具体的问题。

“大哉!数学之为用!” (华罗庚语)大哉!抽象代数之为用!

 

 

推导过程1

 注 解

[注1] 乘法可以用加法构造出来,因为m乘n等于m个n(或n个m)相加。而在把自然数扩展为整数(通过添加 0 和负整数)之后,减法也可以归结为加法,因为减去一个数等于加上该数的相反数(即加法群的逆元素)。

[注2] 为了使减法封闭,我们必须把自然数集合 N 扩大为整数集合 Z,为了使整数中的除法也封闭,我们又必须把整数集合 Z 扩大到有理数集合 Q。

[注5] 所谓集合S上的一个两元运算(binary operation),就是对于该集合中的任何两个元素a, b都指定一个元素(它可以不在集合S中)和它们对应,用数学语言表示,两元运算即一个定义在集合S×S上的映射(mapping)或者说函数(function),而一元运算就是定义在集合S上的映射或者说函数。如加减乘除都是两元运算,而乘方和开方则是一元运算。类似地,我们还可以更一般地定义n元运算(请读者思考如何定义)。

[注7] 椭圆曲线是一种代数曲线,这是一个容易引起误解的名词,因为它和椭圆实际上没有什么关系(但和椭圆函数有密切关系)。虽然关于椭圆曲线的理论相当高深,但它的定义却很简单,是每个学过解析几何的中学生都能明白的。简单地说,椭圆曲线就是由代数方程 y2 = ax3 + bx2 + cx + d (a, b, c, d ∈ Q)定义的曲线,三次多项式 ax3 + bx2 + cx + d 无重根(即判别式不等于0. 参见______)。

椭圆曲线最美妙的性质是其上的有理点即 x 和 y 坐标都为有理数的点具有群结构,利用这一点可以设计出绝妙的加密解密机制——这被称为椭圆曲线密码(Elliptic Curve Cryptography , 简称ECC),目前已广泛地应用于电子商务特别是金融服务行业(如帐号保密、数字签名等)。另外在费马大定理的证明中椭圆曲线也发挥了关键的作用,但这些事情不是三言两语能解释清楚的,以后将另文专述。