David Rivreau http://ima.uco.fr Table de hachage David Rivreau http://ima.uco.fr.

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de données
Structures de données avancées : MTH ( Multidimensional trie hashing )
Chap. 4 Recherche en Table
Architecture de machines Codage des informations
?...1…-13…( )…+…-… …-(-2)…-(5-7)…-2+6…? Boîte à outils :
Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Notions de variable aléatoire et de probabilité d’un événement
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Algorithmique et Structures de données
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Table de hachage Introduction Notion de clé Fonction de hachage
Développement d’applications web
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
OMNIDIA 5.3. OMNIDIA 5.3 OMNIDIA 5.3 OMNIDIA 5.3.
Chapitre V. Tables de hachage
Algorithmes Branch & Bound
Bibliothèque standard du C++
Methode de Tri efficace
Le codage des nombres en informatique
Bases de données lexicales
Chaîne logistique : - Approvisionnement - Stocks
Standard Template Library (STL)
L’utilisation des bases de données
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-10541
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Gestion de Fichiers Hachage Extensible.

Les Algorithmes de Tri Introduction Tri par Sélection
Structure et Services « STS » Menu Structures : Divisions
Calcul des groupes d'homologie d’objets discrets
Table de hachage Introduction Notion de clé Fonction de hachage
IFT Structures de données Abder Alikacem Département dinformatique et de génie logiciel.

Programmation linéaire en nombres entiers : les méthodes de troncature
Structures de données IFT-2000

Vers l'échantillonnage d'un entrepôt de données
Le chiffrement asymétrique
I - Caractéristiques principales de GI
Optimisation par les algorithmes génétiques
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Menu Structure : Divisions Diffusion Nationale TOULOUSE – Décembre 2008 Structure et Services « STS » Menu Structures : Divisions.
Algorithmes Branch & Bound
Arbres binaires et tables de hachage
REPRESENTATION DE L’INFORMATION
Les tables de hachage
Micro-intro aux stats.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
La Gestion des fichiers
Cours LCS N°4 Présenté par Mr: LALLALI
EXCEL TICE2 Premier année de Psychologie séance 2
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
B.Shishedjiev - Modèle relationnel
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Chapitre 4 La représentation des nombres.
Tables de hachage Tables de hachage: Idée et exemples
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
Transcription de la présentation:

David Rivreau http://ima.uco.fr Table de hachage David Rivreau http://ima.uco.fr

Préambule On souhaite gérer des fiches d’assurés sociaux contenant : Le numéro de sécurité sociale (clé) Le nom Le prénom Le code postal de la ville de résidence Le répertoire des fiches doit permettre : D’ajouter une fiche De retrouver une fiche par sa clé De supprimer une fiche selon le numéro de clé

Préambule Si on utilise un tableau non trié : L’ajout coûte O(1) La recherche et la suppression coûtent O(n) Si on utilise une liste chaînée non triée : L’ajout et la suppressions coûtent O(1) La recherche coûte O(n) Si on utilise un arbre binaire de recherche : L’ajout, la recherche et la suppression coûtent O(log n)

Préambule Idéalement, on pourrait imaginer stocker chaque fiche dans une table T indicée par les clés : Ajout en position T[clé] coût O(1) Recherche en position T[clé] coût O(1) Suppression en position T[clé] coût O(1) Problème : le nombre de clés possibles est énorme Il faudrait un espace mémoire immense pour stocker relativement peu de données Impraticable directement en pratique

Idée : hachage Notations Généralement, on a : |U| >> |K| U = univers des clés possibles K = clés effectivement utilisées Généralement, on a : |U| >> |K| Principe On va utiliser une fonction h qui transforme toute clé en une valeur entière sur [0..n[, avec n << |U| On stocke la fiche sur l’emplacement désigné par T[h(clé)]

Illustration du hachage 1 U : univers des clés 2 … h(k2) k2 , Durand, … … … K : clés possibles h(k4) k4 , Martin … k2 h(k3) k3 , Dupont, … … k4 h(k1) k3 k1 , Simon, … k1 n-1

Problème de collision La fonction h doit associer une valeur sur [0..n[ pour toute clé de U Comme |U|>> n, on peut avoir pour deux clés distinctes k1 et k2 de K avec l’égalité : h(k1) = h(k2) Ce type de configuration est appelée collision Il y a plusieurs stratégie pour remédier à ce genre de situation : nous allons présenter la solution du chaînage

Résolution des collisions par chaînage 1 U : univers des clés 2 Collision h(k2)= h(k5) … h(k2)= h(k5) k2 , Durand, … k5 , Petit … … … K : clés possibles h(k4) k4 , Martin … k2 h(k3) k5 k3 , Dupont, … … k4 h(k1) k3 k1 , Simon, … k1 n-1 Pour minimiser le risque de collision, on choisit généralement n ≈ 2x|K|

Fonction de hachage clé La fonction de hachage transforme une clé en une valeur entière (hash code) qui correspond à un indice dans la table Idéalement, la fonction doit : Être calculable rapidement Bien distribuer les valeurs (« aléatoirement ») entre 0 et n-1 Indices dans la table 1 clé hachage 2 … n-1

Retour sur les clés Pour plus de simplicité, on suppose généralement que les clés peuvent être interprétées comme des entiers Exemple des chaines de caractères Pour une chaîne de caractères, on peut imaginer sommer les codes des caractères, mais dans ce cas les anagrammes comme « chien », « niche », « chine » sont en collision En Java, on calcule le hash code de la chaîne s par : s0 x 31(n-1) + s1 x 31(n-2) + … + sn-1 où si désigne le ième caractère de la chaîne s

Exemple de fonction de hachage Méthodes de la division On choisit un nombre premier n tel que n ≈ 2x|K| et tel que n n’est pas proche d’une puissance de 2 Fonction h(k) = k % n Justification Un nombre premier va distribuer plus uniformément Si n vaut 2p, la valeur de la fonction de hachage ne va dépendre que des p bits inférieurs de k

Complexité Soit α = |K|/n le facteur de remplissage de la table Résultat Sous l’hypothèse d’un hachage uniforme des clés, la complexité des opérations d’accès, d’insertion et de suppression dans une table de hachage avec chaînage est de O(1 + α)

Application On veut stocker environ 50000 valeurs entières dans un ensemble Implémenter une classe Java permettant d’insérer, de chercher et de supprimer ces valeurs au moyen d’une table de hachage On prend n=100003 On effectue un hachage par division La gestion des collisions est effectuée par chaînage