之前我们聊过一个数字:葛立恒数,之前说这是一个有意义的自然数。这个数大到哪怕是全宇宙的物质都是墨水,这些墨水都写不完这个数字的位数,因此我们只能用高德纳箭头来表示。

ps:这里需要强调的是:形容一个数字大,必须要建立在有意义的基础上,是对一个客观事实或者概念的描述。如果没有这个前提,就没有最大的数,否则你任意说一个数,我就能 1,甚至平方,直到无穷大。

葛立恒数比古戈尔大吗(比葛立恒数还大)(1)

这样看来,它真的很大,但是数学家们却不罢休,它们发现了一个更大的数:TREE(3)。在TREE(3)面前,葛立恒数几乎可以忽略不计。那TREE(3)这个数究竟是什么意思,又是怎么来的呢?

TREE其实是一个函数,TREE(3)则表示当这个函数的自变量取值为3的时候,函数的值。Tree这个单词用的很形象,就是树木的意思,TREE(3)这个数字就来源于一个“画树”游戏。对于“树”这个概念,学计算机的朋友们尤其熟悉。除此以外,平常我们使用“思维导图”画出的组织架构图,家谱结构图,这些本质都是“树”结构。

葛立恒数比古戈尔大吗(比葛立恒数还大)(2)

了解了“树”的概念,接下来,我们就用“画树”游戏来导出TREE(3)。

这个树状结构里,我们将小圆点比做树叶线段比做枝干,一棵树不能有闭环,只能从叶到叶,不能从叶到根。从一个叶后面可能引出来若干的叶,这个叶就是成了后面那些叶的根。根和所有的叶组成节点。如此,一棵树上的节点数之和就应该比枝干数之和大1。

葛立恒数比古戈尔大吗(比葛立恒数还大)(3)

另外,小圆点的颜色需要遵循一些规则,而树枝的颜色则随意,我们不需要关心。TREE(3)里的3就代表我们用三种颜色来画这棵树(三种颜色的小圆点)。

画这棵树需要遵循以下两个规则:

1、第一棵树只能有一个节点,第二棵树不能超过两个节点,第三棵树不能超过三个节点……第n棵树最多只能有n个节点。

2、前面的树不能是后面的树的子树;后面的树里,不能“包含”前面的树结构。

需要注意的是,第二条规则里的“包含”是指,后面的树在去掉若干树叶后,依旧不能和前面的树相同(前面的树不能是后面的树的子树,换种方法理解就是,一棵树砍掉任意节点后,不能和前面的树相同。)

除此以外,这种情况也不被允许:当前的树如果取若干节点,这若干节点组成的树结构不能和之前的树的节点产生一一对应的关系。而且,两棵树中任意对应两个节点的最近共同祖先不能是同一颜色。

如下图:对一个子树而言,中间的树去掉最上面的蓝色就一样了,所以不满足;第三个树结构,下面的蓝色和绿色拥有共同的祖先——红色,这与第一个子树一样,因此也不满足。

葛立恒数比古戈尔大吗(比葛立恒数还大)(4)

特别强调:当两个叶子一起朝根节点回溯时,它们一定会在某个叶子上汇合,这个汇合的节点就是他们的最近共同祖先。如果我们将这棵树看成一个家谱,就好理解了。一个家族里,其他人和你所拥有的最近的一个共同祖先,比如你和你亲兄弟姊妹的最近共同祖先就是父亲,你和你的堂兄妹的最近共同祖先就是你们的爷爷。

理解了上面的规则后,现在画树游戏的要求是:如果两棵树之间,对应节点的共同祖先是同一个颜色,那游戏直接结束。我们要遵守规则,保证游戏一直玩下去。

葛立恒数比古戈尔大吗(比葛立恒数还大)(5)

这种包含关系在数学上的术语叫做:下确界-可嵌入(INF-embeddable),搞硬件嵌入式系统的朋友们应该相当熟悉这个词。这里INF是Infimum and supremum的简称,是下确界或者说是最大下界的拉丁文缩写。

葛立恒数比古戈尔大吗(比葛立恒数还大)(6)

为什么这里要用这个词,因为合适:当我们把一棵树某个枝条上的节点当做一个大小进行排序,且根节点最小时,那么两个节点的最近共同祖先其实就是最大的,且比这两个节点都小的节点。(很绕,但真的就是这样的)

现在我们开始正式画树游戏,我们要画出树尽可能多的森林,也就是“树列”。

从TREE(1)开始,只用一只颜色画树:假设你用的是红色,那么你只能画出一棵树,不然就违反规则了,因此TREE(1)=1,如下图。

葛立恒数比古戈尔大吗(比葛立恒数还大)(7)

接下来是TREE(2), 我们用红色和蓝色画树,我们发现,最多只能画出三个树结构,不然就违反规则了,因此TREE(2)=3,如下图。

葛立恒数比古戈尔大吗(比葛立恒数还大)(8)

然后是TREE(3),我们用红、蓝、绿三种颜色,这下神奇的事情发生了,按照这种规则我们好像可以无穷无尽的画下去。

葛立恒数比古戈尔大吗(比葛立恒数还大)(9)

那究竟可不可以画完呢?TREE(3)究竟是不是无穷大呢?这就是数学家哈维·弗雷德曼研究的数学问题。结论是:TREE(3)并不是无穷大,而是一个有限的数字,只是比葛立恒数还要大得多。

那TREE(3)不是无穷大这个结论是如何证明出来的呢?如果TREE(3)是无限大,那TREE(3)就没有任何讨论的意义了。就像我们都知道自然数的个数是无限的,讨论最大的自然数没有意义。

TREE(3)这个数是有限的这个结论是经过了严密的证明的,证明人就是计算机领域大名鼎鼎的克鲁斯卡尔。他的证明过程我们可以用一句话总结:如果TREE(3)是无限的,那就一定存在违反规则的情况(一定会存在后面包含前面的情况)。

葛立恒数比古戈尔大吗(比葛立恒数还大)(10)

这种证明方式很巧妙,外行甚至会觉得这是耍小聪明。但是懂行地知道,这是非常厉害且巧妙的一种方法。

那我们如何理解TREE(3)的大小呢?前面我们理解葛立恒数用的是高德纳箭头,但是这种方法在TREE(3)面前根本不管用。面对TREE(3),我们需要用到“超运算表示法”。

我们可以举个例子来理解超运算:

a b表示a加上b个1的和,用a[1]b表示。

a*b表示b个a相加之和,用a[2]b表示。

a^b表示b个a相乘,用a[3]b表示。

迭代幂次b个a重幂表示a^a^a^···^a^a(一共b个a),用a[4]b表示,从右往左运算。

葛立恒数比古戈尔大吗(比葛立恒数还大)(11)

举个例子,超4运算:2[4]4=2^2^2^2=2^2^4=2^16。

了解了超运算之后,这里我们引入a[n]b,超n运算,这里a是底数,b是超指数,n则是阶数。举个例子2[5]4=2^2^2^···^2^2,一共65536个2。这已经不是指数爆炸了,这是一个天文数字了,比宇宙中所有原子的数量还要多得多。

利用超运算,数学家引入了一个阿克曼函数,太复杂,这里就不展开了:

总之记得这个阿克曼函数:A(x)=2[x 1]x。

通过嵌套,数学家们计算出葛立恒数约为:A^64(4),而TREE(3)用超运算法,通过阿克曼函数表示就是:

TREE(3)=A^A(187196)(1)

葛立恒数比古戈尔大吗(比葛立恒数还大)(12)

所以我们说葛立恒数在TREE(3)面前小的不能再小了。我们的大脑根本无法想象这个数到底有多大,我们举个例子帮助大家理解:你在1后面写0,假设物质和空间均是无限的,你一个普朗克时间写一个0,那么从宇宙诞生直到宇宙毁灭,你都写不完这个数。

葛立恒数比古戈尔大吗(比葛立恒数还大)(13)

在数学上,我们想要构造出一个巨大无比的数字是非常简单的,但是我们永远也无法理解这个数字究竟有多大,这才是我们的无奈。我们明明无法理解这些大数字,但是我们却知道这些大数字都是有限的,且有数学意义的。

葛立恒数比古戈尔大吗(比葛立恒数还大)(14)

不仅如此,TREE(3)是有限的,TREE(TREE(3))也是有限的,但是我们无法理解。这就是数学的有趣之处。

对葛立恒数感兴趣的朋友,可以点击以下链接直接阅读哦!


最大且有意义的自然数?葛立恒数:一个大到你写都写不完的数字

圆周率已经算到了62.8万亿位!为何明知道算不尽,却偏要计算?

你知道数学里的“自然常数e”吗?看数学大神欧拉是如何解决的

,