(déjà demandé sur le site principal , mais aussi ici pour une meilleure couverture, désolé)
Depuis que je connaissais les structures de données succinctes, j'ai désespérément besoin d'une bonne vue d'ensemble des développements les plus récents dans ce domaine.
J'ai googlé et lu beaucoup d'articles que je pouvais voir en haut des résultats de Google sur les demandes du haut de ma tête. Je soupçonne encore d'avoir raté quelque chose d'important ici.
Voici des sujets qui m'intéressent particulièrement:
Encodage succinct des arbres binaires avec des opérations efficaces pour obtenir le parent, l'enfant gauche / droit, le nombre d'éléments dans un sous-arbre.
La question principale ici est la suivante: toutes les approches que je connais supposent que les nœuds d'arbre sont énumérés en premier ordre (comme dans le travail de pionnier dans ce domaine Jacobson, G. J (1988). Structures de données statiques succinctes), ce qui ne semble approprié pour ma tâche. Je traite d'énormes arbres binaires donnés dans la disposition en profondeur d'abord et les indices de nœud en profondeur d'abord sont des clés pour d'autres propriétés de nœud, donc changer la disposition de l'arbre a un coût pour moi que j'aimerais minimiser. D'où l'intérêt d'obtenir des références à des travaux en considérant d'autres dispositions d'arborescence que BF.
Grands tableaux d'éléments de longueur variable dans la mémoire externe. Les tableaux sont immuables: je n'ai pas besoin d'ajouter / supprimer / modifier les éléments. La seule exigence est un temps d'accès à l'élément O (1) et un surdébit aussi faible que possible, une approche de décalage et de taille meilleure que simple. Voici quelques statistiques que j'ai recueillies sur les données typiques de ma tâche:
nombre typique d'articles - des centaines de millions, jusqu'à des dizaines de milliards;
environ 30% des éléments ont une longueur ne dépassant pas 1 bit ;
Les éléments de 40% à 60% ont une longueur inférieure à 8 bits;
seuls quelques pourcentages d'articles ont une longueur comprise entre 32 et 255 bits (255 bits est la limite)
longueur moyenne des éléments ~ 4 bits +/- 1 bit.
toute autre distribution de longueurs d'articles est théoriquement possible mais tous les cas pratiquement intéressants ont des statistiques proches de celles décrites ci-dessus.
Liens vers des articles de toute complexité, des didacticiels de toute obscurité, des bibliothèques C / C ++ plus ou moins documentées, - tout ce qui vous a été utile dans des tâches similaires ou ce qui ressemble à cela selon votre supposition éclairée - toutes ces choses sont appréciées.
Mise à jour : j'ai oublié d'ajouter à la question 1: les arbres binaires auxquels je fais face sont immuables. Je n'ai aucune exigence pour les modifier, tout ce dont j'ai besoin est de les traverser de différentes manières, en passant toujours du nœud aux enfants ou au parent, de sorte que le coût moyen de ces opérations était de O (1).
De plus, un arbre typique a des milliards de nœuds et ne doit pas être entièrement stocké dans la RAM.