Existe-t-il des implémentations de trie en C / C ++ efficaces en termes de rapidité et de cache efficace? Je sais ce qu'est un essai, mais je ne veux pas réinventer la roue, la mettre en œuvre moi-même.
Réponses
Trop de publicités?Je me rends compte que la question a été sur le point d'implémentations, mais pour la référence...
Avant de sauter sur Judy vous devriez avoir lu "Une Comparaison des Performances de Judy pour les Tables de Hachage". Puis googler le titre devrait vous donner une durée de vie de discussion et rebutals à lire.
Explicitement cache-conscient trie que je connaisse est le HAT-trie.
Ce sont les deux (dans mon esprit) des structures de données complexes. La complexité est mauvais. Si je ont été, après un trie aujourd'hui, j'aimerais recherchez un burst-trie.
Tableaux Judy : Tableaux dynamiques clairsemés ordonnés très rapides et efficaces en termes de mémoire pour les bits, les entiers et les chaînes. Les tableaux Judy sont plus rapides et utilisent plus efficacement la mémoire que n’importe quel arbre de recherche binaire (y compris les arbres avl et red-black-trees).
Références,
- Un article sur l' implémentation Double-Array Trie (inclut une implémentation
C
) - TRASH - Structure dynamique de données de tri-hachage et de hachage - (référence PDF 2006 décrivant une tri-trie dynamique utilisée dans le noyau Linux pour implémenter la recherche d'adresses dans la table de routage IP