Pour le traitement du langage, comme dans les mots du dictionnaire, qui serait plus rapide à en lisant, un arbre de base, ou un b-tree normal? Y at-il une méthode plus rapide, comme un dictionnaire avec des seaux & hachage?Quel est le plus rapide: un "arbre racine" ou un "b-tree"
Répondre
Comme toujours, vous aurez besoin de référencer dans votre contexte d'application pour être sûr.
Cependant, je m'attends à ce que dans ce cas, une table de hachage bien implémentée s'avère probablement la plus rapide. Cela nécessite essentiellement:
- Une analyse par la chaîne pour calculer la valeur de hachage, généralement en utilisant des opérations très rapides telles que décalage de bits/XORs
- Une table de hachage consultation basée sur la valeur de hachage
- une comparaison de chaîne pour confirmer que vous avez le bon mot
- un peu de traitement supplémentaire dans le cas où il y a une collision de hachage - mais vous pouvez régler votre taille de Hashtable pour minimiser ce
a radix l'arbre sera également très rapide, il y a juste un peu de surcharge supplémentaire en raison de la nécessité de traverser plusieurs niveaux de nœuds d'arbres. Si votre arbre est relativement clairsemé, il est probable que les recherches n'auront qu'à descendre un petit nombre de niveaux pour trouver une réponse unique. Un des avantages de l'arborescence radix est qu'elle vous dira très tôt si vous n'avez pas de correspondance possible (par exemple une branche vide pour l'arbre commençant par "qq")
Un arbre binaire sera probablement le plus lent car il sera activé En moyenne, il faut chercher à travers quelques niveaux de nœuds d'arbres. Cependant, il sera encore assez rapide pour la plupart des objectifs.
Je pense que dans le but de ce que je veux, et sur la base de ce que vous avez dit , un arbre radix va gagner. Il a l'avantage supplémentaire de savoir automatiquement quelle est la racine d'un mot. – IamIC
Etes-vous sûr que vous avez absolument besoin des meilleures performances dans ce cas? Quelle est la taille de l'ensemble de données? En outre, le facteur décisif sera probablement la qualité de la mise en œuvre. Je suggère d'utiliser une implémentation mature d'une table de hachage pour la tâche. –
L'ensemble de données sera un peu moins de 200k entrées. Il sera fortement lu et légèrement écrit. – IamIC
Possible copie de [Trie vs B + arbre] (http://stackoverflow.com/questions/2688639/trie-vs-b-tree) –