Apprentissage pour la Recherche d’Information textuelle et
multimédia :
Construction d’Arbres de Suffixes
Cédric HERPSON
31 mars 2008
Table des matières
Introduction 1
1 Notions élémentaires 1
1.1 Arbredesuxes ...................................... 1
1.2 MémoiresetCaches .................................... 2
1.2.1 Principe général de la pagination à la demande . . . . . . . . . . . . . . . . . 2
1.2.2 Principegénéraldumécanismedecache..................... 2
2 Principaux algorithmes existants 3
2.1 Structurestockéeenmémoirevive:Ukkonen ...................... 3
2.2 Structure stockée sur le disque dur : Hunt . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Top-Down Disk-Based technique 5
3.1 PartitionandWriteOnlyTopDown ........................... 5
3.1.1 Partition ...................................... 5
3.1.2 Constructiondelarbredessuxes........................ 6
3.2 Politiquedegestiondelamémoire ............................ 7
3.3 Comparatifsdesrésultatsobtenus ............................ 8
Conclusion 9
Bibliographie 10
Introduction
Travailler sur de grandes chaines de caractères et traiter celles-ci afin d’en extraire les motifs
récurrents par correspondance exacte ou approchée est un travail aujourd’hui courant pour les cher-
cheurs en Sciences de la Vie ou en fouille de données. Si l’on ne considère que la base de données
GenBank1, la taille et le nombre des séquences qui y sont stockées doubles tous les 16 mois. Cette
augmentation nécessite par conséquent le développement de méthodes à même de répondre rapide-
ment à de nombreuses requêtes sur des séquences toujours plus grandes, éventuellement distantes.
Les arbres de suffixes sont une structure de données à même d’offrir une réponse rapide à des re-
quetes s’apparentant à la recherche de patrons au sein d’une chaine de caractères. Ainsi, la recherche
d’une correspondance exacte entre une chaine de caractères fournie en entrée et les sous-chaine d’une
chaine de données peut être résolue en un temps proportionnel à la longeur de la chaine d’entrée.
Cependant, le temps nécessaire à la construction d’un arbre de suffixes limitait jusqu’à présent
l’utilisation de cette structure, les meilleurs algorithmes nécessitant 1h30 pour construire l’arbre de
suffixes associé à 1 chromosome du génome humain.
Si les premières chaines sur lesquelles les recherches ont porté pouvaient être intégralement stockées
dans la mémoire vive des ordinateurs, les volumes de données actuels ne le permettent plus. Les
traitements effectués nécessitent aujourd’hui le stockage d’une partie des informations sur le disque
dur, mémoire lente, synonyme d’une chute des performances, que les algorithmes développés jusqu’à
présent ne permettaient pas de compenser.
Nous rappellerons dans une première partie la définition d’un arbre de suffixes ainsi que les
grands principes liés à la gestion et au coût des accès mémoire sur une architecture moderne. Nous
introduirons dans une seconde partie les algorithmes de Ukkonen et Hunt, les plus efficaces dans
leurs domaines respectifs, avant de présenter l’algorithme TDD et les avantages de cette dernière
approche.
1Gérée par le Centre National pour l’Information Biotechnologique américain dans le cadre d’une collaboration
internationale (INSDC)
Chapitre 1
Notions élémentaires
1.1 Arbre de suffixes
Un arbre de suffixes est une structure de données qui permet de représenter exactement tous les
suffixes d’un texte.
L’interêt de cette structure est qu’elle permet d’effectuer une recherche de motif dans une chaine
de caractères dans un temps qui dépend uniquement de la longueur du motif et non du texte dans
lequel s’éffectue la recherche.Celle-ci se réalise en effet par la lecture du motif recherché et par le
parcours simultané de l’arbre avec les lettres lues.
Cette structure permet d’effectuer :
La recherche d’un motif exact
La recherche d’un motif approché (x erreurs autorisées)
La recherche de répétitions
La recherche de séquences cycliques
La recherche du plus long facteur commun entre 2 chaines de données
Fig. 1.1 – Exemple d’arbre de suffixes : Ananas
Lors de la recherche d’un motif exact, plusieurs cas peuvent survenir :
1. On ne peut pas descendre dans l’arbre par la lettre lue, il n’y a pas d’occurrence du motif
recherché dans le texte.
2. Une fois le motif lu, on se retrouve sur une feuille. Il n’y a donc qu’une occurence du motif
dans la chaine, la position de celle-ci peut être obtenue par le numéro de la feuille.
3. Une fois le motif lu, on se retrouve sur un noeud non terminal. Dans ce cas, le nombre de
feuilles présentes dans le sous arbre du noeud courant correspond au nombre d’occurences du
motif dans le texte.
1
1.2 Mémoires et Caches
Sur les architectures modernes, le système gère de manière transparente différents types de mé-
moire dont la taille et les temps de réponse varient de manière significative. Afin de bien comprendre
les limites des algorithmes existants et les avantages de l’approche proposée par Sandeep Tata &
Al, il nous a semblé nécessaire d’effectuer un rapide rappel sur la pagination à la demande et le
fonctionnement des caches.
1.2.1 Principe général de la pagination à la demande
Une application n’a, à un instant donné, besoin que d’un sous ensemble de ses informations. Plutôt
que de charger l’intégralité du programme et de ses données en mémoire, va-et-vient global couteux
en temps et en espace, le systeme découpe les programmes en morceaux de taille fixe (les pages) et
ne charge dans la mémoire physique que celles qui sont référencées à l’instant courant. Le système
éffectue donc un va-et-vient au niveau des pages en fonction des besoins.
D’autre part, les temps d’accès à la mémoire vive et au disque dur étant trop importants au regard
des cycles processeur, l’utilisation de différents niveaux de cache entre celui-ci et la mémoire vive s’est
généralisée. Ces caches, d’une taille équivalente à quelques pages (plusieurs dizaines de kilo-octets)
ayant en effet des temps de réponse beaucoup plus proches de la cadence des processeurs.
1.2.2 Principe général du mécanisme de cache
Soient deux niveaux contigus de la hiérarchie mémoire : mémoire rapide et mémoire lente. Ces
deux niveaux sont respectivement joués par le cache et la mémoire vive et/ou par la mémoire vive
et le disque dur.
Accès en lecture : L’ adressage se fait sur la mémoire lente, mais les accès sont toujours réalisés
sur la mémoire rapide. Lors des accès, si l’information voulue n’est pas présente dans la mémoire
rapide il y a défaut de cache. Il faut alors la transferer de la mémoire lente vers la mémoire rapide
(chargement).
Accès en écriture : L’écriture s’effectue dans la mémoire rapide, on recopie ensuite l’information
en mémoire lente, éventuellement de maniere différée. Il y a un défaut de cache quand la mémoire
rapide est pleine, il faut alors enlever préalablement à toute écriture une partie de l’information
présente en mémoire rapide en essayant de maintenir les informations les plus "utiles" (politique de
remplacement).
Afin de minimiser le nombre de défauts de page et donc le nombre d’accès en lecture/écriture à
la mémoire lente, les politiques de chargement et de remplacement des pages tiennent compte de
deux principes fondamentaux, la localité spatiale et la localité temporelle.
Localitéspatiale: Si un élément xest référencé à un instant t, les emplacements voisins ont de
fortes probabilités d’être référencés dans un futur proche.
accès(x, t) probabilité forte d’accés (x+d, t +)
Localité temporelle : Un élément xréférencé à un instant donné a une forte probabilité d’être
à nouveau référencé dans un futur proche.
accès(x, t) probabilité forte d’accés (x, t +)
Dans le cas d’une politique LRU (Least Recently Used), on utilise ainsi la propriété de localité
temporelle, la page victime est celle dont la dernière référence est la plus ancienne.
Le rapport entre le nombre d’accès provoquant un défaut et le nombre total d’accès est une manière
courante de mesurer l’efficacité du cache et la bonne exploitation de celui-ci par les programmes.
2
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !