TABLES D ADRESSAGE DISPERSÉ (HASH TABLES; TABLES DE HACHAGE) OBJECTIFS

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

Chapitre 10. Les interfaces Comparable et Comparator 1

ARBRES BINAIRES DE RECHERCHE

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

Algorithmes récursifs

IFT3245. Simulation et modèles

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Ma banque, mes emprunts et mes intérêts

Application à l astrophysique ACTIVITE

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Les fonctions de hachage, un domaine à la mode

Algorithmique & programmation

ÉPREUVE COMMUNE DE TIPE Partie D

EBS 204 E C B S. Publication : Novembre 96

Algorithmique et structures de données I

Nombres premiers. Comment reconnaître un nombre premier? Mais...

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

Programmation parallèle et distribuée

Programmation Par Objets

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

Cours Informatique Master STEP

Programmation Orientée Objet Java

Web Science. Master 1 IFI. Andrea G. B. Tettamanzi. Université de Nice Sophia Antipolis Département Informatique andrea.tettamanzi@unice.

Corrigé des TD 1 à 5

Data 2 Business : La démarche de valorisation de la Data pour améliorer la performance de ses clients

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

Viandes, poissons et crustacés

DM 10 : La fusion nucléaire, l énergie de l avenir? CORRECTION

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

LES TYPES DE DONNÉES DU LANGAGE PASCAL

La nouvelle planification de l échantillonnage

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

4 Exemples de problèmes MapReduce incrémentaux

Journées MATHRICE "Dijon-Besançon" DIJON mars Projet MySafeKey Authentification par clé USB

Ce document a pour objet : de rappeler les principes de base d information concernant les coordonnées bancaires,

Exercices sur les interfaces

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Thème Le domaine continental et sa dynamique

Fonction de hachage et signatures électroniques

I.1. Chiffrement I.1.1 Chiffrement symétrique I.1.2 Chiffrement asymétrique I.2 La signature numérique I.2.1 Les fonctions de hachage I.2.

Cryptographie et fonctions à sens unique

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Programmation parallèle et distribuée

FORMATION SUR «CRYPTOGRAPHIE APPLIQUEE

Chp. 4. Minimisation d une fonction d une variable

Gestion distribuée (par sockets) de banque en Java

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Console IAP Manuel d utilisation

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Proxies,, Caches & CDNs

Intelligence Economique - Business Intelligence

Examen Médian - 1 heure 30

Utilisation d objets : String et ArrayList

Web : Stockage de mot de passe LOG619 Automne 2011 Olivier Bilodeau

OCL - Object Constraint Language

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Differential Synchronization

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

INF 4420: Sécurité Informatique Cryptographie II

1 Recherche en table par balayage

Convocations ministérielles et convocations du rectorat de Grenoble Déplacements temporaires

Guide de configuration d'une classe

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

CORRECTION EXERCICES ALGORITHME 1

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178

Compte-rendu de projet de Système de gestion de base de données

Application 1- VBA : Test de comportements d'investissements

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Représentation d un entier en base b

N L a R e v u e F r a n c o p h o n e d u M a n a g e m e n t d e P r o j e t 2 è m e t r i m e s t r e

Du 03 au 07 Février 2014 Tunis (Tunisie)

Programmation Objet - Cours II

A retenir : A Z m n. m noyau MASSE ET ÉNERGIE RÉACTIONS NUCLÉAIRES I) EQUIVALENCE MASSE-ÉNERGIE

TP3 : Creation de tables 1 seance

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

La sécurité dans les grilles

Raisonnement probabiliste

Introduction à la théorie des graphes. Solutions des exercices

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Bases de données réparties: Fragmentation et allocation

Étudiant : Nicolas Favre-Félix IFIPS Info 3. Les One Time Passwords, Mots de passe à usage unique

STAGE IREM 0- Premiers pas en Python

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Projet UNIX. Générateur de dictionnaire d empreintes multitâche par brute-force

Transcription:

TABLES D ADRESSAGE DISPERSÉ (HASH TABLES; TABLES DE HACHAGE) OBJECTIFS Comprendre le fonctionnement et l implantation des tables d adressage dispersé (hash tables). Être en mesure de pouvoir programmer des fonctions pour tables d adressage dispersé. Être en mesure d utiliser et d implanter les dictionnaires et les ensembles avec des tables d adressage dispersé. IFT1020 2 1

CODES CBHT.java IFT1020 3 Tables d adressage dispersé (Hash Tables) Le BST possède des opérations en temps moyen dans O(log N), pour gérer N éléments dans une collection. L adressage dispersé est utilisé pour trouver rapidement des éléments d une collection sans faire de recherche linéaire. En fait, on vise des opérations d insertion, de suppression et de recherche dans O(1). Une fonction d adressage dispersé calcule une valeur entière (un index) pour tout objet dans la table. Une bonne fonction d adressage dispersé minimise les collisions, c est-à-dire des index identiques pour des objets différents. En java, pour calculer l index (hash code) d un objet x : IFT1020 4 2

Une fonction d adressage dispersé pour des mots 26 lettres hashcode( mot ) = rang de la 1ère lettre A: 0 B: 1 Z:25 Problème : plusieurs mots commencent par la même lettre impliquant une distribution non uniforme. IFT1020 5 Une fonction d adressage dispersé pour des mots On pourrait aussi additionner la valeur ASCII des lettres du mot modulo M, où M est la taille de la table. C est un meilleur choix car la distribution est meilleure (plus uniforme). IFT1020 6 3

Hash code classe de x x.hashcode( ) Date ms/2 32 xor ms % 2 32 Integer List Set String ms depuis 01-01-1970 valeur de x Somme des hash code des éléments de la liste Somme des hash code des éléments du set Somme des caractères de de la chaîne. IFT1020 7 Implantation simple Pour faire une implantation, il faut : Une fonction de hashage pour les objets à traiter. Une structure de données pour stocker les objets, par exemple un tableau. Utiliser comme index du tableau des objets la valeur de hachage retournée par. Pour tester la présence d un objet Calculer son index à l aide de hashcode. Vérifier si la position à cet index dans le tableau est occupée. IFT1020 8 4

Exemple fictif nom Abdelmajid Adam Ève Harold Jacques Katherine Luc Ratiba 20998 60032 3445 8932 498723 43921 987943 1109921 IFT1020 9 Implantation dans un tableau... Ève... Harold... Abdelmajid Katherine Adam Jacques Luc Ratiba 3445 8932 20998 43921 60032 498723 987943 1109921 IFT1020 10 5

Problèmes avec cette implantation Il n est pas possible de déclarer un tableau assez grand pour stocker des objets pour tous les index entiers. Il est possible que deux objets différents aient le même index. IFT1020 11 Solutions Prendre un tableau de taille «raisonnable» et réduire les index calculés dans l intervale de ce tableau.! " #$ % Pour les objets qui ont le même index : Utilisez des listes d objets, qu on appelle des buckets. IFT1020 12 6

Tableau de buckets Une table d adressage dispersé peut être implantée avec un tableau de buckets. Les buckets sont des listes chaînées qui regroupent les éléments qui retournent le même index de hachage. La taille de la table doit être un nombre premier plus grand que le nombre d éléments attendu. S il y a peu de collisions (distribution uniforme des codes de hachage) alors les opérations ajouter, supprimer et chercher prennent un temps constant, dans O(1). IFT1020 13 Algorithme d insertion Obtenir l index h dans la table : Calculer le hashcode. Réduire le hashcode modulo la taille de la table pour obtenir l index h (si index peut déborder) Ajouter dans le bucket à l adresse h, revient à insérer dans une liste, O(n) : Dépend de ce qu on veut : liste triée, un ensemble, un BST,? IFT1020 14 7

Algorithme de recherche Obtenir l index h dans la table : Calculer le hashcode. Réduire le hashcode modulo la taille de la table pour obtenir l index h (si index peut déborder) Itérer dans le bucket à l adresse h, revient à chercher dans une liste, O(n) : Pour chaque élément dans le bucket vérifier s il est égal à. Si on trouve un élément égal àalorsest dans la liste et donc dans la table. Autrement, n est pas dans la table. IFT1020 15 Algorithme de suppression Obtenir l index h dans la table : Calculer le hashcode. Réduire le hashcode modulo la taille de la table pour obtenir l index h (si index peut déborder) Itérer dans le bucket à l adresse h, revient à chercher dans une liste : Pour chaque élément dans le bucket vérifier s il est égal à. Si on trouve un élément égal àalors on retire de la liste et on le retourne. Autrement, n est pas dans l ensemble et on ne fait rien et on retourne. IFT1020 16 8

Tableau périodique Nous allons faire un dictionnaire pour «mapper» les éléments chimiques avec leurs numéros atomiques. Nous prendrons comme fonction de hachage la première lettre de l élément moins A. Nous implanterons la table dans un tableau avec «buckets». IFT1020 17 hashcode(mot) = 1ère lettre A elem H He Li Be Na Mg K Ca Rb (Rubidium) Sr (Strontium) Cs (Cesium) Ba (Barium) 1 2 3 4 11 12 19 20 37 38 55 56 7 7 11 1 13 12 10 20 17 18 2 1 IFT1020 18 9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Tableau périodique <Be, <Ba, 56> 4> <Ca, <Cs, 55> 20> <He, <H, 1> 2> <K, 19> <Li, 3> <Mg, 12> <Na, 11> <Rb, 37> <Sr, 38> Insérer <H, 1> : 7 Insérer <He, 2> : 7 Insérer <Li, 3> : 11 Insérer <Be, 4> : 1 Insérer <Na,11> : 13 Insérer <Mg,12> : 12 Insérer <K, 19> : 10 Insérer <Ca,20> : 2 Insérer <Rb,37> : 17 Insérer <Sr,38> : 18 Insérer <Cs,55> : 2 Insérer <Ba,56> : 1 IFT1020 19 & $ Dans un & $, seules les clés sont hachées! Les clés ont besoin de et de méthodes ' compatibles (soit d implanter l interface $ %). IFT1020 20 10

( ) vs ) Les deux implantent l interface ) Avec une bonne fonction de hachage, les algorithmes qui travaillent avec une table de hachage sont généralement plus rapides que les algorithmes qui travaillent avec des arbres. La classe ( ) garantie le balancement des arbres et donc la performance dans O(log n) des opérations. L itérateur de ( ) visite les éléments dans l ordre trié alors que celui de ) non (plutôt un ordre aléatoire). IFT1020 21 Allons voir le code de CBHT.java Ici on implante une table de hashing pour des entrées * +, donc prêt pour implanter & $. Pour implanter ) à partir de CBHT, il faudrait faire le même exercice qu avec,)(), soit d utiliser un objet bidon pour les valeurs. IFT1020 22 11