Pr fer編碼與Cayley公式

2022-09-24 02:48:09 字數 1549 閱讀 2934

今天遇到乙個問題:在乙個n階完全圖的所有生成樹的數量為n的n-2次方,想了好久也沒有想出來,還是在網上找到的。。。

簡單點說就是:

一一對應法:

假定t是其中一棵樹,樹葉中有標號最小者,設為a1,a1的鄰接點為b1,從圖中消去a1點

和邊(a1, b1).b1點便成為消去後餘下的樹t1的頂點.在餘下的樹t1中尋找標號最小的樹葉,設

為a2,a2的鄰接點為b2,從t1中消去a2及邊(a2, b2).如此步驟繼續n-2次,直到最後剩下一條

邊為止.於是一棵樹t對應一串行

b1,b2,…,b[n-2]

恢復樹t:

序列i 1,2,…n

序列ii b1,b2,…,b[n-2]

在i中找出第乙個不出現在ii中數,顯然是a1,連線邊(a1, b1),在i中消去a1,在ii中消

去b1.如此步驟重複n-2次,序列i中兩個數,構成最後一條邊.

以下是來自matirx67的blog.

ayley公式是說,乙個完全圖k_n有n^(n-2)棵生成樹,換句話說n個節點的帶標號的無根樹有n^(n-2)個。cayley公式的乙個非常簡單的證明,證明依賴於prüfer編碼,它是對帶標號無根樹的一種編碼方式。

給定一棵帶標號的無根樹,找出編號最小的葉子節點,寫下與它相鄰的節點的編號,然後刪掉這個葉子節點。反覆執行這個操作直到只剩兩個節點為止。由於節點數n>2的樹總存在葉子節點,因此一棵n個節點的無根樹唯一地對應了乙個長度為n-2的數列,數列中的每個數都在1到n的範圍內。下面我們只需要說明,任何乙個長為n-2、取值範圍在1到n之間的數列都唯一地對應了一棵n個節點的無根樹,這樣我們的帶標號無根樹就和prüfer編碼之間形成一一對應的關係,cayley公式便不證自明了。

看到這,我建議自己劃一劃,結果就出來了(這句話是我的建議,非matrix67原文)。

注意到,如果乙個節點a不是葉子節點,那麼它至少有兩條邊;但在上述過程結束後,整個圖只剩下一條邊,因此節點a的至少乙個相鄰節點被去掉過,節點a的編號將會在這棵樹對應的prüfer編碼**現。反過來,在prüfer編碼**現過的數字顯然不可能是這棵樹(初始時)的葉子。於是我們看到,沒有在prüfer編碼**現過的數字恰好就是這棵樹(初始時)的葉子節點。找出沒有出現過的數字中最小的那乙個(比如④),它就是與prüfer編碼中第乙個數所標識的節點(比如③)相鄰的葉子。接下來,我們遞迴地考慮後面n-3位編碼(別忘了編碼總長是n-2):找出除④以外不在後n-3位編碼中的最小的數(左圖的例子中是⑦),將它連線到整個編碼的第2個數所對應的節點上(例子中還是③)。再接下來,找出除④和⑦以外後n-4位編碼中最小的不被包含的數,做同樣的處理……依次把③⑧②⑤⑥與編碼中第3、4、5、6、7位所表示的節點相連。最後,我們還有①和⑨沒處理過,直接把它們倆連線起來就行了。由於沒處理過的節點數總比剩下的編碼長度大2,因此我們總能找到乙個最小的沒在剩餘編碼**現的數,演算法總能進行下去。這樣,任何乙個prüfer編碼都唯一地對應了一棵無根樹,有多少個n-2位的prüfer編碼就有多少個帶標號的無根樹。

乙個有趣的推廣是,n個節點的度依次為d1, d2, …, dn的無根樹共有(n-2)! / [ (d1-1)!(d2-1)!..(dn-1)! ]個,因為此時prüfer編碼中的數字i恰好出現di-1次。

Pr fer編碼與Cayley公式

cayley公式是說,乙個完全圖k n有n n 2 棵生成樹,換句話說n個節點的帶標號的無根樹有n n 2 個。今天我學到了cayley公式的乙個非常簡單的證明,證明依賴於pr fer編碼,它是對帶標號無根樹的一種編碼方式。給定一棵帶標號的無根樹,找出編號最小的葉子節點,寫下與它相鄰的節點的編號,然...

Pr fer編碼與Cayley公式

之前做題碰到了乙個用到完全圖的生成樹數量的裸題,上課的時候我知道老師講到有n個節點的完全圖的生成樹的數量是n n 2 這個公式用歸納法應該是可以證明的,自己去網上搜尋了一下,發現還有另外的證法,是用到了pr fer編碼,並且上述提到的公式原來是叫cayley公式。下面簡要談一下自己對這個證法的理解。...

Pr fer編碼與Cayley公式學習小記

傳送門 顧森大爺的部落格.一棵有編號的樹如何用乙個序列表示?pr fer編碼出奇蹟。如何構序列 一共有n 2次操作 找到當前葉子節點中編號最小的那個點x,輸出與x相鄰的點,刪掉x。根據序列求樹 由於沒有出現在序列裡的序號恰好是是葉子節點,所以每次找到每次找到序號最小的葉子節點,與序列的對應項形成一條...