# Árbol de Calkin-Wilf

En teoría de números, el árbol de Calkin-Wilf es un tipo de árbol en el que los vértices corresponden uno a uno con los números racionales positivos. El árbol tiene su raíz en el número 1, y cualquier número racional expresado en términos más simples como una Fracción de la forma a/b tiene como dos hijos a los números a/a + b y a + b/b. Cada número racional positivo aparece exactamente una vez en el árbol. Lleva el nombre de Neil Calkin y Herbert Wilf, pero aparece en otros trabajos anteriores, incluido el Harmonices mundi de Johannes Kepler.
La secuencia de números racionales en un recorrido primero en anchura del árbol de Calkin-Wilf se conoce como secuencia de Calkin-Wilf. Su secuencia de numeradores (o, desplazados por uno, denominadores) es la serie diatómica de Stern, y puede calcularse mediante la función fusc.

## Historia

El árbol de Calkin-Wilf lleva el nombre de Neil Calkin y de Herbert Wilf, quienes lo consideraron en un artículo del año 2000. Con anterioridad, en un artículo de 1997, Jean Berstel y Aldo de Luca llamaron al mismo árbol árbol de Raney, ya que emplearon algunas ideas extraídas de un artículo de 1973 de George N. Raney. La serie diatómica de Stern fue formulada mucho antes por Moritz Abraham Stern, un matemático alemán del siglo XIX que también ideó el estrechamente relacionado árbol de Stern-Brocot. Incluso antes, un árbol similar (que incluye solo las fracciones entre 0 y 1) aparece en la obra Harmonices mundi (1619) de Johannes Kepler.

## Definición y estructura

El árbol de Calkin-Wilf se puede definir como un grafo dirigido en el que cada número racional positivo a/b aparece como un vértice y tiene una arista saliente hacia otro vértice, su padre, excepto la raíz del árbol, el número 1, que no tiene padre.
El padre de cualquier número racional se puede determinar después de poner el número en términos más simples, como una fracción a/b para la cual el máximo común divisor de a y b es 1. Si a/b < 1, el padre de a/b es a/b − a; si es a/b > 1, el padre de a/b es a − b/b. Por lo tanto, en cualquier caso, el padre es una fracción con una suma más pequeña de numerador y denominador, por lo que la reducción repetida de este tipo finalmente debe llegar al número 1. Como un gráfico con una arista saliente por vértice y una raíz alcanzable por todos los demás vértices, el árbol Calkin-Wilf debe ser un árbol.
Los hijos de cualquier vértice en el árbol de Calkin-Wilf se pueden calcular invirtiendo la fórmula de los padres de un vértice. Cada vértice a/b tiene un hijo cuyo valor es menor que 1, a/a + b, por supuesto a + b > a. De manera similar, cada vértice a/b tiene un hijo cuyo valor es mayor que 1, a + b/b.
Como cada vértice tiene dos hijos, el árbol de Calkin-Wilf es un árbol binario. Sin embargo, no es un árbol binario de búsqueda: su orden interior no coincide con el orden ordenado de sus vértices. Sin embargo, está estrechamente relacionado con un árbol de búsqueda binaria diferente en el mismo conjunto de vértices, el árbol de Stern-Brocot: los vértices en cada nivel de los dos árboles coinciden y están relacionados entre sí por una permutación de inversión de bits.

## Amplitud del primer recorrido

La secuencia de Calkin-Wilf es la secuencia de números racionales generados por un recorrido en anchura del árbol de Calkin-Wilf,
    1/1, 1/2, 2/1, 1/3, 3/2, 2/3, 3/1, 1/4, 4/3, 3/5, 5/2, 2/5, 5/3, 3/4, ….
Debido a que el árbol de Calkin-Wilf contiene cada número racional positivo exactamente una vez, también lo hace esta secuencia. El denominador de cada fracción es igual al numerador de la siguiente fracción en la secuencia. La secuencia de Calkin-Wilf también se puede generar directamente mediante la fórmula
    $q_{i+1}={\frac {1}{2\lfloor q_{i}\rfloor -q_{i}+1}}$
donde q$_i$ denota el número i-ésimo en la secuencia, a partir de q$_1$ = 1, y ⌊ q$_i$ ⌋ representa la parte entera.
También es posible calcular q$_i$ directamente mediante codificación de longitud de ejecución binaria de i: el número de 1 consecutivos a partir del bit menos significativo, luego el número de 0 consecutivos a partir del primer bloque de 1, y así sucesivamente. La secuencia de números generada de esta manera da la representación en forma de fracción continua de q$_i$. Por ejemplo:
    i = 1081 = 10000111001$_2$: La fracción continua es [1;2,3,4,1] por lo tanto q$_{1081}$ = 53/37.
    i = 1990 = 11111000110$_2$: La fracción continua es [0;1,2,3,5] por lo tanto q$_{1990}$ = 37/53.
En la otra dirección, usar la fracción continua de cualquier q$_i$ como la codificación de longitud de ejecución de un número binario devuelve el mismo i. Por ejemplo:
    q$_i$ = 3/4: la fracción continua es [0;1,3] por lo tanto i = 1110$_2$ = 14.
    q$_i$ = 4/3: la fracción continua es [1;3]. Pero para usar este método, la longitud de la fracción continua debe ser impar. Entonces [1;3] debe ser reemplazado por la fracción continua equivalente [1;2,1]. Por lo tanto i = 1001$_2$ = 9.
También se puede usar una conversión similar entre números binarios codificados por longitud de ejecución y fracciones continuas para evaluar la función interrogación de Minkowski. Sin embargo, en el árbol de Calkin-Wilf los números binarios son números enteros (posiciones en el recorrido primero en anchura) mientras que en la función de signo de interrogación son números reales entre 0 y 1.

## Secuencia diatómica de Stern

La secuencia diatómica de Stern es la sucesión entera
    0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, … (sucesión A002487 en OEIS).
Usando numeración en base 0, el valor n-ésimo en la secuencia es el valor fusc(n) de la función fusc, denominada de acuerdo con la apariencia ofuscante de la secuencia de valores y definida por la relación de recurrencia
    ${\begin{aligned}\operatorname {fusc} (2n)&=\operatorname {fusc} (n)\\\operatorname {fusc} (2n+1)&=\operatorname {fusc} (n)+\operatorname {fusc} (n+1),\end{aligned}}$
con los casos base fusc(0) = 0 y fusc(1) = 1.
El n-ésimo número racional en un primer recorrido transversal del árbol de Calkin-Wilf es el número fusc(n)/fusc(n + 1). Por lo tanto, la secuencia diatómica forma tanto la secuencia de numeradores como la secuencia de denominadores de los números en la secuencia de Calkin-Wilf.
La función fusc(n + 1) es el número de coeficiente binomial impares de la forma (n − r r), 0 ≤ 2r < n, y también cuenta el número de formas de escribir n como una suma de powers of two en la que cada potencia aparece como máximo dos veces. Esto se puede ver en el fusc que define la recurrencia: las expresiones como una suma de potencias de dos para un número par 2n no tienen 1 (en cuyo caso se forman duplicando cada término en una expresión para n) o dos 1 (en cuyo caso el resto de la expresión se forma duplicando cada término en una expresión para n − 1), por lo que el número de representaciones es la suma del número de representaciones para n y para n − 1, coincidiendo con la recurrencia. De manera similar, cada representación de un número impar 2n + 1 se forma duplicando una representación de n y sumando 1, igualando nuevamente la recurrencia. Por ejemplo,
    6 = 4 + 2 = 4 + 1 + 1 = 2 + 2 + 1 + 1
tiene tres representaciones como una suma de potencias de dos con como máximo dos copias de cada potencia, por lo que fusc(6 + 1) = 3.

## Relación con el árbol de Stern-Brocot

El árbol de Calkin-Wilf se parece al árbol de Stern-Brocot en que ambos son árboles binarios y cada número racional positivo aparece exactamente una vez. Además, los niveles superiores de los dos árboles parecen muy similares, y en ambos árboles los mismos números aparecen en los mismos niveles. Se puede obtener un árbol del otro realizando un permutación de inversión de bits en los números en cada nivel de los árboles. Alternativamente, el número en un nodo dado del árbol de Calkin-Wilf se puede convertir en el número en la misma posición en el árbol Stern-Brocot, y viceversa, mediante un proceso que involucra la inversión de las representaciones mediante una fracción continua de estos números.
Sin embargo, en otros aspectos, tienen propiedades diferentes: por ejemplo, el árbol de Stern-Brocot es un árbol binario de búsqueda: el orden de recorrido de izquierda a derecha del árbol es el mismo que el orden numérico de los números que contiene. Esta propiedad no es cierta para el árbol de Calkin-Wilf.