ラベル付き木から prüfer sequence(プリューファ列)と呼ばれる整数列への一対一対応を説明します.
ラベル付き木
ここでは各頂点のラベルが から
の値が付いた
頂点のラベル付き木を考えます.下の図は頂点数
の非同型なラベル付き木の例です(画像:Cayley's formula - Wikipedia).ラベルなし木とは異なることに注意してください.

Prüfer sequence
各ラベル付き木に対して Prüfer sequence と呼ばれる整数列が一対一対応します.まず初めにラベル付き木から Prüfer sequence への変換方法を示して,その後で Prüfer sequence からラベル付き木への逆変換を示します.
ラベル付き木 👉 Prüfer sequence
頂点数 のラベル付き木
から長さ
の Prüfer sequence
への変換を説明します.ラベル最小の葉に隣接する頂点を Prüfer sequence に加えて,その葉を削除するということを Prüfer sequence のサイズが
になるまで繰返します.頂点数が
以上ならば葉が存在して,葉の次数は1であることから隣接する頂点は一意に定まります.
擬似コードと C++ のソースコードを下に載せます. C++ のソースコードの実行時間は です.
2.
2-1.
2-2.
2-3.
例)頂点数
のラベル付き木
下のラベル付き木の prüfer sequence は です.また,取り除いていく頂点は順番に
です.

Prüfer sequence 👉 ラベル付き木
次に長さ の prüfer sequence
から頂点数
のラベル付き木
への変換を説明します.各頂点
に対して,
での
の出現回数に1を足した値は
の次数に等しくなります.疑似コードど C++のソースコードを下に載せます.C++の実行時間は
です.
この変換は上の変換の逆変換となるので,これらの変換は一対一対応となります.
2.
2-1.
2-2. 頂点
2-3.
3.
例) prüfer sequence 
での各頂点の出現回数は
なので各頂点の次数は
となり,
の長さが
なので頂点数は
となります.
に対応するラベル付き木は上の図の木です.
応用問題
ケイリーの公式:Heinz Prüfer (1918)
頂点のラベル付き木の個数が
であることをケイリーの公式と言います.ここでは,prüfer sequence を用いてケイリーの公式の証明を行います.
上の変換は一対一対応となっていたので, 頂点のラベル付き木全体とサイズ
の prüfer sequence の全体のサイズは等しくなります.長さ
の prüfer sequence の各要素は
から
までの
通りの選び方があるので,全体で
通りあります.したがって,
頂点のラベル付き木の数は
です.
ケイリーの公式は頂点数 のラベル付き完全グラフの全域木の数が
個であることと同値です.
ケイリーの公式の発展版
頂点数 のラベル付き完全グラフ
の全域木で,各頂点
の次数が
となるものの数を求めます.
長さ の prüfer sequence で考えます.上の prüfer sequence からラベル付き木への変換で述べたとおり,頂点
の次数は prüfer sequence での
の出現回数に1を足した値と等しくなります.したがって,prüfer sequence に頂点
は
回表れます.よって,求める数は,
となります.
ランダムなラベル付き木の生成
頂点数 のラベル付き木を確率
で生成することを考えます.
長さ の prüfer sequence の各成分を独立に
の確率で
から
の値を割り当てます.このとき, prüfer sequence が生成される確率は一様に
となります.これをラベル付き木に変換することによって一様ランダムなラベル付き木を生成することができます.
この方法はランダムなラベルなし木を生成しないことに注意してください.例えば,頂点数 のラベル付き木は全部で 16個あり下の図のようになります.このとき,ラベルなし木は上の12個が同型となり,また下の4個も同型となるので 2個しかありませんので,確率
で上のタイプか下のタイプを出力して欲しいのですが,ここでの生成方法では上のタイプは確率
で生成されてしまうので偏りが生じてしまいます.

参考文献
- Prüfer sequence - Wikipedia
- R.J. ウィルソン(西関隆夫・西関裕子 訳):『グラフ理論入門 原書第4版』.近代科学社,2013,pp. 66--68.