prueba


En informática , un trie , también llamado árbol digital o árbol de prefijos , es un tipo de árbol de búsqueda , una estructura de datos de árbol utilizada para localizar claves específicas dentro de un conjunto. Estas claves suelen ser cadenas , con enlaces entre nodos definidos no por la clave completa, sino por caracteres individuales . Para acceder a una clave (para recuperar su valor, cambiarla o eliminarla), el trie se recorre primero en profundidad , siguiendo los enlaces entre nodos, que representan cada carácter de la clave.

A diferencia de un árbol de búsqueda binario , los nodos del trie no almacenan su clave asociada. En cambio, la posición de un nodo en el trie define la clave con la que está asociado. Esto distribuye el valor de cada clave en la estructura de datos y significa que no todos los nodos necesariamente tienen un valor asociado.

Todos los hijos de un nodo tienen un prefijo común de la cadena asociada con ese nodo principal, y la raíz está asociada con la cadena vacía . Esta tarea de almacenar datos accesibles por su prefijo se puede lograr de una manera optimizada para memoria empleando un árbol radix .

Aunque los intentos pueden codificarse mediante cadenas de caracteres, no es necesario que lo sean. Los mismos algoritmos se pueden adaptar para listas ordenadas de cualquier tipo subyacente, por ejemplo, permutaciones de dígitos o formas. En particular, un trie bit a bit se codifica en los bits individuales que forman una pieza de datos binarios de longitud fija, como un número entero o una dirección de memoria .

La idea de un trie para representar un conjunto de cadenas fue descrita abstractamente por primera vez por Axel Thue en 1912. [1] [2] Los tries fueron descritos por primera vez en un contexto informático por René de la Briandais en 1959. [3] [4] [ 2] La idea fue descrita de forma independiente en 1960 por Edward Fredkin , [5] quien acuñó el término trie , pronunciándolo / ˈ t r / (como "árbol"), después de la sílaba media de recuperación . [6] [7] Sin embargo, otros autores lo pronuncian / ˈ t r / (como "intentar"), en un intento de distinguirlo verbalmente de "árbol". [6] [7] [2]

Las aplicaciones comunes de los intentos incluyen almacenar un texto predictivo o un diccionario de autocompletar e implementar algoritmos de coincidencia aproximados, [8] como los que se usan en el software de revisión ortográfica y separación de sílabas [7] . Estas aplicaciones aprovechan la capacidad de un trie para buscar, insertar y eliminar entradas rápidamente. Sin embargo, si todo lo que se requiere es almacenar palabras del diccionario (es decir, no es necesario almacenar metadatos asociados con cada palabra), un autómata de estado finito acíclico determinista mínimo (DAFSA) o un árbol radixusaría menos espacio de almacenamiento que un trie. Esto se debe a que los árboles DAFSA y radix pueden comprimir ramas idénticas del trie que corresponden a los mismos sufijos (o partes) de diferentes palabras almacenadas.


Representación de un trie. Un solo círculo vacío, que representa el nodo raíz, apunta a tres hijos. La flecha hacia cada niño está marcada con una letra diferente. Los propios hijos tienen un conjunto similar de flechas y nodos hijos, con nodos que corresponden a palabras completas con valores enteros azules.
Un trie para las teclas "A", "to", "tea", "ted", "ten", "i", "in" y "inn". Cada palabra completa en inglés tiene un valor entero arbitrario asociado.
Un trie implementado como un árbol binario hijo izquierdo hijo derecho : las flechas verticales son punteros secundarios , las flechas horizontales discontinuas son punteros siguientes . El conjunto de cadenas almacenadas en este trie es {bebé, malo, banco, caja, papá, baile }. Las listas están ordenadas para permitir el recorrido en orden lexicográfico.