En matemáticas combinatorias , la secuencia de Prüfer (también código de Prüfer o números de Prüfer ) de un árbol etiquetado es una secuencia única asociada con el árbol. La secuencia para un árbol en n vértices tiene una longitud de n − 2 y se puede generar mediante un algoritmo iterativo simple. Las secuencias de Prüfer fueron utilizadas por primera vez por Heinz Prüfer para demostrar la fórmula de Cayley en 1918. [1]
Se puede generar una secuencia de Prüfer de un árbol etiquetado eliminando iterativamente vértices del árbol hasta que solo queden dos. En concreto, considere un árbol etiquetado T con vértices {1, 2, ..., n }. En el paso i , elimine la hoja con la etiqueta más pequeña y establezca el elemento i de la secuencia de Prüfer como la etiqueta del vecino de esta hoja.
La secuencia de Prüfer de un árbol etiquetado es única y tiene longitud n − 2.
Tanto la codificación como la decodificación pueden reducirse a una clasificación por radio de números enteros y paralelizarse. [2]
Considere el algoritmo anterior ejecutado en el árbol que se muestra a la derecha. Inicialmente, el vértice 1 es la hoja con la etiqueta más pequeña, por lo que se elimina primero y se coloca 4 en la secuencia de Prüfer. Los vértices 2 y 3 se eliminan a continuación, por lo que se agrega 4 dos veces más. El vértice 4 ahora es una hoja y tiene la etiqueta más pequeña, por lo que se elimina y agregamos 5 a la secuencia. Nos quedan solo dos vértices, por lo que nos detenemos. La secuencia del árbol es {4,4,4,5}.
Sea {a[1], a[2], ..., a[n]}
una secuencia de Prüfer:
El árbol tendrá n+2
nodos, numerados del 1
a n+2
. Para cada nodo, establezca su grado en la cantidad de veces que aparece en la secuencia más 1. Por ejemplo, en pseudocódigo:
Convertir-Prüfer-en-árbol ( a ) 1 n ← longitud [ a ] 2 T ← un gráfico con n + 2 nodos aislados, numerados del 1 al n + 2 3 grados ← una matriz de números enteros 4 para cada nodo i en T hacer 5 grados [ i ] ← 1 6 por cada valor i en un do 7 grado [ i ] ← grado [ i ] + 1
A continuación, para cada número de la secuencia a[i]
, busque el primer nodo (de menor número), j
, con grado igual a 1, agregue la arista (j, a[i])
al árbol y disminuya los grados de j
y a[i]
. En pseudocódigo:
8 para cada valor i en a haz 9 para cada nodo j en T haz 10 si grado [ j ] = 1 entonces 11 Inserta borde [ i , j ] en T 12 grado [ i ] ← grado [ i ] - 113 grado [ j ] ← grado [ j ] - 114 descanso
Al final de este bucle quedarán dos nodos de grado 1 (los llamaremos u
, v
). Por último, añadiremos la arista (u,v)
al árbol. [3]
15 u ← v ← 016 para cada nodo i en T 17 si grado [ i ] = 1 entonces 18 si u = 0 entonces 19 u ← i 20 de lo contrario 21 v ← i 22 ruptura 23 Insertar borde [ u , v ] en T 24 grado [ u ] ← grado [ u ] - 125 grados [ v ] ← grados [ v ] - 126 retorno T
La secuencia de Prüfer de un árbol etiquetado en n vértices es una secuencia única de longitud n − 2 en las etiquetas 1 a n . Para una secuencia dada S de longitud n − 2 en las etiquetas 1 a n , existe un árbol etiquetado único cuya secuencia de Prüfer es S .
La consecuencia inmediata es que las secuencias de Prüfer proporcionan una biyección entre el conjunto de árboles etiquetados en n vértices y el conjunto de secuencias de longitud n − 2 en las etiquetas 1 a n . El último conjunto tiene tamaño n n −2 , por lo que la existencia de esta biyección prueba la fórmula de Cayley , es decir, que hay n n −2 árboles etiquetados en n vértices.
{{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace )