組合せ数学において、ラベル付き木のプリューファー列(プリューファーコード、プリューファー数とも呼ばれる)は、その木に関連付けられた一意の列である。n頂点の木のプリューファー列の長さはn − 2であり、単純な反復アルゴリズムによって生成できる。プリューファー列は、 1918年にハインツ・プリューファーによってケーリーの公式を証明するために初めて使用された。[ 1 ]
ラベル付き木のプリューファー列は、頂点が2つだけになるまで繰り返し頂点を削除することで生成できます。具体的には、頂点{1, 2, ..., n }を持つラベル付き木Tを考えます。ステップiでは、ラベルが最小の葉を削除し、プリューファー列のi番目の要素をこの葉の隣接要素のラベルに設定します。
ラベル付きツリーのPrüferシーケンスは一意であり、長さはn − 2です。
符号化と復号化はどちらも整数基数ソートに簡約され、並列化される。[ 2 ]

上記のアルゴリズムを右に示す木に対して実行するとどうなるでしょうか。最初は頂点1が最も小さいラベルを持つ葉なので、まず頂点1を削除し、プリューファーシーケンスに4を追加します。次に頂点2と3を削除するので、頂点4がさらに2回追加されます。頂点4は葉になり、ラベルが最も小さいので削除し、シーケンスに5を追加します。残る頂点は2つだけなので、ここで処理を終了します。木のシーケンスは[4,4,4,5]です。
[a[1], a[2], ..., a[n]]をプリューファー列とします 。
木にはから までn+2の番号が付けられたノードがあります。各ノードの次数を、シーケンス内での出現回数に1を加えた値に設定します。例えば、擬似コードでは次のようになります。 1n+2
Convert-Prüfer-to-Tree ( a ) 1 n ←長さ[ a ] 2 T ← 1からn + 2までの番号が付けられたn + 2個の孤立したノードを持つグラフ 3度← 整数の配列 4 T内の各ノードiに対して 5 度[ i ]←1を実行する 6それぞれの値iについて、7 度 [ i ] ←度[ i ] + 1
次に、シーケンスの各番号についてa[i]、次数が1である最初の(最も番号が小さい)ノード を見つけ、ツリーにjエッジを追加し、との次数をデクリメントします。擬似コードでは、 次のようになります。(j, a[i])ja[i]
8 a の各値iに対して、次の処理を実行する9 T の各ノードjに対して、次の処理を実行する 10 次数[ j ] = 1の場合、次 の処理を実行する 11エッジ[ i , j ]を Tに挿入する 12 次数[ i ] ←次数[ i ] - 1 13 度[ j ] ←度[ j ] - 1 14 休憩
このループの最後には、次数1のノードが2つ残ります(これらをu、と呼びます)。最後に、木にv辺を追加します。 [ 3 ](u,v)
15 u ← v ← 0 16 T内の各ノードiについて 17 次数[ i ] = 1 の 場合 18 u = 0の場合 19 u ← i 20 それ以外の場合 21 v ← i 22 break 23辺[ u , v ] をTに挿入 24次数[ u ] ←次数[ u ] - 1 25度[ v ] ←度[ v ] - 1 26リターンT
n頂点のラベル付き木のプリューファー列は、ラベル 1 から nまでの長さn − 2の一意の列である。ラベル 1 からnまでの長さn − 2の列Sが与えられたとき、プリューファー列が Sである一意のラベル付き木が存在する。
直接的な帰結として、プリューファー列は、n頂点上のラベル付き木の集合と、ラベル 1 からnまでの長さn − 2の列の集合との間の一対一関係を与える。後者の集合のサイズはn n −2であるため、この一対一関係の存在はケイリーの公式、すなわちn頂点上にn n −2本のラベル付き木が存在することを証明する。
出典: [ 4 ]
{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)