structure de données pour l'auto-complétion
Quelles sont les bonnes structures de données pour l'auto-complétion des algorithmes? Quelles structures de données permettent de trouver efficacement les chaînes contenant une sous-chaîne particulière?
Vous devez vous connecter pour publier un commentaire.
Si vous cherchez à faire quelque chose de similaire à la façon dont Google implémente c'est la saisie semi-automatique, vous voudrez peut-être consulter un ternaire arbre de recherche:
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
Cependant, si vous souhaitez trouver de tout aléatoire sous-chaîne dans une chaîne de caractères, essayez Généralisé suffixe arbre.
http://en.wikipedia.org/wiki/Generalised_suffix_tree
<forename> <surname>
système, les noms ne sont évidemment pas les préfixes).Découvrez suffixe tableau et le suffixe de l'arbre.
Comme une alternative à Suffixe de Tableaux, d'Arbres et Tente, jetez un oeil à Dirigé Acyclique Mot Graphiques (DAWGs) et le Comprimé variante (CDAWGs). Ils peuvent être construits dans le temps linéaire, de prendre linéaire de l'espace, et de permettre la sous-chaîne de recherche.
Avec une plus compliqué fonction de recherche, vous pouvez même prendre en charge un nombre limité de caractères génériques.
Si l'ensemble de suggestions de saisie semi-automatique est classés à l', un SuggestTree est une bonne structure de données. Pour tout préfixe, il offre un accès rapide vers le haut k suggestions qui commencent par le préfixe.
Si vous êtes en train de faire des préfixes (qui est ce que la plupart des auto-complété faire), puis un ternaire arbre de recherche est aussi ce que je vous recommande. Si vous faites générale suffixes, puis aller avec un suffixe de l'arbre, comme mentionné ci-dessus.
J'ai créé une application pour juste la chose que vous voulez. C'est la plus efficace préfixe classés en fonction de saisie semi-automatique de l'algorithme de autour de.
http://code.google.com/p/lib-face/