Chapitre 6 hachage statique
date post
24-Jul-2015Category
Education
view
104download
0
Embed Size (px)
Transcript of Chapitre 6 hachage statique
CHAPITRE VI:
HACHAGE STATIQUE
Universit Saad Dahlab de Blida
Facult des Sciences
Dpartement dInformatique
Licence dInformatique
Semestre 4 (2me anne)
Algorithmique et Structures de Donnes
Mme AROUSSI
2014-2015
Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/
Introduction
Principe du hachage
Terminologie
Fonctions de Hachage
Mthodes de rsolution de collisions
Estimation des dbordements
Conclusion
2
PLAN DU CHAPITRE V
3
Problmatique: Supposons que l'on veuille ranger
des donnes (enregistrements) qui arrivent dans un
ordre quelconque dans un tableau.
Solutions Possibles: Il existe, en gnral, deux faons
de les ranger :
1. Si le tableau est non ordonn alors
Recherche est squentielle O(n) Lent
Insertion se fait la fin du tableau O(1) Rapide
INTRODUCTION
4
Solutions Possibles: Il existe, en gnral, deux faons
de les ranger :
1. Si le tableau est non ordonn alors
Recherche est squentielle O(n) Lent
Insertion se fait la fin du tableau O(1) Rapide
2. Si le tableau est ordonn alors
Recherche est dichotomique O(Log2(n)) Rapide
Insertion provoque un dcalage des lments du tableau O(n)
Lent
INTRODUCTION
5
Une troisime possibilit de ranger une donne dans un
tableau :
Ranger la donne x un emplacement y calcul par une
fonction h tel que y = h(x)
On parle ici de table de rangement dispers ou technique de
HACHAGE ( en anglais "Hashing" ).
Dans ce type de rangement, que ce soit pour insrer ou
rechercher une donne, on procdera toujours aussi rapidement (
O(c) )
INTRODUCTION
6
PRINCIPE
x2
x4
x8
x6
x5
x1
x3
x7
x3 x8
x5
x2
x1 x7
x4
x6
0
1
2
3
4
5
6
..
N-1
..
..
Table de
Hachage TH
h(x)
Donnes stocker
Rangement par
calcul d'adresse
La fonction h doit
retourner des valeurs
comprises entre 0 et N-1
Le calcul d'adresse permet de stocker des
donnes (x) dans une table (TH) de
taille N, en utilisant une fonction (h)
x5 ?
7
La fonction h est appel fonction de hachage.
Ladresse primaire (h(x)) dune donne x est le rsultat
retourn par la fonction de hachage h
Les synonymes sont les donnes qui ont la mme adresse
primaire, i.e. x1 et x2 sont des synonymes ssi h(x1) = h(x2). On
dit aussi que x1 et x2 sont en collisions.
On parle de dbordement lorsquil y a une donne qui nest
pas dans son adresse primaire. On dit aussi qu'elle est range
dans une adresse secondaire.
Ladresse secondaire est dtermin par une mthode donne,
on parle de mthode de rsolution de collisions
TERMINOLOGIE
8
PRINCIPE
x2
x4
x8
x6
x1
x3
x7
x3 x8
x5
x2
x1 x7
x4
x6
0
1
2
3
4
5
6
..
N-1
..
..
Table de
Hachage T
h(x)
Donnes stocker
Rangement par
calcul d'adresse
Pour utiliser une technique de hachage, on doit
donc dfinir:
1. une fonction de hachage h
2. une mthode de rsolution des collisions
x5 ?
9
Il sagit de trouver une fonction h tels que 0 h(x) < N qui
rduit au maximum le nombre de collisions.
L'idal, c'est d'avoir une fonction de hachage bijective c'est dire
une fonction qui attribue pour chaque donne insrer un
nouvel emplacement dans le tableau.
Le pire des cas, c'est lorsque toute donne est hache en une
mme adresse.
Une solution acceptable est une solution o certaines donnes
partagent la mme adresse (h est surjective).
FONCTIONS DE HACHAGE
10
Il existe plusieurs fonctions de hachage, les plus utilises:
1. La fonction de division
2. La fonction dite du milieu du carr middle square
3. La fonction dite du transformation radix
FONCTIONS DE HACHAGE
11
1. La fonction de division: h(x) = x MOD N
Elle retourne le reste de la division par N o N est la taille de la
table
Cest une fonction facile et rapide calculer mais sa qualit
dpend de la valeur de N.
Il est dmontr que :
c'est trs mauvais de choisir N une puissance de 2.
N premier constitue gnralement un bon choix.
FONCTIONS DE HACHAGE
12
1. La fonction de division: h(x) = x MOD N
Exemple: calculer la fonction de hachage des donnes
suivantes:
FONCTIONS DE HACHAGE
X N = 10 N = 11
5 5 5
55 5 collision 0
23 3 1
453 3 collision 2
Pas de collisions dans le cas o N=11 car N est un
nombre premier
13
2. La fonction du milieu du carr middle square
On lve la donne x au carr x2 et on prend les chiffres du milieu
Cette mthode donne de bons rsultats si le nombre au carr na
pas de zros.
Exemple: calculer la fonction de hachage des donnes suivantes :
FONCTIONS DE HACHAGE
X X2 N = 10 N = 100
500 250000 0 0
12 144 4 14 ou 44
453 205209 5 ou 2 52
14
3. La fonction de transformation radix : h(x) = (x)b MOD N
On convertit la donne x dans une base de numration b et
on prend le reste de la division sur N .
Exemple: calculer la fonction de hachage des donnes suivantes
dans le cas o b = 11 et N = 10 ou 100 :
FONCTIONS DE HACHAGE
X10 X11 N = 10 N = 100
12 11 1 11
453 382 2 82
15
En conclusion, il ny a pas de fonction de hachage
universelle.
Cependant, une bonne fonction doit tre:
rapide calculer
rpartit uniformment les lments
Elle dpend donc:
de la machine
des lments
Mais aucune fonction nvite les collisions, quil va falloir
traiter.
FONCTIONS DE HACHAGE
16
Exercice 1: Soit E = {a, b, c, d, e, f, g, h} un ensemble
denregistrement. On veut insrer ces enregistrements dans une
table de hachage de 10 cases selon leur cl:
1. Calculer ladresse primaire de chaque enregistrement dans les cas
o la fonction de hachage est une fonction :
a. De division, i.e : h(x) = x MOD N
b. Du milieu du carr, i.e on lve la donne x au carr x2 et on
prend le chiffre du milieu
c. De transformation radix, i.e : (x)b MOD N et b = 11
FONCTION DE HACHAGE
Enregistrement a b c d e f g h
Cl 5 51 23 453 500 12 38 42
17
Exercice 1: Soit E = {a, b, c, d, e, f, g, h} un ensemble
denregistrement. On veut insrer ces enregistrements dans une
table de hachage de 10 cases selon leur cl:
1. Calculer ladresse primaire de chaque enregistrement
FONCTIONS DE HACHAGE
Enregistrement a b c d e f g h
Cl ou x 5 51 23 453 500 12 38 42
x MOD N 5 1 3 3 0 2 8 2
Milieu du
carr
2 6 2 5 0 4 4 7
5 0 2 6
(x)11 MOD N 5 7 1 2 5 1 5 9
18
Lors de l'insertion de x, si l'adresse primaire h(x) est dj
utilise par une autre donne, la mthode de rsolution
de collision permet de trouver un autre emplacement
(libre) pour x.
MTHODES DE RSOLUTION DE COLLISIONS
19
Pour rsoudre les collisions, deux stratgies se
prsentent:
a. Les mthodes directes ou le hachage par calcul de
lemplacement:
1. Essai linaire
2. Double hachage
b. Les mthodes indirectes ou le hachage par chainage:
3. Chainage spare
4. Chainage interne
MTHODES DE RSOLUTION DE COLLISIONS
20
1. Essai linaire:
Sil se produit une collision sur la case h(x), on essaie les
cases qui la prcdent : h(x)-1, h(x)-2, h(x)-3,..., 0, N-1,
N-2, , jusqu' trouver une case vide.
La rencontre d'une case vide indique que la donne
n'existe pas.
Il faudra sacrifier une case vide dans la table de hachage
pour que la squence de test soit finie.
MTHODES DE RSOLUTION DE COLLISIONS
21
1. Essai linaire: Exercice 1 (Question2. a):
MTHODES DE RSOLUTION DE COLLISIONS
Enregistrement a b c d e f g j
h (x) 5 1 3 3 0 2 8 2
Indice Vide enregistrement
0 V
1 V
2 V
3 V
4 V
5 V
6 V
7 V
8 V
9 V
Etat initial de Table de Hachage
Indice Vide enregistrement
0 V
1 F b
2 V
3 F c
4 V
5 F a
6 V
7 V
8 V
9 V
Aprs linsertion de a, b et c
22
1. Essai linaire: Exercice 1 (Question2. a):
MTHODES DE RSOLUTION DE COLLISIONS
Enregistrement a b c d e f g j
h (x) 5 1 3 3 0 2 8 2
Indice Vide enregistrement
0 V
1 F b
2 F d
3 F c
4 V
5 F a
6 V
7 V
8 V
9