Un trie es una estructura de datos de recuperación de información en forma de árbol cuyos Nodes almacenan las letras de un alfabeto. También se conoce como árbol digital o árbol radix o árbol de prefijos. Los intentos se clasifican en tres categorías:
Trie estándar Un trie estándar tiene las siguientes propiedades:
- Un Trie estándar tiene la siguiente estructura:
class Node { // Array to store the nodes of a tree Node[] children = new Node[26]; // To check for end of string boolean isWordEnd; }
- Es una estructura de datos similar a un árbol ordenado .
- Cada Node (excepto el Node raíz ) en un trie estándar está etiquetado con un carácter.
- Los hijos de un Node están en orden alfabético.
- Cada Node o rama representa un posible carácter de claves o palabras.
- Cada Node o rama puede tener múltiples ramas.
- El último Node de cada clave o palabra se utiliza para marcar el final de la palabra o Node.
A continuación se muestra la ilustración del Standard Trie:
Trie comprimido Un trie comprimido tiene las siguientes propiedades:
- Un Trie Comprimido tiene la siguiente estructura:
class Node { // Array to store the nodes of tree Node[] children = new Node[26]; // To store the edgeLabel StringBuilder[] edgeLabel = new StringBuilder[26]; // To check for end of string boolean isEnd; }
- Un Compressed Trie es una versión avanzada del trie estándar.
- Cada Node (excepto los Nodes hoja ) tiene al menos 2 hijos.
- Se utiliza para lograr la optimización del espacio.
- Para derivar un Trie comprimido a partir de un Trie estándar, se realiza la compresión de strings de Nodes redundantes.
- Consiste en agrupar, reagrupar y desagrupar claves de caracteres.
- Mientras realiza la operación de inserción, puede ser necesario desagrupar los caracteres ya agrupados.
- Mientras realiza la operación de borrado, puede ser necesario reagrupar los caracteres ya agrupados.
- Un trie T comprimido que almacena s strings ( claves ) tiene s Nodes externos y O (s) número total de Nodes.
A continuación se muestra la ilustración del Trie comprimido:
Sufijo Trie Un sufijo trie tiene las siguientes propiedades:
- Un Trie Comprimido tiene la siguiente estructura:
struct SuffixTreeNode { // Array to store the nodes struct SuffixTreeNode *children[256]; //pointer to other node via suffix link struct SuffixTreeNode *suffixLink; // (start, end) interval specifies the edge, // by which the node is connected to its // parent node int start; int *end; // For leaf nodes, it stores the index of // Suffix for the path from root to leaf int suffixIndex; }
- Un Suffix Trie es una versión avanzada del trie comprimido.
- La aplicación más común del sufijo trie es la coincidencia de patrones .
- Mientras se realiza la operación de inserción, se almacenan tanto la palabra como sus sufijos.
- Un sufijo trie también se usa en la coincidencia de palabras y la coincidencia de prefijos.
- Para generar un sufijo trie, todos los sufijos de una string determinada se consideran palabras individuales.
- Usando los sufijos, se construye trie comprimido.
A continuación se muestra la ilustración del sufijo Trie:
Publicación traducida automáticamente
Artículo escrito por verma_anushka y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA