Para contar muchos tipos de objetos combinatorios, como los árboles en este caso, existen potentes herramientas matemáticas (el método simbólico) que le permiten derivar técnicamente dichos recuentos de una descripción de cómo se construyen los objetos combinatorios. Esto implica generar funciones.
Una excelente referencia es la analítica combinatoria de los difuntos Philipe Flajolet y Robert Sedgewick. Está disponible en el enlace de arriba.
El libro del fallecido Herbert Wilf que genera funcionalidades es otra fuente gratuita.
Y, por supuesto, Concrete Mathematics de GKP es un tesoro.
Para los árboles binarios es así: primero necesita una definición clara del árbol.
Un árbol binario es un árbol enraizado en el que cada nodo no hoja tiene exactamente un grado 2.
Luego tenemos que acordar lo que queremos llamar el tamaño de un árbol.
A la izquierda, todos los nodos son iguales. En el medio distinguimos las hojas y las no hojas. A la derecha tenemos un árbol binario podado donde se han eliminado las hojas. ¡Tenga en cuenta que tiene ramas unarias de dos tipos (izquierda y derecha)!
Ahora tenemos que derivar una descripción de cómo se construyen estos objetos combinatorios. En el caso de los árboles binarios, es posible una descomposición recursiva .
Sea el conjunto de todos los árboles binarios del primer tipo, entonces simbólicamente tenemos:
UNA
Se lee como: "Un objeto de la clase de árboles binarios es un nodo o un nodo seguido de dos árboles binarios". Esto se puede escribir como ecuación de conjuntos:
UNA= { ∙ } ∪ ( { ∙ } × A× A)
Al introducir la función generadora que enumera esta clase de objetos combinatorios, podemos traducir la ecuación de conjunto en una ecuación que involucra la función generadora.A ( z)
A ( z) = z+ zUNA2( z)
Nuestra elección de tratar todos los nodos por igual y tomar el número de nodos en el árbol como noción de su tamaño se expresa al "marcar" los nodos con la variable .z
Ahora podemos resolver la ecuación cuadrática para A ( z ) y obtener, como de costumbre, dos soluciones, la forma cerrada explícita de la función generadora:zUNA2( z) - A ( z) + z= 0A ( z)
A ( z)=1±1−4z2−−−−−−√2z
Ahora simplemente necesitamos el teorema binomial de Newton (generalizado):
(1+x)a=∑k=0∞(ak)xk
con y x = - 4 z 2 para expandir la forma cerrada de la parte posterior función de generación en una serie de potencias. Hacemos esto porque, el coeficiente en z n es solo el número de objetos combinatorios de tamaño n , típicamente escrito como [ z n ] A ( z ) . Pero aquí nuestra noción de "el tamaño" del árbol nos obliga a buscar el coeficiente en z 2 n + 1 . Después de un poco de malabarismo con binomios y factoriales, obtenemos:a=1/2x=−4z2znn[zn]A(z)z2n+1
[ z2 n + 1] A ( z) = 1n + 1( 2nnorte) .
Si comenzamos con la segunda noción del tamaño, la descomposición recursiva es:
Obtenemos una clase diferente de objetos combinatoria . Se lee: "Un objeto de la clase de árboles binarios es una hoja o un nodo interno seguido de dos árboles binarios".si
Podemos usar el mismo enfoque y convertir en B = 1 + z B 2 ( z ) . Solo que esta vez la variable z solo marca los nodos internos, no las hojas, porque la definición "el tamaño" es diferente aquí. También tenemos una función generadora diferente:si= { □ } ∪ ( { ∙ } × B× B)si= 1 + zsi2( z)z
B ( z) = 1 - 1 - 4 z-----√2 z
Extrayendo los rendimientos del coeficiente
[ znorte] B ( z) = 1n + 1( 2nnorte) .
Las clases y B están de acuerdo en los recuentos, porque un árbol binario con n nodos internos tiene n + 1 hojas, por lo tanto, 2 n + 1 nodos en total.UNAsinorten + 12 n + 1
En el último caso tenemos que trabajar un poco más duro:
que es una descripción de intentos binarios podados no vacíos. Extendemos esto a
dore= { ∙ } ∪ ( { ∙ } × C) ∪ ( {∙}×C) ∪ ( {∙}×C×C)={ϵ}∪({∙}×C×C)
y reescribirlo con funciones generadoras
do( z)D ( z)= z+ 2 zdo( z) + zdo2( z)= 1 + zdo2( z)
resolver las ecuaciones cuadráticas
do( z)D ( z)= 1 - 2 z- 1 - 4 z-----√2 z= 1 - 1 - 4 z-----√2 z
y obtener una vez más
[ znorte] C( z) = 1n + 1( 2nnorte)n ≥ 1[ znorte] D ( z) = 1n + 1( 2nnorte)n ≥ 0
Tenga en cuenta que la función generadora catalana es
mi( z) = 1 - 1 - 4 z-----√2
enumera la clase de árboles generales . Esos son los árboles sin restricción en el grado de nodo.
mi= { ∙ } × S E Q ( E)
Se lee como: "Un objeto de la clase de árboles generales es un nodo seguido de una posible secuencia vacía de árboles generales".
mi( z) = z1 - E( z)
Con la fórmula de inversión Lagrange-Bürmann obtenemos
[ znorte] E( z) = 1n + 1( 2nnorte)
Así que probamos que hay tantos árboles generales como árboles binarios. No es de extrañar que haya una biyección entre los árboles generales y binarios. La biyección se conoce como la correspondencia de rotación (explicada al final del artículo vinculado), que nos permite a dos almacenar cada árbol general como un árbol binario.
Tenga en cuenta que si no distinguimos los hermanos izquierdo y derecho en la clase , obtenemos otra clase de árboles T :doT
Los árboles binarios unarios.
También tienen una función generadora
T ( z ) = 1 - z - √
T= { ∙ } × S E Q≤ 2( T)
sin embargo, su coeficiente es diferente. Obtienes los números de Motzkin
[zn]T(z)=1T( z) = 1 - z- 1 - 2 z- 3 z2----------√2 z
[ znorte] T( z) = 1norte∑k( nk) ( n-kk - 1) .
Ah, y si no te gusta generar funciones, también hay muchas otras pruebas. Vea aquí , hay uno donde podría usar la codificación de árboles binarios como palabras Dyck y derivar una recurrencia de su definición recursiva. Luego, resolver esa recurrencia también da la respuesta. Sin embargo, el método simbólico le evita llegar a la recurrencia en primer lugar, ya que funciona directamente con los planos de los objetos combinatorios.