Arbre d'ondelettes

De testwiki
Aller à la navigation Aller à la recherche
Un arbre d'ondelettes pour la chaîne abracadabra. À chaque nœud, les symboles de la chaîne sont projetés sur une partition de l'alphabet en deux parties, et le vecteur de bits désigne la partie à laquelle appartiennent les symboles. Seuls les vecteurs de bits sont conservés, les chaînes indiquées dans les nœuds ne servent qu'à faciliter la présentation.

Un arbre d'ondelettes (en anglais wavelet tree) est une structure de données qui contient des données compressées dans une représentation presque optimale, appelée succincte[1]. Cette structure étend les opérations de parcours et de sélection[2] définies sur les Modèle:Lien compressés à des alphabets quelconques.

Introduits à l'origine pour représenter des tableaux des suffixes compressés[3], les arbres d'ondelettes ont trouvé des applications dans des contextes variés[4]Modèle:,[5]. L'arbre d'ondelettes est défini en partitionnant récursivement l'alphabet en deux sous-ensembles; les feuilles correspondent aux symboles de l'alphabet, et à chaque nœud est associé un vecteur de bits compressé qui mémorise le sous-ensemble auquel appartiennent les symboles.

Le nom dérive de l'analogie avec la transformée en ondelettes des signaux qui décompose récursivement un signal en composantes de fréquences basses et hautes.

Exemple

Dans l'exemple reproduit ci-dessus, l'alphabet de départ est partagé en deux sous-alphabets {a, b} et {c, d, r}. Le premier vecteur, à la racine, remplace les symboles du mot abracadabra par 0 ou 1, selon que le symbole est dans le premier sous-alphabet ({a, b}) ou dans le second ({c, d, r}). Au niveau suivant, on ne conserve plus que les symboles sélectionnés. La séquence de gauche est également partagée en deux, selon que la lettre est un a ou un b. Pour la séquence de droite, deux étapes sont nécessaires pour arriver à des alphabets formés d'un seul symbole. Pour trouver le deuxième a dans la chaîne initiale, on cherche d'abord le deuxième 0 dans le code 0100010 qui se trouve en troisième position, puis le troisième 0 dans le code 00101010010. C'est la quatrième lettre de cette chaîne, donc la quatrième du mot abracadabra.

Propriétés

Soit Σ un alphabet fini à k symboles. En utilisant un Modèle:Lien dans chaque nœud de l'arbre, une chaîne sΣ* de longueur n peut être représentée en place nH0(s)+o(nlogk), où H0(s) est l'entropie de Shannon d'ordre 0 de s.

Pour un tableau B de bits de taille n donné, les trois opérations considérées sont les suivantes :

  • 𝖺𝖼𝖼𝖾𝗌𝗌(x) qui retourne l'élément qui est en position x dans la chaîne s de départ.
  • 𝗋𝖺𝗇𝗄q(x) qui retourne le nombre d'éléments égaux à q parmi les x premiers éléments du tableau, formellement 𝗋𝖺𝗇𝗄q(x)=Card{y[0x]:B[y]=q}.
  • 𝗌𝖾𝗅𝖾𝖼𝗍q(x) qui retourne la plus x-ième position dans le tableau qui contient un q, formellement 𝗌𝖾𝗅𝖾𝖼𝗍q(x)=min{y[0n):𝗋𝖺𝗇𝗄q(y)=x}.

Si l'arbre est équilibré, les trois opérations 𝖺𝖼𝖼𝖾𝗌𝗌, 𝗋𝖺𝗇𝗄q, et 𝗌𝖾𝗅𝖾𝖼𝗍q peuvent être réalisées en temps O(logk).

Extensions

Plusieurs extensions de la structure de base ont été présentées dans la littérature. Pour réduire la hauteur de l'arbre, on peut utiliser des arbres dont les nœuds ont une arité supérieure aux nœuds binaires[4]. La structure de données peut être rendue dynamique, ce qui permet des insertions et suppressions à des positions arbitraires de la chaîne ; ceci permet l'implémentation du FM-index[6] dynamique[7]. On peut encore généraliser ceci et autoriser de modifier l'alphabet de base : un wavelet trie[8] exploite une structure de trie sur l’alphabet des chaînes pour permettre des modifications dynamiques.

Notes et références

Modèle:Références Modèle:Traduction/Référence

Liens externes

Modèle:Portail

  1. Une telle structure de données est appelée en anglais Modèle:Lien, soit structure de données succincte. Elle doit permettre les opérations de recherche et aussi d'insertion/suppression sur les données compressées sans avoir à les décompresser auparavant, et elle s'approche de l'optimum théorique donné par la théorie de l’information.
  2. Opérations notées 𝗋𝖺𝗇𝗄q et 𝗌𝖾𝗅𝖾𝖼𝗍q.
  3. Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées GGV03
  4. 4,0 et 4,1 Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées FGM09
  5. Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées Navarro12
  6. Le FM-index, nommé ainsi d'après leur inventeurs Ferragina et Manzini, est une structure qui permet de se passer du texte.
  7. Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées CHLK07
  8. Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées GO12