PR ZEGOUR DJAMEL EDDINEECOLE SUPÉRIEURE D’ INFORMATIQUE
(ESI)
H T T P : / / Z E G O U R . E S I . D ZEMAIL : D _ Z E G O U R @ E S I . D Z
Hachage Linéaire
Hachage Linéaire
Introduction
Hachage classique limité aux données statiques domaines d’utilisation
restreints.
La plupart des applications utilisent les données dynamiques maintenir
Un bon accès aux données ( insertions et suppressions fréquentes)
Hachage Linéaire
Du hachage classique au hachage dynamique
Le hachage classique (au sens de KNUTH) suppose que la fonction de
Hachage est statique. Toute recherche de données est basée sur la même fonction dont le nombre d'adresses possibles est constant.
Toute collision conduit à la création d'un débordement dégradation des
performances d'accès.
- Une insertion ou une suppression peut commencer par une fonction de hachage et terminer par une autre.
- En plus, l'espace des adresses possibles n'est plus limité.
Pour le hachage dynamique :
Hachage Linéaire
Utilise une famille de fonctions de hachage : h0, h1, h2, …
hi(d) = d mod 2iN
Propriété importante hi+1(d) = hi(d) hi+1(d) = hi(d) + 2iN
Au départ : une table de N cases.
1 case = b données + 1 pointeur vers une liste de données
Présentation
Hachage Linéaire
0 1 2 N-1
P
Paramètres : Niveau (i) et P (Prochaine case à éclater)
Au départ:
i=0 (Niveau ) P=0 ( Prochaine case à éclater)
Situation initiale
Hachage Linéaire
0 1 2 2iN-1
P
Collision sur une case m
La donnée est rangée en débordement selon chaînage séparé : une liste linéaire chaînée de données
Eclatement de la case P (avec les données en débordement) avec la fonction hi+1
m
Cas d’éclatement
Hachage Linéaire
Une nouvelle case est rajoutée
P P +1 (prochaine case à éclater )
0 1 2 2iN-1m1
P
2iN
Cas d’éclatement
Hachage Linéaire
A chaque collision sur une case m :
Si m<> P : ranger la donnée en débordement (case m) FsiÉclater la case P
P P + 1Si P = 2iN
P 0i i + 1
Indice de la dernière case rajoutée = 2iN + P
Principe d’éclatement
Hachage Linéaire
Rechercher la donnée dans la case m
Recherche d’une donnée d
m hi(d)
Si m < Pm
hi+1(d)Fsi
Si d n’est pas dans m et m Pleine: rechercher dans la liste des débordements
Hachage Linéaire
Implémentation
.
.
.
Taille :MTable
Correspondance:
Indice dans Table = m Div M
Déplacement dans le maillon = m Mod M
Top Related