d’adressage est bien “al´eatoire”, les listes associ´ees `a chaque adresse seront de
longueurs ´equivalentes.
1.2.3
Quel est l’int´erˆet d’utiliser ce genre de structure ?
Tout d’abord, utiliser des structures index´ees par des chaˆınes de caract`eres
se r´ev`ele utile dans de nombreuses situations (g´erer un carnet d’adresse par
exemple), mais surtout, permet de diviser par le nombre d’adresses diff´erentes
le coˆut de la recherche d’une chaˆıne particuli`ere par rapport au coˆut que l’on
aurait si l’on avait utilis´e une unique liste pour stocker les dites chaˆınes.
2 Algorithme de Rabin-Karp
L’algorithme de Rabin-Karp pour la recherche d’un motif de longueur m dans
une chaˆıne de caract`eres c1revient `a consid´erer une fonction d’adressage et de
v´erifier, pour chaque paquet de m lettres de c1si l’adresse correspond `a celle du
motif.
On consid´erera ici que nombre associ´e `a chaque caract`ere est sa position
dans l’alphabet, cod´e en base d. Dans la partie pr´ec´edente, d´etait ´egal `a 32.
De mˆeme on consid`ere que la fonction d’adressage est la fonction modulo
appliqu´ee `a un grand nombre premier q.
2.1
On consid`ere que l’on a une fonction φrendant pour chaque caract`ere
sa position dans l’alphabet. Quelle est le code du mot de longueur m
pr´esent `a la position i de la chaˆıne c1?
En utilisant l’´ecriture sous forme de polynˆome vue dans la partie pr´ec´edente,
ce mot s’´ecrit :
x=φ(c1[i])dm−1+φ(c1[i+ 1])dm−2+. . . +φ(c1[i+m−1])d0
2.2
En connaissant le code du mot de longueur m pr´esent `a la position i
de la chaˆıne c1, quelle est le code du mot de longueur m pr´esent `a la
position i+1 de la chaˆıne c1?
(x−φ(c1[i])dm−1)d+φ(c1[i+m])
2.3
En connaissant l’adresse du mot de longueur m pr´esent `a la position
i (c’est `a dire l’adresse du code du mot) de la chaˆıne c1, quelle est
4