Você está na página 1de 4

Table de hachage

Concepts : Recherche dlments, test dgalit


Mthodes : Adressage direct, Fonction de hachage
Adressage ferm
On considre le problme de hachage ferm dans une table de taille M. La fonction de hachage est
note h et le nombre de cls hacher est N. Dans ce TD on considre un hachage ferm. cest dire
que la rsolution de collision se fait par chanage externe la table.
0
1
2
.
.
.
.
.
.
M 1
On suppose que la fonction de hachage h est uniforme. Ceci se modlise en associant chaque cl
x de lespace des cls une variable alatoire U
x
de loi uniforme valeurs dans {0, , M 1}. On
suppose que ces variables alatoires sont indpendantes entre elles. Pour notre problme, on notera les
N variables alatoires {U
1
, U
2
, , U
N
}.
Ltat de remplissage de la table est modlis par un vecteur de dimension M : X = [X
0
, , X
M1
],
o X
i
reprsente le nombre de cls haches sur la case i.
Question 1 : Calcul des X
i
Exprimer les X
i
en fonction des U
i
. Pour i donn calculer la loi de X
i
.
Question 2 : Recherche infructueuse
Calculer le cot moyen dune recherche dune cl qui nest pas dans la table. On notera
=
N
M
le taux de remplissage de la table.
Question 3 : Recherche dun lment de la table
Calculer le cot moyen dune recherche dune cl que lon sait dans la table.
Question 4 : Insertion et suppression dun lment de la table
Calculer le cot moyen dune insertion dune nouvelle cl dans la table. Calculer le cot
moyen dune suppression dune cl de la table.
Question 5 : Taux de cases vides
Hachage
Calculer la probabilit quune case soit vide, donner un quivalent en fonction de pour N
et M grands. En dduire le nombre moyen de cases vides dans la table.
Question 6 : Approximation
On pourra vrier ( la maison) que pour n pas trop grand et M et N grands
P(X
i
= n) e

k
k!
.
Approximation par une loi de Poisson.
En utilisant lingalit
e

1 +

1!
+

2
2!
+ +

k
k!
+

k+1
(k + 1)!
e

,
montrer que
P(X
i
> k)

k+1
(k + 1)!
En dduire que
P(X
i
> b) (
e
b
)
b
.
On pourra utiliser la formule de Stirling n!

2n

n
e

n
.
Comment interprter cette quantit ? Pourquoi peut-on parler de bon comportement de
la recherche en table ?
Calculer pour diffrentes valeurs de b et de cette probabilit.
Panini
Votre petit cousin collectionne les vignettes autocollantes des footballeurs clbres. Il achte au mar-
chand de journaux des pochettes de 10 vignettes un prix de 2 euros. Lalbum de la collection complte
contient M = 300 places pour les vignettes autocollantes (prix dachat de lalbum 4 euros). Il souhaite
savoir combien de pochettes il devra acheter pour avoir toute la collection. Saurez-vous lui rpondre ?
On simplie le modle en supposant que lon achte les vignettes une par une et on note T le nombre
total de vignettes achetes pour avoir toute la collection. A la n, il restera plein de doubles ! On sup-
posera galement que lditeur des vignettes est honnte et quil imprime les vignettes dans les mmes
proportions (il ny a pas de vignettes plus rares que dautres).
Lorsque la collection comporte dj i 1 vignettes, on note Y
i
le nombre de vignettes acheter pour
avoir une vignette qui nest pas dans la collection.
Question 1 :
Donner, en la justiant, la loi de Y
i
. Les variables Y
i
sont-elles indpendantes.
Question 2 :
Exprimer T en fonction des Y
i
. En dduire ET et V arT. Commenter votre rsultat et
rpondre votre petit cousin.
Question 3 :
Quel est le rapport entre les panini et les tables de hachage ?
Algorithmique version du 10 novembre 2011 2/ 4
Hachage
Algorithme de Karp-Rabin
On veut rechercher un motif M de longueur m dans un texte T de longueur n. Les textes sont
exprims dans un alphabet de K lettres. Le texte et le motif seront donns dans deux tableaux, ces
tableaux seront indics partir de 1.
Question 1 : Test dgalit de mots
crire un algorithme qui teste lgalit de deux mots. Calculer le cot de votre algorithme
en nombre de comparaisons de caractres.
An de rechercher plus efcacement un motif, on dispose dune fonction de hachage H sur les mots. Si
A est un tableau de lettres h(A, i, j) reprsente la valeur de hachage du sous-mot du tableau A dni de
lindice i j inclus. On suppose que la fonction h prend des valeurs entires avec 0 h(A, i, j) H1.
SOUS-CHAINE(T,M)
Donnes : T texte dans lequel le motif M est recherch
Rsultat : crit la liste des indices o dmarrent le motif M dans le texte T
n = taille(T)
m = taille(M)
hmotif = h(M[1..m])
hcourant = h(T[1..m])
for i = 1 n m+ 1
if (hcourant=hmotif)
// Commentaire 1 :.....................................
if (galit(T[i, i +m 1], M)
// Commentaire 2 :.....................................
crire i
hcourant = h(T[i + 1..i +m])
// Commentaire 3 :.....................................
Question 2 : Commentaires
crire les commentaires 1, 2 et 3 et calculer le cot maximal de cet algorithme en nombre
de comparaisons de caractres.
Question 3 : Proprits de h
Quelles sont les proprits que h doit vrier pour que cet algorithme soit efcace en
moyenne ? Calculer dans ce cas le cot moyen de cet algorithme.
On suppose que chaque caractre est cod par un entier et que la fonction h scrit pour un mot A =
(a
1
, , a
m
)
h(A[1..m]) = (a
1
+a
2
+ +a
m
) modulo p,
avec p un entier donn.
Question 4 : h additive
Expliquer le rle de lentier p. Comment calculer h(T[i..i +m 1]) en fonction de
h(T[i 1..i + m 2]), en dduire que la ligne 13 de lalgorithme ne ncessite que deux
consultations du tableau T.
Algorithmique version du 10 novembre 2011 3/ 4
Hachage
On se donne lalphabet {A, B, C, D} avec le codage standard {0, 1, 2, 3}. Soit
T = ABCADBBACABAC, M = CAB.
Question 5 : Exemple
Drouler lalgorithme pour p = 9 et valuer le nombre de comparaisons de caractres
effectues. Quel inconvnient voyez-vous cette fonction h?
On considre maintenant une nouvelle fonction h
1
construite sur le mot A par
h
1
(A[1..m]) = (a
1
.d
m1
+a
2
.d
m2
+ +a
m1
.d
1
+a
m
.d
0
) modulo p,
avec d un entier donn (base).
Question 6 : h polynomiale
Expliquer le rle de lentier d. Comment calculer h(T[i..i +m 1]) en fonction de
h(T[i 1..i +m 2]), en dduire que la ligne de mise jour de hcourant de lalgorithme
ne ncessite que deux consultations du tableau T.
Question 7 : Exemple
Drouler lalgorithme sur le mme exemple ci-dessus pour p = 9 et d = 4. valuer le
nombre de comparaisons de caractres effectues. Commenter votre rsultat.
Algorithmique version du 10 novembre 2011 4/ 4

Você também pode gostar