En informática y teoría de la probabilidad , un árbol binario aleatorio es un árbol binario seleccionado al azar a partir de alguna distribución de probabilidad en árboles binarios. Se han utilizado diferentes distribuciones, lo que ha dado lugar a diferentes propiedades para estos árboles.
Los árboles binarios aleatorios se han utilizado para analizar la complejidad del caso promedio de las estructuras de datos basadas en árboles binarios de búsqueda . Para esta aplicación, es común utilizar árboles aleatorios formados mediante la inserción de nodos de a uno por vez de acuerdo con una permutación aleatoria . [1] Es muy probable que los árboles resultantes tengan una profundidad logarítmica y un número de Strahler logarítmico . El treap y los árboles binarios de búsqueda balanceados relacionados utilizan operaciones de actualización que mantienen esta estructura aleatoria incluso cuando la secuencia de actualización no es aleatoria.
Otras distribuciones en árboles binarios aleatorios incluyen la distribución discreta uniforme en la que todos los árboles distintos son igualmente probables, distribuciones en un número dado de nodos obtenidos por división repetida, intentos binarios y árboles de base para datos aleatorios, y árboles de tamaño variable generados por procesos de ramificación .
Para árboles aleatorios que no son necesariamente binarios, consulte árbol aleatorio .
Un árbol binario es un árbol con raíz en el que cada nodo puede tener hasta dos hijos (los nodos directamente debajo de él en el árbol), y esos hijos se designan como izquierdos o derechos. A veces es conveniente considerar en cambio árboles binarios extendidos en los que cada nodo es un nodo externo con cero hijos, o un nodo interno con exactamente dos hijos. Un árbol binario que no está en forma extendida se puede convertir en un árbol binario extendido tratando todos sus nodos como internos y agregando un nodo externo por cada hijo faltante de un nodo interno. En la otra dirección, un árbol binario extendido con al menos un nodo interno se puede convertir nuevamente en un árbol binario no extendido eliminando todos sus nodos externos. De esta manera, estas dos formas son casi completamente equivalentes para los fines del análisis matemático, excepto que la forma extendida permite un árbol que consiste en un solo nodo externo, que no corresponde a nada en la forma no extendida. Para los fines de las estructuras de datos de computadora, las dos formas difieren, ya que los nodos externos de la primera forma se pueden representar explícitamente como objetos en una estructura de datos. [2]
En un árbol binario de búsqueda, los nodos internos se etiquetan con números u otros valores ordenados, llamados claves , dispuestos de modo que un recorrido inordenado del árbol enumere las claves en orden ordenado. Los nodos externos permanecen sin etiquetar. [3] Los árboles binarios también pueden estudiarse con todos los nodos sin etiquetar, o con etiquetas que no se dan en orden ordenado. Por ejemplo, la estructura de datos del árbol cartesiano utiliza árboles binarios etiquetados que no son necesariamente árboles binarios de búsqueda. [4]
Un árbol binario aleatorio es un árbol aleatorio extraído a partir de una determinada distribución de probabilidad en árboles binarios. En muchos casos, estas distribuciones de probabilidad se definen utilizando un conjunto dado de claves y describen las probabilidades de que los árboles binarios de búsqueda tengan esas claves. Sin embargo, son posibles otras distribuciones que no necesariamente generen árboles binarios de búsqueda ni proporcionen necesariamente un número fijo de nodos. [5]
Para cualquier secuencia de claves ordenadas distintas, se puede formar un árbol binario de búsqueda en el que cada clave se inserta en secuencia como una hoja del árbol, sin cambiar la estructura de las claves insertadas previamente. La posición de cada inserción se puede encontrar mediante una búsqueda binaria en el árbol anterior. El modelo de permutación aleatoria, para un conjunto dado de claves, se define eligiendo la secuencia aleatoriamente de las permutaciones del conjunto, teniendo cada permutación la misma probabilidad. [6]
Por ejemplo, si se insertan las tres claves 1,3,2 en un árbol binario de búsqueda en esa secuencia, el número 1 se ubicará en la raíz del árbol, el número 3 se colocará como su hijo derecho y el número 2 como el hijo izquierdo del número 3. Hay seis permutaciones diferentes de las claves 1,2 y 3, pero solo se pueden construir cinco árboles a partir de ellas. Esto se debe a que las permutaciones 2,1,3 y 2,3,1 forman el mismo árbol. Por lo tanto, este árbol tiene probabilidad de ser generado, mientras que los otros cuatro árboles tienen cada uno probabilidad . [5]
Para cualquier clave en un conjunto dado de claves, el valor esperado de la longitud de la ruta desde la raíz hasta en un árbol binario de búsqueda aleatorio es como máximo , donde " " denota la función de logaritmo natural y la introduce la notación O mayúscula . Por linealidad de la expectativa , el número esperado de ancestros de es igual a la suma, sobre otras claves , de la probabilidad de que sea un ancestro de . Una clave es un ancestro de exactamente cuándo es la primera clave que se inserta desde el intervalo . Debido a que cada clave en el intervalo tiene la misma probabilidad de ser la primera, esto sucede con una probabilidad inversa a la longitud del intervalo. Por lo tanto, las claves que son adyacentes a en la secuencia ordenada de claves tienen probabilidad de ser un ancestro de , las claves un paso más allá tienen probabilidad , etc. La suma de estas probabilidades forma dos copias de la serie armónica que se extienden desde en ambas direcciones en la secuencia ordenada, dando el límite anterior. Este límite también se cumple para la longitud de la ruta de búsqueda esperada para un valor que es una de las claves dadas. [7]
La ruta más larga de raíz a hoja, en un árbol binario de búsqueda aleatorio, es más larga que la longitud de ruta esperada, pero solo por un factor constante. Su longitud, para un árbol con nodos, es con alta probabilidad aproximadamente
¿Dónde está el número único en el rango que satisface la ecuación?
En el modelo de permutación aleatoria, cada clave, excepto la más pequeña y la más grande, tiene probabilidad de ser una hoja en el árbol. Esto se debe a que es una hoja cuando se inserta después de sus dos vecinas, lo que sucede para dos de las seis permutaciones de ella y sus dos vecinas, todas las cuales son igualmente probables. Por un razonamiento similar, la clave más pequeña y la más grande tienen probabilidad de ser una hoja. Por lo tanto, el número esperado de hojas es la suma de estas probabilidades, que para es exactamente . [9]
El número de Strahler de los vértices de cualquier árbol es una medida de la complejidad de los subárboles bajo esos vértices. Una hoja (nodo externo) tiene el número de Strahler uno. Para cualquier otro nodo, el número de Strahler se define recursivamente a partir de los números de Strahler de sus hijos. En un árbol binario, si dos hijos tienen diferentes números de Strahler, el número de Strahler de su padre es el mayor de los dos números de hijos. Pero si dos hijos tienen números de Strahler iguales, su padre tiene un número que es mayor en uno. El número de Strahler de todo el árbol es el número en el nodo raíz. Para árboles binarios de búsqueda aleatoria de nodos, las simulaciones sugieren que el número de Strahler esperado es . Se ha demostrado un límite superior más débil . [10]
En las aplicaciones de estructuras de datos de árboles binarios de búsqueda, es raro que las claves se inserten sin eliminarlas en un orden aleatorio, lo que limita las aplicaciones directas de árboles binarios aleatorios. Sin embargo, los diseñadores de algoritmos han ideado estructuras de datos que permiten inserciones y eliminaciones arbitrarias para preservar la propiedad de que la forma del árbol es aleatoria, como si las claves se hubieran insertado aleatoriamente. [11]
Si a un conjunto dado de claves se le asignan prioridades numéricas (no relacionadas con sus valores), estas prioridades pueden usarse para construir un árbol cartesiano para los números, el árbol binario de búsqueda que resultaría de insertar las claves en orden de prioridad. Al elegir las prioridades como números reales aleatorios independientes en el intervalo unitario, y al mantener la estructura del árbol cartesiano utilizando rotaciones de árbol después de cualquier inserción o eliminación de un nodo, es posible mantener una estructura de datos que se comporta como un árbol binario de búsqueda aleatorio. Una estructura de datos de este tipo se conoce como treap o árbol binario de búsqueda aleatorio. [11]
Las variantes del treap, que incluyen el árbol zip y el árbol zip-zip, reemplazan las rotaciones de árboles mediante operaciones de "compresión" que dividen y fusionan los árboles y que limitan la cantidad de bits aleatorios que se deben generar y almacenar junto con las claves. El resultado de estas optimizaciones sigue siendo un árbol con una estructura aleatoria, pero que no coincide exactamente con el modelo de permutación aleatoria. [12]
El número de árboles binarios con nodos es un número catalán . [13] Para estos números de árboles son
Por lo tanto, si uno de estos árboles se selecciona de manera uniforme al azar, su probabilidad es el recíproco de un número catalán. Los árboles generados a partir de un modelo en esta distribución a veces se denominan árboles catalanes binarios aleatorios . [14] Tienen una profundidad esperada proporcional a la raíz cuadrada de , en lugar de al logaritmo. [15] Más precisamente, la profundidad esperada de un nodo elegido aleatoriamente en un árbol de nodos de este tipo es
El número de Strahler esperado de un árbol binario de nodos uniformemente aleatorio es , menor que el número de Strahler esperado de árboles binarios de búsqueda aleatorios. [17]
Debido a sus grandes alturas, este modelo de árboles aleatorios equiprobables no se suele utilizar para árboles binarios de búsqueda. Sin embargo, tiene otras aplicaciones, entre ellas:
Un algoritmo de Jean-Luc Rémy genera un árbol binario uniformemente aleatorio de un tamaño especificado en el tiempo lineal en el tamaño, mediante el siguiente proceso. Comienza con un árbol que consiste en un solo nodo externo. Luego, mientras el árbol actual no haya alcanzado el tamaño objetivo, elige repetidamente uno de sus nodos (interno o externo) de manera uniforme y aleatoria. Reemplaza el nodo elegido por un nuevo nodo interno, teniendo el nodo elegido como uno de sus hijos (igualmente probable izquierdo o derecho), y teniendo un nuevo nodo externo como su otro hijo. Detente cuando se alcanza el tamaño objetivo. [22]
El proceso de Galton-Watson describe una familia de distribuciones en árboles en los que el número de hijos en cada nodo se elige aleatoriamente, independientemente de los demás nodos. Para los árboles binarios, se utilizan dos versiones del proceso de Galton-Watson, que difieren únicamente en si se permite un árbol binario extendido con un solo nodo, un nodo raíz externo:
Los árboles generados de esta manera se han denominado árboles binarios de Galton-Watson . En el caso especial en que se denominan árboles binarios de Galton-Watson críticos . [23]
La probabilidad marca una transición de fase para el proceso binario de Galton-Watson: para el árbol resultante es casi con certeza finito, mientras que para es infinito con probabilidad positiva. Más precisamente, para cualquier , la probabilidad de que el árbol permanezca finito es
Otra forma de generar los mismos árboles es hacer una secuencia de lanzamientos de moneda , con probabilidad de cara y probabilidad de cruz, hasta el primer lanzamiento en el que el número de cruces exceda el número de caras (para el modelo en el que se permite una raíz externa) o exceda uno más el número de caras (cuando la raíz debe ser interna), y luego usar esta secuencia de lanzamientos de moneda para determinar las elecciones hechas por el proceso de generación recursiva, en orden de profundidad. [25]
Como el número de nodos internos es igual al número de caras en esta secuencia de lanzamiento de moneda, todos los árboles con un número dado de nodos se generan a partir de secuencias de lanzamiento de moneda (únicas) de la misma longitud, y son igualmente probables, independientemente de . Es decir, la elección de afecta la variación en el tamaño de los árboles generados por este proceso, pero para un tamaño dado los árboles se generan de manera uniforme al azar. [26] Para valores de por debajo de la probabilidad crítica , valores más pequeños de producirán árboles con un tamaño esperado más pequeño , mientras que valores más grandes de producirán árboles con un tamaño esperado más grande. En la probabilidad crítica no hay un límite finito en el tamaño esperado de los árboles generados por este proceso. Más precisamente, para cualquier , el número esperado de nodos en la profundidad del árbol es , y el tamaño esperado del árbol se puede obtener sumando los números esperados de nodos en cada profundidad. Para esto se obtiene una serie geométrica
para el tamaño de árbol esperado, pero para esto da 1 + 1 + 1 + 1 + ⋯ , una serie divergente . [27]
Para , cualquier árbol particular con nodos internos se genera con probabilidad , y la probabilidad de que un árbol aleatorio tenga este tamaño es esta probabilidad multiplicada por un número de Catalan,
Los procesos de Galton-Watson se desarrollaron originalmente para estudiar la propagación y extinción de los apellidos humanos , y se han aplicado ampliamente de manera más general a la dinámica de las poblaciones humanas o animales. Estos procesos se han generalizado a modelos donde la probabilidad de ser un nodo interno o externo en un nivel dado del árbol (una generación , en la aplicación de dinámica de poblaciones) no es fija, sino que depende del número de nodos en el nivel anterior. [29] Una versión de este proceso, con la probabilidad crítica , se ha estudiado como un modelo para la especiación , donde se conoce como el proceso de ramificación crítica . En este proceso, cada especie tiene una vida útil distribuida exponencialmente y, a lo largo de su vida, produce especies hijas a una tasa igual a la vida útil. Cuando se produce un hijo, el padre continúa como la rama izquierda del árbol evolutivo y el hijo se convierte en la rama derecha. [30]
Otra aplicación de los árboles críticos de Galton-Watson (en la versión donde la raíz debe ser interna) surge en el algoritmo de Karger-Stein para encontrar cortes mínimos en grafos, utilizando un proceso recursivo de contracción de aristas . Este algoritmo se llama a sí mismo dos veces recursivamente, y cada llamada tiene una probabilidad de al menos preservar el valor de solución correcto. El árbol aleatorio modela el subárbol de llamadas recursivas correctas. El algoritmo tiene éxito en un grafo de vértices siempre que este árbol aleatorio de llamadas recursivas correctas tenga una rama de profundidad al menos , alcanzando el caso base de su recursión. La probabilidad de éxito es , lo que produce uno de los factores logarítmicos en el tiempo de ejecución del algoritmo. [31]
Devroye y Robson consideran un proceso aleatorio de tiempo continuo relacionado en el que cada nodo externo es eventualmente reemplazado por un nodo interno con dos hijos externos, en un tiempo distribuido exponencialmente después de su primera aparición como nodo externo. El número de nodos externos en el árbol, en cualquier momento, se modela mediante un proceso de nacimiento simple o proceso de Yule en el que los miembros de una población dan a luz a una tasa constante: dar a luz a un hijo, en el proceso de Yule, corresponde a ser reemplazado por dos hijos, en el modelo de Devroye y Robson. Si este proceso se detiene en cualquier momento fijo, el resultado es un árbol binario de un tamaño aleatorio (dependiendo del tiempo de detención), distribuido de acuerdo con el modelo de permutación aleatoria para ese tamaño. Devroye y Robson utilizan este modelo como parte de un algoritmo para generar rápidamente árboles en el modelo de permutación aleatoria, descritos por sus números de nodos en cada profundidad en lugar de por su estructura exacta. [32] Una variante discreta de este proceso comienza con un árbol que consta de un solo nodo externo y reemplaza repetidamente un nodo externo elegido aleatoriamente por un nodo interno con dos hijos externos. Nuevamente, si esto se detiene en un momento fijo (con un tamaño fijo), el árbol resultante se distribuye de acuerdo con el modelo de permutación aleatoria para ese tamaño. [1]
Otra forma de árbol binario, el trie binario o árbol de búsqueda digital, tiene una colección de números binarios que etiquetan algunos de sus nodos externos. Los nodos internos del árbol representan prefijos de sus representaciones binarias que son compartidas por dos o más de los números. Los hijos izquierdo y derecho de un nodo interno se obtienen extendiendo el prefijo correspondiente por un bit más, un cero o un uno respectivamente. Si esta extensión no coincide con ninguno de los números dados, o coincide solo con uno de ellos, el resultado es un nodo externo; de lo contrario, es otro nodo interno. Los tries binarios aleatorios se han estudiado, por ejemplo, para conjuntos de números reales aleatorios generados independientemente en el intervalo unitario . A pesar del hecho de que estos árboles pueden tener algunos nodos externos vacíos, tienden a estar mejor equilibrados que los árboles binarios de búsqueda aleatorios. Para números reales uniformemente aleatorios en el intervalo unitario, o más generalmente para cualquier distribución de probabilidad integrable al cuadrado en el intervalo unitario, la profundidad promedio de un nodo es asintóticamente , y la altura promedio de todo el árbol es asintóticamente . El análisis de estos árboles se puede aplicar a la complejidad computacional de los algoritmos de ordenamiento basados en trie . [33]
Una variante del trie, el árbol de base o trie comprimido, elimina los nodos externos vacíos y sus nodos internos padre. Los nodos internos restantes corresponden a prefijos para los cuales ambas extensiones posibles, por un bit cero o uno, son utilizadas por al menos uno de los números elegidos aleatoriamente. Para un árbol de base para números binarios distribuidos uniformemente, el camino más corto a raíz de hoja tiene longitud y el más largo a raíz de hoja tiene longitud, ambos con alta probabilidad . [34]
Luc Devroye y Paul Kruszewski describen un proceso recursivo para construir árboles binarios aleatorios con nodos. Genera una variable aleatoria de valor real en el intervalo unitario , asigna los primeros nodos (redondeados hacia abajo a un número entero de nodos) al subárbol izquierdo, el siguiente nodo a la raíz y los nodos restantes al subárbol derecho. Luego, continúa recursivamente utilizando el mismo proceso en los subárboles izquierdo y derecho. Si se elige uniformemente al azar en el intervalo, el resultado es el mismo que el árbol binario de búsqueda aleatorio generado por una permutación aleatoria de los nodos, ya que cualquier nodo tiene la misma probabilidad de ser elegido como raíz. Sin embargo, esta formulación permite utilizar otras distribuciones en su lugar. Por ejemplo, en el modelo de árbol binario uniformemente aleatorio, una vez que se fija una raíz, cada uno de sus dos subárboles también debe ser uniformemente aleatorio, por lo que el modelo uniformemente aleatorio también puede generarse mediante una elección diferente de distribución (dependiendo de ) para . Como muestran, al elegir una distribución beta y utilizar una elección apropiada de forma para dibujar cada una de las ramas, los árboles matemáticos generados por este proceso se pueden utilizar para crear árboles botánicos de aspecto realista. [35]
{{citation}}
: CS1 maint: DOI inactive as of November 2024 (link)