hachage linéaire

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

Upload: karyn-bowman

Post on 14-Mar-2016

63 views

Category:

Documents


1 download

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

TRANSCRIPT

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

Niveau 3

Niveau 1

Niveau 2

Niveau 0

N

2N

4N

8N

.

.

.

Hachage Linéaire

Implémentation

.

.

.

Taille :MTable

Correspondance:

Indice dans Table = m Div M

Déplacement dans le maillon = m Mod M

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