Adloun

informatique (MP2I/MPI) · Chapitre 18 · Application directe du cours

La table du mauvais caractère

Algorithmique des textes · niveau 2

Énoncé

Construire la table derniere pour les motifs exemple, texte et abcab. Pour chacun, dire de combien on saute si l'échec a lieu à la dernière position du motif sur la lettre z, puis sur la lettre e.

Corrigé

La table donne, pour chaque lettre, sa dernière position dans le motif (indices à partir de ), ou si elle n'y figure pas.


exemple : e->6  l->5  m->3  p->4  x->1   (toute autre lettre -> -1)
texte   : e->4  t->3  x->2               (toute autre lettre -> -1)
abcab   : a->3  b->4  c->2               (toute autre lettre -> -1)

Noter que derniere retient la dernière occurrence, et pas la première : dans abcab, la lettre a apparaît en et en , on garde .

Les sauts, pour un échec en :

Motiféchec sur zéchec sur e
exemple7
texte5
abcab5

Sur une lettre absente du motif, le saut vaut tout entier : c'est le gain que le chapitre annonce, et c'est la raison pour laquelle Boyer-Moore lit moins de caractères qu'il n'y en a.

Sur la lettre e avec le motif exemple, en revanche, le saut calculé vaut — l'échec porte sur une lettre qui est déjà, dans le motif, à la position où l'on a échoué. La garde le remonte à . Ce cas n'est pas exotique : il se produit dès que la lettre fautive est la dernière du motif, ce qui arrive tout le temps sur un alphabet réduit.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre