Table de hachage - PowerPoint PPT Presentation

1 / 43
About This Presentation
Title:

Table de hachage

Description:

Title: Table de hachage Author: Unknown User Last modified by: greffier Created Date: 9/14/2001 4:22:55 PM Document presentation format: Affichage l' cran – PowerPoint PPT presentation

Number of Views:29
Avg rating:3.0/5.0
Slides: 44
Provided by: Unkno160
Category:
Tags: chaine | hachage | table

less

Transcript and Presenter's Notes

Title: Table de hachage


1
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

2
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

3
Introduction
Structure de données reposant sur des tableaux
Comment ?
La position de lélément dans le tableau est
fonction de lélément lui-même
4
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

5
Notion de clé
Exemples
1. élément étudiant (nom, prénom, ) Clé
numéro détudiant
2. élément abonné téléphonique Clé numéro
de téléphone
6
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

7
Fonction de hachage
Connaissant la clé dun élément du tableau, on
cherche un algorithme très efficace pour trouver
lélément dans le tableau (de lordre de O(1))
8
Fonction de hachage
9
Fonction de hachage
10
Fonction de hachage
11
Fonction de hachage
Indice tab
0 Pierre Durand - 03.81.11.11.44
1
2 Paul Dupond - 03.81.33.33.33
3 Yvette Bon - 03.81.22.22.22
4
5
6 Guillaume Dupont - 03.81.12.34.56
12
Fonction de hachage
Mais en pratique, il est difficile de trouver
une bonne fonction de hachage
13
Fonction de hachage
Rappel Une application est surjective si
tout élément de F possède au moins un
antécédent Une application est injective
si tout élément de F possède au plus un
antédédent Une application est bijective
si tout élément de F possède exactement un
antécédent
14
Fonction de hachage
15
Fonction de hachage
  • En pratique
  • Il est souvent difficile de trouver une fonction
    injective
  • Dans certains cas, une telle fonction nexiste
    pas (M lt N)
  • Quand elle existe, elle est alors parfois
    complexe
  • et le calcul H(K) peut être coûteux

16
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

17
Collisions
Conséquences On a H(K1) H(K2) i 2 clés
différentes donnent le même indice dans le
tableau On dit quil y a collision
18
Collisions
Indice tab
0 Pierre Durand - 03.81.11.11.44
1
2 Paul Dupond 03.81.33.33.33 Yvette Bon 03.81.22.22.22
3
4
5
6 Guillaume Dupond 03.81.12.34.56
H(0381333333) 2 H(0381222222) 2
19
Traitement des collisions
Déclarer un tableau de pointeurs (au lieu du
tableau déléments) tabi contiendra la liste
des éléments dont les clés K ont la même image
par H
20
Traitement des collisions
Soient K1, K2, .. Kj les clés des éléments E1,
E2, Ej telles que H(K1) H(K2) H(Kj)
i Alors les éléments E1, E2, Ej seront chaînés
à partir de tabi
21
Traitement des collisions
Indice tab
0 Pierre Durand - 03.81.11.11.44
1
2 Paul Dupond 03.81.33.33.33 Yvette Bon 03.81.22.22.22
3
4
5
6 Guillaume Dupond 03.81.12.34.56
H(0381333333) 2 H(0381222222) 2
22
Traitement des collisions
Indice tab
0
1 Null
2
3 Null
4 Null
5 Null
6
Pierre Durand 03.81.11.11.44 null
Paul Dupond 03.81.33.33.33
Yvette Bon 03.81.22.22.22 null
Guillaume Dupont 03.81.12.34.56 null
23
Traitement des collisions
? Avantages de cette méthode Un seul tableau
(de pointeurs)
? Inconvénients de cette méthode - liste
chaînée - la recherche dun élément nest plus
immédiate
24
Traitement des collisions
- Augmenter la taille du tableau tab M gt M Les
emplacements de M à M serviront à stocker les
éléments en collisions - Créer un tableau
supplémentaire (col) en parallèle du tableau tab
pour permettre de gérer les collisions
25
Traitement des collisions
Si 2 éléments E1 et E2 sont en collisions
(H(K1)H(K2)i) Alors on tabi E1 et coli
i i est lindice tel que tabi E2
Avec i gt M Sinon tabi E1 et coli -1
26
Traitement des collisions
Indice tab
0 Pierre Durand - 03.81.11.11.44
1
2 Paul Dupond 03.81.33.33.33 Yvette Bon 03.81.22.22.22
3
4
5
6 Guillaume Dupond 03.81.12.34.56
H(0381333333) 2 H(0381222222) 2
27
Traitement des collisions
Indice tab col
0 Pierre Durand 03.81.11.11.44 -1
1
2 Paul Dupond 03.81.33.33.33 7
3
4
5
6 Guillaume Dupont 03.81.12.34.56 -1
7 Yvette Bon 03.81.22.22.22 -1
N 4 M 7 M 8
28
Traitement des collisions
? Avantages de cette méthode Pas de liste
chaînée
? Inconvénients de cette méthode - taille du
tableau plus importante - la recherche dun
élément nest plus immédiate
29
Table de hachage
  • Introduction
  • Notion de clé
  • Fonction de hachage
  • Collisions
  • Exemple de fonction de hachage
  • Exemple de table de hachage

30
Exemple de fonction de hachage
METHODE DE DIVISION
31
Exemple de fonction de hachage
Annuaire inversé On a 500 000 abonnés à ranger
dans une table de taille 1 000 003 (nombre
premier) H(K) K mod 1 000 003 H(03 81 12 34
56) 122 313 ? tab122313  Guillaume
Dupond  H(03 81 22 22 22) 221 079 ?
tab221079  Yvette Bon 
32
Exemple de table de hachage
Dictionnaire
Le but est de savoir si un mot est présent dans
un dictionnaire et de le trouver rapidement
Ex 1 dictionnaire de français Element mot
définition Clé mot
33
Exemple de table de hachage
Ex 2 compilateur Element variable Clé
nom de variable
  • On souhaite détecter les erreurs suivantes
  • déclaration dune variable déjà déclarée
  • utilisation dune variable non déclarée

34
Exemple de table de hachage
Exemple int i, j, nb ij nbx // x non
déclaré int j // j déjà déclarée
35
Exemple de table de hachage
1ère étape à chaque déclaration, on range la
variable déclarée dans le tableau
Indice tab
0  i 
1
2  j 
3
4  nb 
5
6
36
Exemple de table de hachage
? Détection des erreurs  variable déjà déclarée 
int i, j, nb ij nbx // x non déclaré int
j // j déjà déclarée TabH( j ) est
déjà occupée j est déjà déclaré !
37
Exemple de table de hachage
2ème étape à chaque instruction, on vérifie que
la variable est dans le tableau
int i, j, nb ij nbx // x non déclaré int
j // j déjà déclarée On vérifie que
tabK( i ) et tabK( j ) sont occupés
38
Exemple de table de hachage
? Détection des erreurs  variable non déclarée 
int i, j, nb ij nbx // x non déclaré int
j // j déjà déclarée TabH(x ) est vide
x est non déclaré !
39
Exemple de table de hachage
Conclusion En utilisant les tables de hachage,
on est capable de détecter des erreurs de
compilation (erreur de déclaration) très
efficacement. Note Avec dautres structures
(listes, arbres, ), lalgorithme de recherche
dun élément a une complexité au mieux en
log(N) Ici, cest immédiat (sous réserve que lon
trouve une  bonne  fontion de hachage)
40
Exemple de table de hachage
Problème Si on souhaite utiliser la méthode de
la division comme fonction de hachage, il faut
une clé numérique (au lieu dune chaîne de
caractères)
Question comment passer dune clé  chaîne de
caractère  à une clé numérique ?
41
Exemple de table de hachage
42
Exemple de table de hachage
ascii(i) 105 ascii(j) 106 ascii(n)
110 ascii(b) 98 En prenant t10 H(i) 105
100 105 H(j) 106 100 106 H(nb)
110100 98101 110980 1090
43
Table de hachage
FIN
Write a Comment
User Comments (0)
About PowerShow.com