1. 程式人生 > >Prufer序列與樹的計數(坑)

Prufer序列與樹的計數(坑)

葉子節點 基礎上 ots 葉子 刪掉 乘法 兩個 inline left

\(prufer\)序列:

無根樹轉\(prufer\)序列:

不斷找編號最小的葉子節點,刪掉並在序列中加入他相連的節點。

\(prufer\)轉無根樹:

找到在目前\(prufer\)序列中未出現且未使用的編號最小的的節點與當前位相連,當前位從\(prufer\)序列中刪除,節點標為已使用,剩余最後兩個未使用的節點相連。

性質:

\(1.prufer\)序列中某個編號出現的次數就等於這個編號的節點在無根樹中的度數-1。
\(2.\)一棵n個節點的無根樹唯一地對應了一個長度為\(n-2\)的數列,\(n\)個點的無根樹有\(n^{(n-2)}\)種。

樹的計數

\(1.\)n個節點度數依次為\(D_1,D_2,D_3...D_n\)

的無根樹的種類有(可重集的組合):
\((n-2)!/((D_{1}-1)!\times...\times(D_{n}-1)!)\)
\(2.\)\(1\)的基礎上,有\(m\)個節點度數未知,剩余\(left\)個位置(prufer中,共n-2個),種類有(先把left挑出來\(\times\)再讓m個點分left位置,乘法原理):
\[{(n-2)!}\over{((D_{1}-1)!\times \cdots \times(D_{n-m}-1)!\times left!)\times m^{left}}\]
\(3.n\)個點有標號有根樹:\(n^{n-2}\times n=n^{n-1}\)

\(4.n\)個點無標號有根樹:坑——生成函數
\(5.n\)個點無標號無根樹:坑——生成函數

Prufer序列與樹的計數(坑)