這裡TREE就是英文裡樹木的那個單詞TREE,TREE(3)其實是一個函數,函數名稱叫TREE,而函數自變量取值是3。
葛立恆數是曾經在數學證明中出現過的最大的數,後來被一個更大的數TREE(3)取代。葛立恆數雖然很大很大,但TREE(3)跟葛立恆數比的話,葛立恆數是屬於忽略不計的,百億光年浩瀚的宇宙在TREE(3)面前甚至可以忽略不計。
諾丁漢大學數學教授託尼·帕迪拉(Tony Padilla)在一次講座中曾經說過:「即使你掌握了全部宇宙的全部物理過程,但和TREE(3)相比,它們什麼都不是。
更為神奇的是,雖然TREE(3)這個數大到無法寫出來,但TREE(3)的定義比葛立恆數更簡單,簡單來說,它就是一個畫「樹」的遊戲,樹林的樹。
這裡,這個「樹」的概念,對計算機專業的朋友來說可能再熟悉不過了,例如二叉樹、查找樹等等。
如果不是計算機專業的,也不要緊,我們再說其他例子:公司的組織架構圖、某個人的家譜等等。
這些,都是用類似一棵樹的結構展示的,這就是我們今天要談的樹的概念。
TREE(3)這個數,可以用一種畫樹的方式來導出。畫的時候,我們給每個節點(即葉子)畫上某種顏色,而線段(即樹枝)無所謂顏色。所以TREE(3),意思就是用三種顏色來畫這顆樹。
當然我們還需要一些畫樹的規則:
規則一:第n棵樹的節點(node)數不能超過n(可以小於)。這個很好理解,第一棵樹只能有一個節點,第二棵樹不能超過兩個節點,第三棵樹不能超過三個節點……以此類推。也就是,越到後面,你樹中的節點可以越來越多,但不能多過你畫的樹的序號。
規則二:後面的樹不能包含前面的任意一棵樹(前面的樹可以包含後面的樹)。這裡「包含」的概念,指的是比如你後面的樹去掉若干葉子後,就是前面的樹是這顆樹的子樹,那就犯規的。
但我們這裡「包含」的意思要比「子樹」的定義更寬泛點,以下這些情況也不允許:當前的樹如取若干節點,這些節點如果可以和前面的某棵樹的節點建立一一對應關係,而且兩顆樹中,任意對應兩個節點的最近共同祖先是同一顏色,那也不允許。
所謂「最近共同祖先」的概念,就是兩個葉子同時向根節點回溯,那它們遲早會在某個節點匯合,最遲也是根節點,那這個結點就叫「最近共同祖先」。現在的要求就是,如果兩棵樹之間,如果對應節點的最近共同祖先是同一顏色,那就結束。
這種「包含」在數學上有個專門術語:inf-embeddable。
「inf-embeddable」——其中embeddable是可嵌入的意思,搞嵌入式系統的對這個詞肯定熟悉。
「inf-embeddable」——那inf是什麼意思呢,它其實是下確界,或者說最大下界的拉丁文縮寫。如果你把一棵樹某個枝條上的節點(根節點最小)當做一個大小排序的話,那兩個節點的最近祖先,實際上就是最大的且比這兩個節點都小的的節點, 所以叫下確界「inf」。
如下圖:左邊的樹包含右邊的樹
以上就是畫樹的全部規則。
我們現在,從TREE(1)開始——即只用一種顏色,我們用綠色來做示範。
第一棵樹只能畫一個節點。畫第二棵樹的時候,你會發現無論怎麼畫都會包含第一棵樹(違反規則二)。
所以TREE(1)=1。
如下圖:TREE(1)右邊的樹包含左邊的樹,TREE(1)=1。
接下來我們進行TREE(2),這次我們綠色和紅色做示範。
第一棵樹畫一個綠色的節點,第二棵樹選擇紅色,但如果第二樹只畫一個紅色的節點,那第三棵樹就畫不下去了,因為第三棵樹無論怎麼畫,必然包含第一顆或第二棵樹。
所以,我們第二棵樹可以畫兩個紅色的節點,這樣我們第三棵樹就可以畫成一個紅色節點(規則二規定後面的樹不能包含前面的樹,沒有規定前面的樹不能包含後面的樹)。
這之後,你會發現你無法再畫出第四顆樹了。所以TREE(2)=3。
如下圖:TREE(2)最多畫出以下三顆樹,TREE(2)=3。
TREE(1) ,TREE(2我們都嘗試過了,接下來就是TREE(3)了,TREE(3)我們使用三種顏色,綠色、紅色、黑色。
你會發現,我們按照這個遊戲規則似乎可以一直畫下去,無窮無盡。直畫到宇宙終結,你畫出的樹的個數跟TREE(3)相比都近似於零。
如下圖:TREE(3)開始的12棵樹的可能畫法。
那麼,TREE(3)是一個有限值嗎?TREE(3)到底有多大?
答案當然是有限的。如果是無窮大,那麼我們在這裡討論TREE(3)的大小就變得毫無意義。
這裡要用到一個定理,叫克魯斯科爾樹定理。
克魯斯科爾這個名字計算機系的朋友肯定很熟悉,克魯斯科爾算法是考試的必考。
這個定理有個粗糙但簡單的說法就是如果你給我無窮多個樹,那其中必然有一個樹是另一顆的inf-embeddable,同下確界意義上的嵌入。
那TREE(3)是一個有限的數其實就這個定理的直接推論了,是不是?
你可能關心TREE(3)這個有限的數到底有多大?這太難解了。
我們可以參考下葛立恆數,葛立恆數可以用64重箭號表示法來表示,那TREE(3)如果要用多重箭號表示法表示,那需要的層數將遠遠大於葛立恆數。
這大概是我最好的形容了,再往下我都不知道怎麼說了,因為再怎麼用語言或符號表達,我都感覺都是很徒勞了。當然,如果你有興趣還是可以上網搜搜有關TREE(3)的符號表示,為了表示它的大,得用各種專門的運算符號才行,雖然這些符號對普通人來說,已經沒什麼感覺了。
關於TREE(3)還有好玩的一點,就是根據克魯斯科爾樹定理,TREE(4),TREE(5),TREE(100)都是有限的對不對?那TREE(TREE(3)呢,就是用用TREE(3)個顏色玩這個畫「樹」遊戲,那它還是有限的。那如果TREE(TREE(3))我如此嵌套TREE(3)重呢?
瞬間大腦系統就崩潰了……
我們最初只是玩了一個「畫樹」的遊戲,結果畫出了一個比整個宇宙還要大得可怕的數。下一次你出門時如果看見一片森林,是否會有不一樣的感受呢?另外各位以後寫情書也可以考慮寫「我愛你TREE(3)年」等等。