L'une de mes structures de données préférées à l'université était le Trie. C'est une excellente structure de données pour conserver un grand nombre de chaînes si les préfixes sont partagés. Les recherches sont également intéressantes, puisqu'elles sont faites à O (| longueur |) de la chaîne indépendamment du nombre de chaînes présentes dans l'ensemble. En comparaison, un arbre équilibré serait O (log N) dans le nombre d'éléments définis, plus tout ce que vous payez pour les comparaisons. Une table de hachage impliquerait le calcul de hachage, la comparaison, etc.Les essais sont-ils toujours une bonne idée sur les architectures modernes?
Il est donc surprenant pour moi que there is no Trie implementation in the standard library of most languages. La seule raison pour laquelle je suis arrivé à la conclusion était la possibilité que les coûts d'accès à la mémoire le rendent trop cher. Plutôt que d'enquêter sur les emplacements O (log N) si vous effectuez une recherche arborescente, vous ne faites pas O (| longueur |) emplacements différents, avec toutes les conséquences. Si les cordes sont longues, cela pourrait être trop lourd.
Donc je me demande: combien est ce que je viens de décrire une préoccupation? Que faites-vous lorsque vous avez besoin de stocker un grand ensemble ou une carte de chaînes?
"dans la bibliothèque standard de la plupart des fonctions." Voulez-vous dire "dans la bibliothèque standard de la plupart des langages?" –
Si vous allez poster des questions connexes (http://stackoverflow.com/questions/623892/where-do-i-find-a-standard-trie-based-map-implementation-in-java) vous devriez reliez-les ensemble. –
J'allais à, et ensuite mettre le lien Wikipedia pour Trie à la place ... Quoi qu'il en soit, maintenant vous mettez le lien, alors nous sommes bons. – Uri