(Soy un estudiante con algunos conocimientos matemáticos y me gustaría saber cómo contar el número de un tipo específico de árboles binarios).
Mirando la página de Wikipedia para árboles binarios , noté esta afirmación de que el número de árboles binarios enraizados de tamaño sería este número catalán : C_n = \ dfrac {1} {n + 1} {2n \ elegir n}
Pero no entiendo cómo podría llegar a tal resultado por mí mismo. ¿Hay algún método para encontrar este resultado?
Ahora, ¿qué pasa si no se considera el orden de los subárboles (que queda, cuál es el correcto)? Por ejemplo, desde mi punto de vista, considero que estos dos árboles son iguales:
/\ /\
/\ /\
¿Sería posible aplicar un método similar para contar cuántos de estos objetos tienen exactamente nodos?
combinatorics
binary-trees
discrete-mathematics
Stéphane Gimenez
fuente
fuente
Respuestas:
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:
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)
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= 0 A ( z)
Ahora simplemente necesitamos el teorema binomial de Newton (generalizado):
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/2 x=−4z2 zn n [zn]A(z) z2n+1
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
Extrayendo los rendimientos del coeficiente
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.UNA si norte n + 1 2 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
y reescribirlo con funciones generadoras
resolver las ecuaciones cuadráticas
y obtener una vez más
Tenga en cuenta que la función generadora catalana es
enumera la clase de árboles generales . Esos son los árboles sin restricción en el grado de nodo.
Se lee como: "Un objeto de la clase de árboles generales es un nodo seguido de una posible secuencia vacía de árboles generales".
Con la fórmula de inversión Lagrange-Bürmann obtenemos
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 :do T
Los árboles binarios unarios. También tienen una función generadora T ( z ) = 1 - z - √
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.
fuente
TTETETTETEE
. Eliminar unTETETTETEEE
. Esta es una descripción del árbolT(E,T(E,T(T(E,T(E,E)),E)))
. A continuación hay una explicación de por qué esto es una biyección. Una vez que esté convencido de eso, contar es fácil. ExistenPrimera biyección. Una definición típica para árboles en ML esnorte Ts y norte Es, donde norte es el número de nodos del árbol.
type tree = T of tree * tree | E
; es decir, un árbol tiene dos subárboles (ordenados) o está vacío. Aquí es cómo se construyen los árboles:T(T(E,E),T(T(E,E),T(E,E)))
. Dejando caer la pelusa, simplemente podemos escribirTTEETTEETEE
. Todas estas descripciones se terminan con unaE
, por lo que es redundante:TTEETTEETE
. (Tenga en cuenta que el árbol vacío ahora corresponde a la cadena vacía). Estas cadenas tienen la propiedad de que cada prefijo tiene al menos tantas Ts como Es, y en total tienenSegunda biyección. Ahora reemplazamos T por +1 y E por -1. Entonces, estamos viendo secuencias connorte valores +1, con norte valores -1, y con las sumas de todos los prefijos ≥ 0 .
Tercera biyección. Ahora cambiamos un poco el requisito de prefijos: pedimos que la suma de cada prefijo no vacío sea> 0 . Para que esto sea posible dejamosn + 1 valores +1 y norte valores -1. (De lo contrario, la suma de toda la cadena sería 0 y no cumpliría la condición para los prefijos). Estas secuencias deben comenzar con +1. Entonces, realmente son los mismos que antes, excepto que tienen un +1 atascado al principio.
Raney propiedad. Ahora olvida nuestras secuencias por un momento y considera una secuencia finita de enterosX1 , ... , Xmetro cuya suma es 1. Si todos los prefijos no vacíos tienen sumas positivas, entonces ninguna permutación cíclica de esta secuencia tiene la misma propiedad. ¿Por qué? Bueno, supongamos que hay unk ≠ 1 tal que Xk, ... , xmetro, x1, ... , xk - 1 también tiene todos los prefijos no vacíos positivos. LuegoX1+ ⋯ + xk - 1≥ 1 (propiedad de secuencia a partir de X1 ) y Xk+ ⋯ + xmetro≥ 1 (propiedad de secuencia a partir de Xk ); por lo tanto,X1+ ⋯ + xmetro≥ 2 , lo que contradice la suposición de que la suma de toda la secuencia es 1.
Además, dada alguna secuencia con la suma 1, siempre hay una permutación cíclica que hace que todos los prefijos no vacíos tengan una suma positiva. (Esto es cierto incluso para números reales).
Conclusión. Ahora cuentemos las secuencias de +1 y -1 que están en una biyección con árboles. Fuera de2 n + 1 números que debemos elegir n + 1 que igual a +1, los otros serán -1. Existen( 2n+1n + 1) maneras de hacerlo. Pero sólo1 en 2 n + 1 Las secuencias contadas hasta ahora tienen prefijos positivos. Entonces, el número de árboles binarios ordenados y enraizados es:
fuente