4
4. TEMPS DE CALCULS
Le temps de calculs de l’algorithme Lexical(t) d´
epend de la taille du fichier
Nmais aussi du nombre de mots µdistincts, `
a la louche le temps de calculs est
O(N+µ2). Fixons, Mun entier positif. Les m´
ecanismes de hachage permettent
de diviser par Mle temps de calculs de notre algorithme. Donnons une fonction
Tiroir(mot) qui associe au mot mot de A∗un entier de l’intervalle [0, M [et
modifions notre algorithme :
LEXICAL-HACHAGE ( texte )
texte : FICHIER
table : TABLEAU[m] de LISTE.
mot : CHAINE
i : ENTIER
lst : LISTE
DEBUT
POUR i DANS [0, m[
INITIALISER( table[i] )
TANTQUE ( NON FINFICHIER( texte) )
mot = LEXEME( texte )
lst = table[ TIROIR( mot )
ENTETE( lst )
TANTQUE NON FINLISTE( lst ) ET ( MOT(lst) <> mot)
SUCCESSEUR(lst)
SI FINLISTE(lst) ALORS POSTINSERTION(mot, lst)
SINON MISE-A-JOUR(lst)
FIN
LEXICAL-HACHAGE(texte) est est Mfois plus performant que LEXICAL(texte)
d`
es que la fonction TIROIR(mot) r´
epartit ´
equitablement les mots de A∗, une telle
fonction est une fonction de hachage.
5. FONCTION DE HACHAGE
Comment construire des fonctions de hachage? Remarquons que les mots de
A∗peuvent ˆ
etre convertis en des nombres ce qui r´
eduit la recherche des fonctions
de hachages aux cas des entiers. Fixons Met Ndeux entiers naturels, une fonction
de hachage d’un ensemble Xde cardinal ndans l’intervalle [0, M [doit satisfaire
`
a une contrainte d’´
equir´
epartition :
∀x∈X, ∀i∈[0, M [,|Probh(x) = i−1
M| ≤ .(1)
Les fonctions de hachages sont rares.
Exercice 2. Paradoxe des anniversaires. La promotion 1999-2000 de maˆ
ıtrise d’in-
formatique est compos´
ee de 25 ´
etudiants. Seriez-vous pr`
es `
a parier 120 Euros
qu’au moins deux ´
etudiants de cette promotion sont n´
es le mˆ
eme jour?
Essayons de nous convaincre de la raret´
e des fonctions de hachages. Supposons
que Mdivise Net essayons d’´
evaluer le nombre de fonctions de hachage avec
= 0. Une telle fonction d´
efinit une partition de Xen Mparties de M´
el´
ements.
Inversement, `
a une telle partition nous pouvons associer M!fonctions mais une
seule d’entre elles est une fonction de hachage...