Trie

Trie

Un trie es un caso especial de autómata finito determinista (S, Σ, T, s, A), que sirve para almacenar un conjunto de cadenas E en el que:

  • Σ es el alfabeto sobre el que están definidas las cadenas;
  • S, el conjunto de estados, cada uno de los cuales representa un prefijo de E;
  • la función de transición: T : S \times  \Sigma \to \mathcal S; está definida como sigue: T(x,σ) = xσ si x, x\sigma \in S, e indefinida en otro caso;
  • el estado inicial s corresponde a la cadena vacía λ;
  • el conjunto de estados de aceptación A \subseteq S es igual a E.

Su nombre procede del término inglés retrieval.

Contenido

Ventajas

Las ventajas principales de los tries sobre los árboles de búsqueda binaria (BST) son:

  • búsqueda de claves más rápida. La búsqueda de una clave de longitud m tendrá en el peor de los casos un coste de O(m). Un BST tiene un coste de O(logn), siendo n el número de elementos del árbol, ya que la búsqueda depende de la profundidad del árbol, logarítmica con el número de claves.
  • menos espacio requerido para almacenar gran cantidad de cadenas pequeñas, puesto que las claves no se almacenan explícitamente
  • mejor funcionamiento para el algoritmo de búsqueda del prefijo más largo

Aplicaciones

Como sustitución de otras estructuras de datos

Como sustitución de una Tabla hash

Un Trie puede usarse para reemplazar una Tabla hash, sobre la que presenta las siguientes ventajas:

  • el tiempo de búsqueda en una Tabla hash imperfecta es del orden de O(n), mientras que en un trie es del orden de O(l). Esto es debido a las colisiones de claves.
  • en un trie no se producen colisions de claves
  • no hay que definir una función de hash, o modificarla si añadimos más claves
  • los contenedores que almacenan distintos valores asociados a una única clave sólo son necesarios si tenemos más de un valor asociada a una única clave. En una tabla hash siempre se necesitan estos contenedores para las colisiones de clave
  • un trie puede proporcionarnos un ordenamiento alfabético de las entradas por clave

Las principales desventajas de los tries respecto a las tablas hash son:

  • en determinados casos pueden ser más lentos que las tablas hash en la búsqueda de datos, especialmente si los datos son consultados desde dispositivos de almacenamiento secundario, como disco duro, donde el tiempo de acceso es elevado con respecto a memoria principal
  • no es sencillo representar todas las claves como cadenas, como los números reales, que pueden tener distintas representaciones en forma de cadena para un mismo número, p.ej. 1, 1.00, 1.000, +1.000,...
  • a menudo los tries son más ineficientes respecto al espacio que las tablas hash
  • los tries no suelen estar disponibles con las herramientas de desarrollo software, todo lo contrario que las tablas hash

Como representación de diccionarios

Una aplicación frecuente de los tries es el almacenamiento de diccionarios, como los que se encuentran en los teléfonos móviles. Estas aplicaciones se aprovechan de la capacidad de los tries para hacer búsquedas, inserciones y borrados rápidos. Sin embargo, si sólo se necesita el almacenamiento de las palabras (p.ej. no se necesita almacenar información auxiliar de las palabras del diccionario) un autómata finito determinista acíclico mínimo usa menos espacio que un trie.

Los tries también son útiles en la implementación de algoritmos de correspondencia aproximada, como los usados en el software de corrección ortográfica.

Algoritmos

El siguiente pseudocódigo determina si una cadena representa un trie.

function find(node, key) {
  if (key is an empty string) {  # base case
    return is node terminal?
  } else {  # recursive case
    c = first character in key  # this works because key is not empty
    tail = key minus the first character
    child = node.children[c]
    if (child is null) {  # unable to recurse, although key is non-empty
      return false
    } else {
      return find(child, tail)
    }
  }
}

Nota: children es un array con los hijos del nodo; y un nodo terminal es aquél que contiene una palabra válida.


Ordenamiento

El orden lexicográfico de un conjunto de claves se puede realizar con un algoritmo simple basado en tries de la siguiente forma:

  • insertar todas las claves en el trie
  • obtener todas las claves mediante un recorrido en pre-orden, para obtener un ordenamiento lexicográfico en orden ascendente; o mediante un recorrido en post-orden, para obtener un ordenamiento lexicográfico en orden descendente. El recorrido pre-orden y el recorrido post-orden son algoritmos de búsqueda en profundidad en árboles.

Wikimedia foundation. 2010.

Игры ⚽ Нужна курсовая?

Mira otros diccionarios:

  • trie — trie …   Dictionnaire des rimes

  • trié — trié …   Dictionnaire des rimes

  • Trie — Trie, der die Zeichenketten Java, Rad, Rand, Rau, Raum und Rose speichert Ein Trie oder Präfixbaum ist eine Datenstruktur, die in der Informatik zum Suchen nach Zeichenketten verwendet wird. Es handelt sich dabei um einen speziellen Suchbaum zur… …   Deutsch Wikipedia

  • trie — 1. (trie) s. f. Sorte de morue verte. ÉTYMOLOGIE    C est l anc. franç. trie, signifiant triage (voy. tri). SUPPLÉMENT AU DICTIONNAIRE 1. TRIE. Ajoutez : 2°   Action de trier le poisson, pour le vendre. Aucun trieur ni écoreur de service pour la… …   Dictionnaire de la Langue Française d'Émile Littré

  • trié — trié, ée (tri é, ée) part. passé de trier. •   La délicatesse est trop grande de ne pouvoir souffrir que des gens triés, MOL. Critique, I. •   Une partie de ces papiers déjà triés furent mis à part, J. J. ROUSS. Conf. XI. •   Cent quarante quatre …   Dictionnaire de la Langue Française d'Émile Littré

  • trie — [tʀi] n. f. ÉTYM. XVe, « élite, choix »; déverbal de trier. ❖ ♦ Rare. I (1776; « choix », av. 1589). Action de trier. ⇒ Tri. || La trie des poissons …   Encyclopédie Universelle

  • Trie — Trie, s. Trick …   Pierer's Universal-Lexikon

  • trié — Trié, [tri]ée. part …   Dictionnaire de l'Académie française

  • Trie — A trie for keys A , to , tea , ted , ten , i , in , and inn . In computer science, a trie, or prefix tree, is an ordered tree data structure that is used to store an associative array where the keys are usually strings. Unlike a binary search… …   Wikipedia

  • Trie — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sommaire 1 Toponyme 2 Hydronyme 3 Patronym …   Wikipédia en Français

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”