• Aucun résultat trouvé

Hachage Linéaire

N/A
N/A
Protected

Academic year: 2022

Partager "Hachage Linéaire"

Copied!
12
0
0

Texte intégral

(1)

P R Z E G O U R D J A M E L E D D I N E

E C O L E S U P É R I E U R E D ’ I N F O R M AT I Q U E ( E S I )

H T T P : / / Z E G O U R . E S I . D Z

E M A I L : D _ Z E G O U R @ E S I . D Z

Hachage Linéaire

(2)

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)

(3)

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 :

(4)

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

(5)

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

(6)

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

(7)

Hachage Linéaire

Une nouvelle case est rajoutée

P  P +1 (prochaine case à éclater )

0 1 2 m1 2iN-1

P

2iN Cas d’éclatement

(8)

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 + 1 Si P = 2iN

P  0 i i + 1

Indice de la dernière case rajoutée = 2iN + P Principe d’éclatement

(9)

Hachage Linéaire

Rechercher la donnée dans la case m Recherche d’une donnée d

m  hi(d) Si m < P

m  hi+1(d) Fsi

Si d n’est pas dans m et m Pleine:

rechercher dans la liste des débordements

(10)

Hachage Linéaire

Implémentation

Niveau 3 Niveau 1

Niveau 2 Niveau 0

N

2N

4N

8N

. . .

(11)

Hachage Linéaire

Implémentation

. . .

Taille :M Table

Correspondance:

Indice dans Table = m Div M Déplacement dans le maillon

= m Mod M

(12)

Hachage Linéaire

De l’ordre d’une comparaison pour recherche une donnée quelque soit la taille de la table

Performances

Données dynamiques Pas d’ordre

Références

Documents relatifs

[r]

Probl`eme : grappe faible (secondary clustering) — suite de cases occup´ees par cl´es avec la mˆeme valeur de hachage.. N’est pas certain que l’on trouve une case vide lors

suppression avec adressage ouvert : tr`es difficile utiliser lazy deletion : marquer la case «supprim´ee».. ⇒ facteur de remplissage inclut les

Dans cette perspective, nous examinerons ici les monoides, dont toute partie est sous-monoide,.. c’est-à-dire dont le treillis T (M) est le treillis de Boole 2

desquelles on peut intégrer, avec une approximation plus ou moins parfaite , entre deux limites données quelconques , toute fonction.. difforentieiie d’une seule

On pourra se servir des matrices élémentaires E i,j (tout coefficient est nul sauf le coefficient situé en i-ième ligne et j-ième colonne qui vaut 1).. Montrer que si E et F sont

L’évolution économique influe également sur le marketing, notamment en cas de ralentissement ou de saturation des marchés, les entreprises se centrent plus sur leurs clients, ainsi

Dans un système scolaire qui continuerait à être soumis à des normes de rentabilité, de compétition, de hiérarchie, peut-être faudrait-il conserver des classes