• Aucun résultat trouvé

Table de hachage

N/A
N/A
Protected

Academic year: 2022

Partager "Table de hachage"

Copied!
21
0
0

Texte intégral

(1)

19/03/2020

1

Table de hachage

(2)

19/03/2020

2

Introduction

• Structure de données reposant sur des tableaux

La position de l’élément dans le tableau est fonction de l’élément lui-même Structure de données statique

Algorithme de recherche très performant

(3)

19/03/2020

3

Notion de clé

Défintion :

Une clé est une partie d’un élément qui permet de désigner le contenu de cet élément de manière non ambigüe

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

(4)

19/03/2020

4

table de hachage

• Une table de hachage (hash table en anglais) est

• une structure de données qui permet une association clé-élément,

• On accède à chaque élément de la table via sa clé.

• L'accès à un élément se fait en transformant la clé en

• une valeur de hachage (ou simplement hachage) par

• l'intermédiaire d'une fonction de hachage.

• Le hachage est un nombre qui permet la localisation des éléments dans le tableau, typiquement le hachage

est l'indice de l'élément dans le tableau.

• Une case dans le tableau est appelée alvéole.

(5)

19/03/2020

5

Fonction de hachage

But :

Ranger les N éléments dans un tableau de taille M afin d’optimiser la recherche d’un élément donné

Connaissant la clé d’un élément du tableau, on cherche un algorithme très efficacepour trouver l’élément dans le tableau.

(6)

19/03/2020

6

Fonction de hachage

Défintion :

Soit E l’ensemble des clés possibles, et F l’ensemble des indices du tableau

Une fonction de hachage H est une fonction qui associe à toute clé K, un indice dans le tableau

H : E F H( K ) = i

(7)

19/03/2020

7

Fonction de hachage

Car sinon on a H(K1) = H(K2) = i

et 2 éléments sont stockés au même indice Une fonction de hachage doit être injective

(8)

19/03/2020

8

TAD Table

• Table : Ensemble de clés auxquelles on peut

• associer une valeur

• Vocabulaire :

• – Si la clé c est présente dans une table t,

• On dit qu’il existe une entrée dans la table t pour la clé c

• • Chaque clé est unique

• – Information identifiante et discriminante

permettant de distinguer les entrées de la table

(9)

19/03/2020

9

Les opérations sur les Tables

• Les opérations sur les Tables sont:

– Recherche,

• – Insertion et

• – Suppression de Clés

(10)

19/03/2020

10

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 qu’il y a collision

On utilise souvent, en pratique, des fonctions non injectives

(11)

19/03/2020

11

Traitement des collisions

1ère méthode :chaînage externe

Déclarer un tableau de pointeurs (au lieu du tableau d’éléments) tab[i] contiendra la liste des éléments dont les clés K ont la même image par H

(12)

19/03/2020

12

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

tab[i]

(13)

19/03/2020

13

Exemple

• On insère les éléments de clés

• e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13

• ayant pour valeur de hachage

• 2 , 0, 3, 0, 3, 0, 4, 8, 1, 5, 4, 2, 4

(14)

19/03/2020

14

(15)

19/03/2020

15

Hachage fermé

• Pour insérer une clé k, on sonde les cases systématiquement

• à partirde h(k) jusqu’à en trouver une vide.

stratégie de sondage

• On définit une nouvelle fonction de hachage qui dépend

• de la clé et du numéro du sondage :

• S : UX{0, 1, . . . ,m − 1}{0, 1, . . . ,m − 1}

• et qui est telle que

• <S(k, 0), S(k, 1), . . . , S(k,m − 1)>

• est une permutation de <0, 1, . . . ,m − 1>.

(16)

19/03/2020

16

• Suppression d ’un élément

• distinction entre «vide» et «supprimée»

• Utiliser une valeur spéciale «supprimée» au lieu de

«vide» pour signifier qu’on a effacé une valeur dans cette case

• Lors d’une recherche : considérer une case contenant

«supprimée» comme une case contenant une clé

• Lors d’une insertion : considérer une case contenant

«supprimée» comme une case vide.

(17)

19/03/2020

17

Hachage fermé

Hachage linéaire

Hachage quadratique

• Re-hachage : s(x,i) = (h (x) + i ²) mod M

Re-hachage: s(x, i) = (h(x) + i) modM

(18)

19/03/2020

18

Hachage fermé

Hachage linéaire

exemple

• On cherche séquentiellement à partir de h(x), une entrée libre.

• Soient les éléments suivants à insérer dans une table de M=26 entrées (de 0 à 25):

• éléments : e1 e2 e3 e4 e5 e6 e7 e8 e9

• ayant pour valeur de hachage

• 0 0 2 0 3 9 9 25 25

• Si l’entrée h(x) est occupée, il faut effectuer une ou plusieurs

tentatives de résolution jusqu’à trouver une entrée libre. i indique la ième tentative de résolution. On effectue le calcul suivant : ((h(x) + i) modulo M) avec M = 26. Pour e1, la place 0 est

disponible, e1 est rangé en 0. e2 devrait être en 0 mais la place est

déjà prise. On effectue une première tentative de résolution (i=1)

en calculant (h(x)+i) modulo 26, soit (0 + 1) modulo 26, soit 1. La

clé e2 est rangée en 1, etc.

(19)

19/03/2020

19

Hachage fermé

Hachage linéaire

exemple

(20)

19/03/2020

20

Exemple de fonction de hachage

METHODE DE DIVISION

On suppose que K est un nombre entier

Prendre comme indice dans le tableau le reste de la division de la clé (qui doit être un entier !) par la taille du tableau

H(K) = K mod M

Le choix de M est alors primordial pour éviter un trop grand nombre de collisions (M : nombre premier, …)

(21)

19/03/2020

21

Exemple de table de hachage

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

Dictionnaire

Références

Documents relatifs

Écrire une fonction stringToDouble qui prend en entrée une chaine de caractère (on suppose qu’elle respecte le format ci-dessus, pas besoin donc de la vérifier) et qui renvoie un

Cherche dans le dictionnaire les cinq mots et complète le tableau..

Ecrire la fonction RechElt(N,Tab,Val) qui retourne le rang de la première occurence de la valeur réelle Val dans le tableau Tab (contenant N valeurs significatives), ou -1 si Val

54% des graines ayant été récoltées sont issues des deux vergers à graines de catégorie qualifiée (Rachovo-VG et Chapois- Sousceyrac-VG), les 46% restant ayant

[r]

Indicateurs de performance : IP C15.1 : Les phénomènes dangereux et les situations dangereuses liés au bien, à son environnement et à l'activité de maintenance

Insoluble dans les liquides mais présente une activité grandement augmentée par saturation dans l'alcool.. Réactivité très variable selon les périodes de

Le but de notre étude est donc de savoir si cet aspect de périhépatite peut permettre de déterminer la nature biliaire d’un.. épanchement périhépatique et de montrer la