prufer序列筆記

 prufer序列

度孃的定義編碼

Prufer數列是無根樹的一種數列。在組合數學中,Prufer數列由有一個對於頂點標過號的樹轉化來的數列,點數爲n的樹轉化來的Prufer數列長度爲n-2。spa

對於一棵肯定的無根樹,對應着惟一肯定的prufer序列數學

構造方法

無根樹轉化爲prufer序列

  1. 找到編號最小的度數爲\(1\)的點
  2. 刪除該節點並在序列中添加與該節點相連的節點的編號
  3. 重複\(1,2\)操做,直到整棵樹只剩下兩個節點

以下圖的prufer序列爲\(3,5,1,3\)class

prufer序列轉化爲無根樹

  1. 每次取出prufer序列中最前面的元素\(u\)
  2. 在點集中找到編號最小的沒有在prufer序列中出現的元素\(v\)
  3. \(u,v\)連邊而後分別刪除
  4. 最後在點集中剩下兩個節點,給它們連邊

例如,對於prufer序列\(3,5,1,3\)
連邊順序爲
\(2,3\)
\(5,4\)
\(1,5\)
\(3,1\)
\(3,6\)
(實際上與構建prufer序列時相同)
以上兩種操做均可以用set維護,時間複雜度\(O(nlogn)\)方法

性質

  1. prufer序列中某個編號出現的次數就等於這個編號的節點在無根樹中的度數-1im

  2. 一棵n個節點的無根樹惟一地對應了一個長度爲n-2的數列,數列中的每一個數都在1到n的範圍內。img

  3. \(n\)個點的無向徹底圖的生成樹的計數:\(n^{(n-2)}\),即\(n\)個點的有標號無根樹的計數時間

  4. n個節點的度依次爲\(d_1,d_2,…,d_n\)的無根樹共有\(\frac{(n-2)!}{ \prod_{i=1}^n(d_i-1)!}\)個,由於此時Prufer編碼中的數字\(i\)剛好出現\(d_i-1\)次,\((n−2)!\)是總排列數
  5. n個點的 有標號有根樹的計數:\(n^{(n-2)}*n = n^{(n-1)}\)block

暫且寫這些吧,先作作題,而後繼續整理數字

相關文章
相關標籤/搜索