12
PR ZEGOUR DJAMEL EDDINE ECOLE SUPÉRIEURE D’INFORMATIQUE (ESI) HTTP://ZEGOUR.ESI.DZ EMAIL: [email protected] Hachage Linéaire

Hachage Linéaire

  • Upload
    kolya

  • View
    41

  • Download
    0

Embed Size (px)

DESCRIPTION

Hachage Linéaire. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz email: [email protected]. Hachage Linéaire. Introduction. Hachage classique limité aux données statiques  domaines d’utilisation restreints. - PowerPoint PPT Presentation

Citation preview

Page 1: Hachage Linéaire

PR ZEGOUR DJAMEL EDDINEECOLE SUPÉRIEURE D’ INFORMATIQUE

(ESI)

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

EMAIL: D _ Z E G O U R @ E S I . D Z

Hachage Linéaire

Page 2: 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)

Page 3: Hachage Linéaire

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 :

Page 4: Hachage Linéaire

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

Page 5: Hachage Linéaire

Hachage Linéaire

0 1 2 N-1

P

Paramètres du fichier : Niveau (i) et P (Prochaine case à éclater)

Au départ:

i=0 (Niveau ) P=0 ( Prochaine case à éclater)

Situation initiale

Page 6: Hachage Linéaire

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

Page 7: Hachage Linéaire

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

Page 8: Hachage Linéaire

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

Indice de la prochaine case à rajouter = 2iN + P + 1

Principe d’éclatement

Page 9: Hachage Linéaire

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

Page 10: Hachage Linéaire

Hachage Linéaire

Implémentation

Niveau 3

Niveau 1

Niveau 2

Niveau 0

N

2N

4N

8N

.

.

.

Page 11: Hachage Linéaire

Hachage Linéaire

Implémentation

.

.

.

Taille :MTable

Correspondance:

Indice dans Table = m Div M

Déplacement dans le maillon = m Mod M

Page 12: Hachage Linéaire

Hachage Linéaire

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

Performances

Données dynamiques

Pas d’ordre