本文的閱讀等級:中級
朗博教授公告在走廊黑板的第二個挑戰問題抄錄於下:
(1) How many trees are there with labeled vertices?
(2) Draw all the homeomorphically irreducible trees with .
威爾的答案:(1) ,(2) 8 棵樹 (見電影劇照)。這兩個問題屬於組合數學的範疇。廣義的組合數學就是離散數學,狹義的組合數學是圖論、代數結構、數理邏輯等的總稱[1]。為了讀懂朗博教授的問題,我們先要瞭解一些關於樹 (圖論的一個主題) 的基本知識。

朗博教授和助教正在審視威爾的答案 From http://blogwillhunting.com/wp-content/uploads/2010/02/gwh_math2.jpg
令 為一無向圖,其中
是頂點集合,
是邊集合。若頂點
是邊
的兩個端點,我們稱
和
鄰接,記為
。因為無向圖
的邊不具方向性,
可視同兩頂點組成的集合。若任兩頂點之間存在一條旅行路徑 (path),則稱為連通圖。如果
是一個沒有迴路的連通圖,則
稱為一棵樹。令
表示一集合
的基數 (cardinal number),即
包含的元素的個數。以下是樹的等價性質。
沒有迴路,但在
內添加任何一個邊即可形成一迴路。
沒有自環,即
,且存在唯一一條簡單路徑 (不重複拜訪頂點) 連接任兩個頂點。
是連通圖,但若去除任一邊就不再連通。
沒有迴路,且
。
是連通圖,且
。
對於頂點 ,度數 (degree)
是以
作為邊的一端點的次數,換句話說,
等於其鄰接頂點的總數。若
,則
稱為葉子 (leaf)。若一棵樹不包含度數等於
的頂點,則稱為同胚不可約樹 (homeomorphically irreducible tree)。標記頂點 (labeled vertex) 是指每一頂點都有一個識別記號 (通常是自然數或顏色),具有標記頂點的樹稱為標記樹。見圖一的例子,樹
的頂點集合為
,邊集合為
,頂點的度數為
,
,
,
,
,
。
第一個問題:總計有多少個包含 個頂點的標記樹?給定
,令
表示所有標記樹
所形成的集合。我們的目標要找出
。德國數學家博爾夏特 (Carl Wilhelm Borchardt) 於1860年最先發現答案是
,後人稱之為 Cayley 公式,原因是英國數學家凱萊 (Arthur Cayley) 在1889年進行了多方面的延伸工作。Cayley 公式的證法很多[2],下面介紹德國數學家普呂弗 (Heinz Prüfer) 於1918年提出的一個巧妙證法。(類似的思路可應用於證明等差級數公式,見“等差級數和公式的無言證明”。) 普呂弗設計一個演算法使得每一棵標記樹
對應唯一一個長度等於
的序列,稱為 Prüfer 序列,
,其中每一
。因此,我們可以立即推論
就是長度為
的序列數,即
。按“維基百科”顯示
的所有著色標記樹。
給定一標記樹 ,其中
,Prüfer 序列
的算法如下:
- 初始化
。
- 令
表示目前樹中最小的葉子,即
。刪除
及其鄰接邊
,
。
- 若
,終止程序。
,返回步驟 2。
我們以圖一的標記樹為例說明算法過程。圖二顯示每一步驟的結果,紅色線條的頂點表示葉子,黃色頂點表示最小的葉子 (即 ),綠色頂點表示與黃色葉子鄰接的頂點 (即
)。圖二 (4) 是終止程序刪除
之前的情況。下表記錄運算結果,閱讀方式係由左而右,從上往下。
表中 列即為 Prüfer 序列
,數對
是被刪除的邊 (連接黃色和綠色頂點的邊),此例最後剩下一邊
。
若 是一標記樹的 Prüfer 序列,我們可以從中推論出甚麼訊息?算法步驟 2 隱含:(1) 因為兩葉子不可能鄰接,Prüfer 序列僅由非葉子 (不為葉子的頂點) 組成;(2) 當非葉子
進入 Prüfer 序列時,
的度數將減去
(因為刪除與葉子鄰接的邊)。這兩個性質說明頂點
的度數等於
出現於 Prüfer 序列次數再加上 1,即
,
其中 表示識別函數,
若
,
若
。
再看相反方向的算法。給定一 Prüfer 序列 ,下列算法產生一棵標記樹
,其中
。
- 初始化
。
- 令
表示度數等於
的最小頂點,即
。建立一邊
,
,
。
- 若
,建立一邊
,其中
;終止程序。
,返回步驟 2。
我們仍然用上例展示算法。Prüfer 序列 表明標記樹各頂點的度數為
,
,
,
,
,
。下表左邊呈現算法的初始狀態,右邊是算法結束後的結果,其中標示橫線的數字代表度數減去
,數對
是建立的邊。
圖三顯示每一步驟的結果,紅色線條的頂點表示目前的度數等於 ,黃色頂點表示度數等於
的最小頂點 (即
),綠色頂點表示
。圖三 (4) 是終止程序添加
之前的結果。
第二個問題:畫出包含 個頂點的所有同胚不可約樹,也就是說,畫出包含
個頂點的所有非標記樹,其中每一頂點的度數都不等於
。為方便說明,我們仍以數字標記頂點。令
表示所有葉子所形成的集合,
表示所有非葉子所形成的集合。明顯地,
,
和
不為空集合且兩者無交集,故
。使用樹的等價性質,由
可知
。因為每一條邊連接兩個頂點,
。若
,則
。根據同胚不可約樹的定義,若
,則
。所以,
,
即 。假設頂點按照度數大小以遞減方式排序,
。換句話說,非葉子排在前面,葉子排在後面。同胚不可約樹的設計方法是先解得非葉子的度數,據此畫出以非葉子為頂點的小樹,然後再按照度數長出葉子。下面分開四種情況討論。
:
,我們得到一棵星狀樹,見圖四 (1)。
:
且
有三個解 (a)
,
,(b)
,
,(c)
。這三個解各自對應一棵樹,其中頂點
和
鄰接,見圖四 (2a),(2b),(2c)。
:
且
有兩個解 (a)
,
,(b)
,
。每一個解都存在二棵樹與之對應,解 (a) 的兩個度數為
的頂點鄰接或不鄰接,解 (b) 的兩個度數為
的頂點鄰接或不鄰接,見圖四 (3a),(3b)。
:
且
有唯一解
,我們得到二棵樹,其中一棵樹的一個度數為
的頂點未與任何葉子鄰接,另一棵樹的每一個度數為
的頂點都和至少一葉子鄰接,見圖四 (4)。
圖四的黑樹就是威爾畫在黑板上的 8 棵樹,綠樹是遺失的 2 棵樹。有此一說,威爾還沒來得及畫完最後 2 棵樹就被突然冒出的朗博教授給打斷了 (見“電影《心靈捕手》的數學問題 (二)”,YouTube 影片)。讀者不妨找一個不被打擾的安靜場所,運用上述方法畫出包含 個頂點的所有同胚不可約樹 (總計有
棵)。
參考來源:
[1] 維基百科:組合數學
[2] 維基百科:Cayley’s formula