Les Tables de Hachage



Documents pareils
1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

1 Recherche en table par balayage

Architecture des Systèmes d Information Architecture des Systèmes d Information

ARBRES BINAIRES DE RECHERCHE

ÉPREUVE COMMUNE DE TIPE Partie D

Fonction de hachage et signatures électroniques

Recherche dans un tableau

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Cours d initiation à la programmation en C++ Johann Cuenin

Algorithmique, Structures de données et langage C

Définitions. Numéro à préciser. (Durée : )

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Logiciel de Base. I. Représentation des nombres

Chp. 4. Minimisation d une fonction d une variable

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Algorithmes récursifs

Correction TD algorithmique

Structure fonctionnelle d un SGBD

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Licence Sciences et Technologies Examen janvier 2010

Chapitre 10 Arithmétique réelle

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Calculateur quantique: factorisation des entiers

IFT3245. Simulation et modèles

Algorithmique et Programmation

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Bases de programmation. Cours 5. Structurer les données

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Partie 7 : Gestion de la mémoire

Continuité et dérivabilité d une fonction

Chap III : Les tableaux

Distribution Uniforme Probabilité de Laplace Dénombrements Les Paris. Chapitre 2 Le calcul des probabilités

Algorithme. Table des matières

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Cryptographie et fonctions à sens unique

Représentation des Nombres

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Mécanismes de configuration automatique d une interface réseau, aspects sécurité

Algorithmes : conception et réalisation MQT 63834

Qu est-ce qu une probabilité?

Limites finies en un point

Chapitre VI - Méthodes de factorisation

Cours d électricité. Circuits électriques en courant constant. Mathieu Bardoux. 1 re année

INF601 : Algorithme et Structure de données

Conversion d un entier. Méthode par soustraction

Les arbres binaires de recherche

Cours de Tests paramétriques

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Optimisation des fonctions de plusieurs variables

Structures algébriques

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Informatique Générale

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Introduction à l étude des Corps Finis

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Feuille TD n 1 Exercices d algorithmique éléments de correction

La problématique des tests. Cours V. 7 mars Comment quantifier la performance d un test? Hypothèses simples et composites

TP 1. Prise en main du langage Python

Coefficients binomiaux

La fonction exponentielle

V- Manipulations de nombres en binaire

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Parallélisme et Répartition

Définition des Webservices Ordre de paiement par . Version 1.0

Quantification Scalaire et Prédictive

CORRECTION EXERCICES ALGORITHME 1

Développements limités. Notion de développement limité

UE C avancé cours 1: introduction et révisions

L exclusion mutuelle distribuée

Algorithmique I. Algorithmique I p.1/??

Annexe commune aux séries ES, L et S : boîtes et quantiles

Comment se servir de cet ouvrage? Chaque chapitre présente une étape de la méthodologie

Programmation linéaire

Quelques algorithmes simples dont l analyse n est pas si simple

TSTI 2D CH X : Exemples de lois à densité 1

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cryptographie Quantique

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Formation des collecteurs de traces. Récupération des traces

Architecture des ordinateurs

LE PROBLEME DU PLUS COURT CHEMIN

Objets Combinatoires élementaires

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Compression Compression par dictionnaires

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Développement décimal d un réel

EX-word TextLoader Fonction Bibliothèque

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

Les chaînes de caractères

Transcription:

NICOD JEAN-MARC Licence 3 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2007 NICOD JEAN-MARC 1 / 34

Référence Tables à adressage directe Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein. Introduction à l algorithmique, 2 e édition, Dunod, 2002. NICOD JEAN-MARC 2 / 34

Sommaire Tables à adressage directe 1 Tables à adressage directe 2 3 4 NICOD JEAN-MARC 3 / 34

Généralités Tables à adressage directe Opérations sur les ensembles de clés dynamiques : table des symboles : insérer, rechercher, supprimer (les clés sont des chaînes de caractères) Difficulté d effectuer des accès directs pas une case pour chaque clé Mise en œuvre efficace des dictionnaires O(n) dans le pire des cas et O(1) en moyenne Il s agit d une généralisation des tableaux classiques Ici les données à stocker ont des clés qui permettent de calculer un indice dans la table et non des clés qui sont les indices Gestion des collisions : clés k un même indice i NICOD JEAN-MARC 4 / 34

Sommaire Tables à adressage directe Définitions Exemple Opérations sur cette table 1 Tables à adressage directe Définitions Exemple Opérations sur cette table 2 3 4 NICOD JEAN-MARC 5 / 34

Définitions Exemple Opérations sur cette table Tables à adressage direct cas idéal théorique définitions Technique simple si l univers des clés U est petit Soit U = {0, 1,..., m 1} avec m petit 2 éléments ne peuvent avoir la même clé Soit K un sous ensemble dynamique dans lequel chaque élément possède une clé dans U Représentation de cet ensemble par une table à adressage directe T[O... m 1] Chaque indice de T correspond à une clé dans l univers U Impossible en pratique NICOD JEAN-MARC 6 / 34

Exemple d adressage direct Définitions Exemple Opérations sur cette table 1 7 9 6 0 4 K U 2 5 3 8 0 1 2 3 4 5 6 7 8 9 2 3 5 8 clé donnée NICOD JEAN-MARC 7 / 34

Définitions Exemple Opérations sur cette table Opérations en adressage direct rechercheradressagedirect(t,k) retour T[k] inséreradressagedirect(t,k) T[clé[x]] x supprimeradressagedirect(t,x) T[clé[x]] null Chaque opération est en O(1) Modif : stockage de l élément directement dans T si la clé n est pas toujours indispensable dans l objet x NICOD JEAN-MARC 8 / 34

Sommaire Tables à adressage directe Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage 1 Tables à adressage directe 2 Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage 3 4 NICOD JEAN-MARC 9 / 34

cas pratique Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage définitions Si U est grand, T ne tient pas en mémoire limitation du gaspillage de la mémoire si K U une table de hachage occupe moins de place l accès en O(1) seulement en moyenne alors que O(1) dans le pire cas en adressage direct Où stocke-t-on la clé k? adressage direct : T[k] table de hachage : T[h(k)] avec h une fonction de hachage NICOD JEAN-MARC 10 / 34

Fonction de hachage Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage définition Soit h une fonction de hachage : h : U {0, 1,..., m 1} h(k) est la valeur de hachage de la clé k h établit une correspondance entre U et les cases de T, la table de hachage le but de la fonction de hachage est de réduire l intervalle des indices du tableau à gérer on gère m valeurs au lieu de U NICOD JEAN-MARC 11 / 34

Gestion des collisions Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage les collisions Comme U m il y aura des collisions, c est à dire : k et k U h(k) = h(k ) avec k k L idée est de trouver une fonction h qui semble aléatoire afin de limiter le nombre de collisions Attention : h est une fonction déterministe sinon on ne pourrait pas retrouver nos données C est pourquoi on parle de fonction de hachage NICOD JEAN-MARC 12 / 34

Exemple d une collision Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage k1 k7 k9 K U k0 k4 k2 k5 k6 k3 k8 0... h(k2) h(k3)... h(k5) = h(k8) m 1 Même s il est possible de limiter le nombre de collisions, elles sont inévitables par construction Il existe des techniques pour gérer ces collisions NICOD JEAN-MARC 13 / 34

Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage Résolution des collisions par chaînage solution par chaînage Tous les éléments hachés vers la même case sont placés dans une liste chaînée La case T[i] contient le pointeur vers la liste des éléments de clés k tels que h(k)=i Si T[i] ne désigne rien, alors il pointe sur null NICOD JEAN-MARC 14 / 34

Exemple Tables à adressage directe Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage mise en œuvre du chaînage sur l exemple précédent k1 k7 k9 k0 k4 k6 k3 K U k2 k5 k8... 0 k2 k3 k5 x1 x2 x5 k8 x8 m 1 NICOD JEAN-MARC 15 / 34

Opérations avec le chaînage Définitions Fonction de hachage Gestion des collisions Résolution des collisions par chaînage Opérations avec le chaînage Les opérations sur T sont faciles à mettre en œuvre avec le chaînage : insérerhachagechaîné(t,x) : insertion de x en tête de la liste T[h(clé(x))] rechercherhachagechaîné(t,k) : recherche de l élément de clé k dans T[h(k)] supprimerhachagechaîné(t,x) : supprime x de la liste T[h(clé(x))] Voir le cours sur les listes chaînées pour connaître la complexité de ces opérations. Comportement très mauvais dans le pire cas. Sa performance dépend de la performance de h NICOD JEAN-MARC 16 / 34

Sommaire Tables à adressage directe Définition Méthode de la division Méthode de la multiplication Hachage universel 1 Tables à adressage directe 2 3 Définition Méthode de la division Méthode de la multiplication Hachage universel 4 NICOD JEAN-MARC 17 / 34

Définition Tables à adressage directe Définition Méthode de la division Méthode de la multiplication Hachage universel une bonne fonction de hachage ou hachage uniforme simple But : chaque clé a autant de chance d être hachée vers l une quelconque des m cases de T (impossible à vérifier en pratique) Condition d existence : les clés k sont issues d une distribution uniforme aléatoire exemple : 0 k 1 avec h(k) = km En pratique on recherche une fonction de hachage permettant, par exemple, à 2 clés ayant des motifs très voisins d avoir des valeurs de hachage très différentes NICOD JEAN-MARC 18 / 34

Définition (suite) Tables à adressage directe Définition Méthode de la division Méthode de la multiplication Hachage universel clés et fonction de hachage Les clés sont des entiers, le plus souvent Sinon trouver un moyen de les voir comme tel Exemple : une chaîne de caractères peut être convertie dans une certaine base (ici, base 128) : la chaîne pt (caractères ascii 112 et 116) donne 14452 en base 128 : 112 128 + 116 = 14452 Dans la suite du cours, on suppose que les clés sont des entiers naturels N NICOD JEAN-MARC 19 / 34

Méthode de la division Définition Méthode de la division Méthode de la multiplication Hachage universel principe h(k) = k mod m Méthode très rapide 2 clés proches peuvent avoir des clés très différentes Attention à la valeur choisie pour m : m = 2 p car h(k) serait les p bits de poids faible de k. Tous les bits de la clé ne sont pas utilisés m 2 p 1 si k est une chaîne de caractères en base 2 p car une permutation des caractères ne modifie pas h(k) m est un nombre premier éloigné d une puissance de 2, exemple : 2000 chaînes de caractères 8 bits avec m = 701 3 échecs en moyenne, ce qui est un bon rapport NICOD JEAN-MARC 20 / 34

Méthode de la multiplication Définition Méthode de la division Méthode de la multiplication Hachage universel principe h(k) = m(ka mod 1) avec 0 < A < 1 ka mod 1 = ka ka (partie décimale de ka) ici m n est plus une valeur critique m est le plus souvent une puissance de 2 fonctionne mieux avec certaines valeurs de A comme le nombre d or (cf [Knuth 73] : The art of Computer Programming ): A 5 1 2 NICOD JEAN-MARC 21 / 34

Hachage universel Tables à adressage directe Définition Méthode de la division Méthode de la multiplication Hachage universel mise en échec d une fonction de hachage figée Il est possible de trouver n clés hachées vers la même case de T acte de malveillance ou mauvais choix des identifiants pour une table des symboles (?) temps de recherche en O(n) en moyenne choix aléatoire d une fonction de hachage pour sortir du cas défavorable Cela définit le hachage universel bonnes performances en moyenne à cause du caractère aléatoire du choix de la fonction de hachage NICOD JEAN-MARC 22 / 34

Hachage universel (suite) Définition Méthode de la division Méthode de la multiplication Hachage universel collection finie de fonctions de hachage Soit H une collection finie de fonctions de hachage h : U {0,..., m 1} H est universelle si l, k U avec l k, le nombre de fonctions h H telles que h(l) = h(k) vaut au plus H /m Probabilité de collision : 1/m NICOD JEAN-MARC 23 / 34

Définition Méthode de la division Méthode de la multiplication Hachage universel Conception d une classe universelle de fct de hachage exemple Conception d une classe universelle avec les paramètres : soit p un grand nombre premier tel que toute clé k est plus petite que p soit m la taille de la table de hachage (p > m) soit Z p = {0, 1,..., p 1} et Z p = {1,..., p 1} soit h a,b (k) une fonction de hachage pour tout a Z p et tout b Z p : h a,b (k) = ((ak + b) mod p) mod m la classe H p,m est universelle : H p,m = {h a,b : a Z p et b Z p } il y a p(p 1) fonctions de hachage différentes dans H p,m la probabilité de collision est 1/m NICOD JEAN-MARC 24 / 34

Sommaire Tables à adressage directe Sondage linéaire Sondage quadratique Double hachage 1 Tables à adressage directe 2 3 4 Sondage linéaire Sondage quadratique Double hachage NICOD JEAN-MARC 25 / 34

Sondage linéaire Sondage quadratique Double hachage principe Les éléments de l ensemble dynamiques sont dans T T peut donc se remplir complètement, m < U La recherche d une valeur se fait : En suivant une chaîne de valeurs d indices de T plutôt que suivant une liste chaînée L insertion se fait en sondant la table de hachage T jusqu à trouver une case vide NICOD JEAN-MARC 26 / 34

Sondage linéaire Sondage quadratique Double hachage séquence de sondages La fonction de hachage est étendue pour inclure le nombre de sondages, ainsi : h : U {0, 1,..., m 1} {0, 1,..., m 1} La séquence de valeurs pour les sondages est : h(k,0),h(k,1),h(k,2),...,k(k,m-1) qui est une permutation de 0,1,2,...,m-1 pour que toutes les cases puissent être visitées NICOD JEAN-MARC 27 / 34

Sondage linéaire Sondage quadratique Double hachage insertion en adressage ouvert Algorithme de insertionhacahge(t,k) début i 0 répéter j h(k,i) si T[j] = null alors retourner j sinon i i + 1 jusqu à i = m erreur fin idem pour la recherche, mais attention à la suppression NICOD JEAN-MARC 28 / 34

Sondage linéaire Sondage quadratique Double hachage Sondage linéaire principe Soit h : U {0,..., m 1} une fonction de hachage auxiliaire Soit la fonction de hachage linéaire h : h(k, i) = (h (k) + i) mod m avec i = 0, 1,..., m 1 première case sondée : T[h (k)] puis T[h (k)+1],... Attention : problème de grappes longue chaîne de cases occupées si i cases pleines précèdent une case vide, la proba qu elle soit la prochaine à être remplie est (i+1)/m au lieu de 1/m NICOD JEAN-MARC 29 / 34

Sondage quadratique Sondage linéaire Sondage quadratique Double hachage principe h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m avec h la fonction de hachage auxiliaire i = 0, 1,..., m 1, c 1 et c 2 0 première case sondée : T[k (k)] les accès suivants sont décalés suivant le numéro du sondage mieux que le sondage linéaire pour utiliser la table en entier, les valeurs de c 1, c 2 et m sont imposées si h(k 1, 0) = h(k 2, 0) alors h(k 1, i) = h(k 2, i) i grappe secondaire NICOD JEAN-MARC 30 / 34

Sondage linéaire Sondage quadratique Double hachage Double hachage principe Meilleure méthode que l adressage ouvert h(k, i) = (h 1 (k) + i h 2 (k)) mod m avec h 1 et h 2 des fonctions de hachage auxiliaire i = 0, 1,..., m 1, c 1 et c 2 0 première case sondée : T[h 1 (k)] les accès suivants sont décalés de h 2 (k) mod m mieux que le sondage précédent si h(k 1,0) = h(k 2,0) alors h(k 1,i) h(k 2,i) i le décalage varie en fonction de la clé NICOD JEAN-MARC 31 / 34

Exemple Tables à adressage directe Sondage linéaire Sondage quadratique Double hachage fonction de double hachage h(k, i) = (h 1 (k) + i h 2 (k)) mod m m = 13, h 1 (k) = k mod 13 et h 2 (k) = 1 + (k mod 11) 79 69 98 72 14 50 0 1 2 3 4 5 6 7 8 9 10 11 12 insertion de la clé 14 14 1 mod 13 et 14 3 mod 11 h(14, 0) = h 1 (14) = 1 case occupée h(14, 1) = (h 1 (14) + h 2 (14)) mod 13 = 5 case occupée h(14, 2) = (h 1 (14) + 2 h 2 (14)) mod 13 = 9 case libre Insertion en case 9 NICOD JEAN-MARC 32 / 34

Sondage linéaire Sondage quadratique Double hachage Paramètres du double hachage h 2 (k) doit être premier avec m pour que T soit parcouru en totalité exemple 1 : m une puissance de 2 et h 2 tjs impair exemple 2 : m premier et h 2 telle que h soit positive inférieure à m h 1(k) = k mod m h 2(k) = 1 + (k mod m ) avec m légèrement < à m exemple : k = 123456 avec m = 701, m = 700 on a h 1(k) = 80 et h 2(k) = 257 On a m 2 séquences de sondages Schéma proche du hachage uniforme NICOD JEAN-MARC 33 / 34

Compléments 1 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein. Introduction à l algorithmique, 2 e édition, Dunod, 2002. 2 Donald E. Knuth. Sorting and Searching, volume 3 de The Art of Computer Programming. Addison-Wesley, 1973.