Arbre de suffixe

Dans le de l'informatique, un arbre de suffixe de (également appelé l'arbre PAT ou, dans une forme, un arbre plus tôt de position de ) est une structure de données qui présente les suffixes d'une corde donnée d'une manière dont tient compte d'une exécution particulièrement rapide de beaucoup d'opérations importantes de corde.

L'arbre de suffixe pour une corde S est un arbre dont les bords sont marqués avec des cordes, et tel que chaque suffixe de S correspond à exactement un chemin de la racine de l'arbre à une feuille. C'est ainsi un arbre de base de pour les suffixes de S.

La construction d'un tel arbre pour la corde S prend du temps et l'espace linéaires dans la longueur de S. Une fois que construites, plusieurs opérations peuvent être effectuées rapidement, par exemple localiser une sous-chaîne dans S, localisant une sous-chaîne si on permet un certain nombre d'erreurs, localisant des allumettes pour des arbres d'un suffixe du modèle etc. de l'expression régulière a également fourni une des premières solutions de linéaire-temps pour le plus long problème commun de sous-chaîne de . Ces speedups viennent à un coût : le stockage de l'arbre du suffixe d'une corde exige typiquement significantly more espace que stockant la corde elle-même.

Histoire

Le concept a été présenté la première fois comme arbre de position de par Weiner en 1973 dans un papier que le Donald Knuth a plus tard caractérisé comme " ; Algorithme de l'année 1973" ;. La construction a été considérablement simplifiée par McCreight en 1976 , et également par Ukkonen en 1995. Ukkonen a fourni la première en ligne-construction de linéaire-temps des arbres de suffixe, maintenant connue sous le nom d'algorithme d'Ukkonen de .

Définition

L'arbre de suffixe pour la corde S de la longueur n est défini comme arbre tels que (page 90) :
les chemins de la racine aux feuilles ont un rapport linéaire avec les suffixes de S,
les bords orthographient les chaînes non vides,
et tous les noeuds internes (excepté peut-être la racine) ont au moins deux enfants.

Puisqu'un tel arbre n'existe pas pour toutes les cordes, S est capitonné avec un symbole terminal non vu dans la corde ($ habituellement dénoté). Ceci s'assure qu'aucun suffixe n'est un préfixe des autres, et qu'il y aura des noeuds de feuille de n, un pour chacun des suffixes de n de S. Puisque tous les noeuds non-root internes s'embranchent, il peut y avoir tout au plus des noeuds de n-1 de tels noeuds, et de n+ (n-1) +1=2n au total.

Les liens de suffixe de sont un dispositif principal pour la construction de linéaire-temps de l'arbre. Dans un arbre complet de suffixe, tous les noeuds non-root internes ont un lien de suffixe à un autre noeud interne. Si le chemin de la racine à un noeud orthographie le de corde \ chi \ alpha, où le \ chi est un caractère simple et le \ alpha est une corde (probablement vide), il a un lien de suffixe au noeud interne représentant le \ alpha. Voir par exemple le lien de suffixe du noeud pour ANA au noeud pour NA dans la figure ci-dessus. Des liens de suffixe sont également employés dans quelques algorithmes fonctionnant sur l'arbre.

Fonctionnalité

Un arbre de suffixe pour une corde S de la longueur n peut être construit dans le \ thêta (temps de n), si l'alphabet est constant ou nombre entier. Autrement, le temps de construction dépend de l'exécution. Les coûts ci-dessous sont indiqués dans la prétention que l'alphabet est constant. S'il n'est pas, le coût dépend de l'exécution (voir ci-dessous).

Supposer qu'un arbre de suffixe a été construit pour la corde S de la longueur n, ou qu'un arbre de suffixe généralisé par a été construit pour l'ensemble de D= de cordes \ {S_1, S_2,…, S_K \} de de n= de longueur totale|n_1|+|n_2|+… +|n_K|. Vous pouvez :
Recherche de

s cordes :
Vérifier si une corde P de la longueur m est une sous-chaîne dans le O (temps de m) ().
Trouver pour chaque suffixe d'un modèle P, de la longueur de la plus longue correspondance entre un préfixe de P et d'une sous-chaîne dans D dans le \ thêta (le temps de m) (.

Random links:Surjeet Kalsey | Mack Gordon | Walter H. Moeller | Richard P. Stanley | Musée de Lightner | Árbol_del_sufijo