Adloun

Rabin-Karp à la main, et une collision

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 18 — Algorithmique des textes

Énoncé

Avec la base et le module , chercher dans . Donner les empreintes de toutes les fenêtres, les occurrences, et les fausses alertes.

Corrigé

. Les fenêtres et leurs empreintes, calculées par la formule de glissement :


i= 0  23590  h= 8      i= 8  41526  h= 4
i= 1  35902  h= 9      i= 9  15267  h= 5
i= 2  59023  h= 3      i=10  52673  h=10
i= 3  90231  h=11      i=11  26739  h=11
i= 4  02314  h= 0      i=12  67399  h= 7  <-- COLLISION
i= 5  23141  h= 1      i=13  73992  h= 9
i= 6  31415  h= 7  <-- OCCURRENCE   i=14  39921  h=11
i= 7  14152  h= 8

Une occurrence (en ) et une fausse alerte (en ) : également, et pourtant .

Ce que la fausse alerte coûte. Elle déclenche une vérification caractère par caractère, . Avec , on attend une collision toutes les fenêtres environ : sur fenêtres, en avoir une est conforme. Le coût total devient , ce qui n'est que si est grand devant — d'où le du chapitre.

Le glissement, vérifié à la main de à . On retranche la contribution de la lettre sortante, on décale, on ajoute l'entrante :

Or , donc , et . C'est bien la valeur mesurée.

Le point à ne jamais oublier, et le chapitre le met en capitales : l'égalité d'empreintes n'est qu'un filtre. C'est un test qui n'a pas de faux négatif — deux mots égaux ont forcément la même empreinte — mais qui a des faux positifs. Le chapitre chap:probabilistes nommera ce schéma ; le chapitre chap:hachage en donne la cause.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.