Chap. 4 Recherche en Table

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 fichiers
Introduction Pour concrétiser l’enseignement assisté par ordinateur
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Chap. 1 Structures séquentielles : listes linéaires
Plus rapide chemin bicritère : un problème d’aménagement du territoire
8. Les tableaux P. Costamagna – ISEN N1.
Algorithmique et Structures de données
Initiation à la programmation et algorithmique cours 3
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Initiation au système d’information et aux bases de données
Développement d’applications web
ALGORITHMES RECURSIFS
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Aide-mémoire – FORMULAIRE Web DA/DT
Chapitre V. Tables de hachage
Récursivité.
Les structures de données arborescentes
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
Bibliothèque standard du C++
Methode de Tri efficace
Chap 4 Les bases de données et le modèle relationnel
1.2 COMPOSANTES DES VECTEURS
II. Chaînage, SDD séquentielles
Projet de Compilation Manuel VACELET, Jean Pierre CAURIER, Gaël COLLE,
Définition d’un maillon de liste
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2001 © Julie Dufort, M. Ing. Chapitre 3 - ajout Systèmes de fichiers.
Les Algorithmes Cryptographiques Symétriques
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
Etude de cas : buffer clavier
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
Expressions régulières et hash tables
Les listes chaînées par Frédérick Henri.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Institut Supérieur des Etudes Technologiques de Djerba Exposé du Traitement de Données Réalisé par: Khalifa Marwa Magroun Amira Jawadi Souad L2MDW.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Structure et Services « STS » Menu Structures : Divisions
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.
1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.
Exemple de gestion d'un buffer clavier en liste circulaire
Le langage C Structures de données
Item 03 Objectif : Planification des travaux de curatif Public cible :
ALGORITHME DE TRI Le tri par insertion.
LES PILES ET FILES.
Pourquoi est-il nécessaire d'installer de nouveaux logiciels sur votre ordinateur ? J'exclus de cette présentation l'installation de nouveaux matériels.
David Rivreau Table de hachage David Rivreau
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.
Stockage d’information sur un périphérique non sécurisé Stage INRIA - Projet SMIS Cryptographie et Bases de données Septembre 2006 Soutenance de Vincent.
Arbres binaires et tables de hachage
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
La Gestion des fichiers
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Transcription de la présentation:

Chap. 4 Recherche en Table

Définition d'une table Une table est un ensemble des couples (clé, information). la clé fait partie de l'information, mais c'est une information particulière qui permet d'identifier un élément de façon unique, donc elle permet de retrouver un élément (couple clé-information) de la table. Une clé peut être complexe, c.à.d. constituée de plusieurs informations différentes.

Exemple Une personne peut être identifiée de façon unique par son numéro de sécurité sociale. Il y a des cas quand on se contente d'identifier une personne en utilisant la clé composée (nom + prénom). De toute façon à l'intérieure de la BD avec laquelle on travaille la clé doit obligatoirement être discriminante, c.à.d. qu'à une clé correspond un seul couple.

Il existe deux types de tables : - en mémoire - sur disque   Les méthodes de traitement sont différentes. Opérations à réaliser sur une table : Recherche d'un élément Ajout d'un élément Suppression d'un élément Modification d'un élément (on modifie les informations mais on ne peut pas modifier la clé).

Pour avoir un accès rapide, on s'intéresse à des tables dont les clés sont déjà triées : Recherche est plus rapide Ajout et Suppression sont plus performants avec les algorithmes de réorganisation minimale. On s'intéresse à des tables où la consultation est primordiale  tables triées et leurs méthodes de gestion.

Tables en mémoire. Méthode d'adressage : Associatif simple. Parcours séquentiel simple (table non triée) Avantages : pas des pertes de place.

Adressage fonctionnel On dispose d'une fonction f calculant à partir de la clé sa position dans la table. La place d'un élément est calculée uniquement à partir de sa clé ; ce calcul est réalisé grâce à une fonction, dite fonction de hachage, qui transforme directement la clé en une adresse dans une zone de mémoire contiguë ou en un indice de tableau. Exemple : clé = le nom f(clé) = i=0longnom-1 code ASCII (nom[i])*26i SI clé1clé2 ALORS f(clé1) f(clé2)   Alors il s'agit d'une fonction bijective.

Pour avoir une fonction bijective, il faut avoir une table dont le nombre de cases = au nombre de clés possibles (et non au nombre de clés réelles). Une méthode inutilisable, car le nombre de clés est beaucoup trop grand. Si nom n'a que 6 lettres on a déjà 266 clés possibles. Avantages : Rapidité d'accès extrême.   Inconvénients : énorme perte de place (266). Donc, l'utilisation des fonctions bijectives est limitée à des applications où le nombre de clés possibles est faible.

H-coding (hachage), adressage dispersé. Dans les méthodes de hachage, on conserve la notion d'une fonction f : fonction de dispersion. On limite la taille de la table au nombre des clés réelles. f n'est pas une fonction bijective. Une situation possible : f(clé1)=f(clé2) avec clé1clé2. Il s'agit d'une collision.

Il faut gérer ce problème  gestion des collisions. Il faut commencer par limiter le nombre des collisions, c.à.d. qu'il faut travailler sur la fonction de dispersion pour qu'elle disperse au mieux. Il faut essayer trouver une fonction en fonction de clé : utiliser des fonctions mathématiques compliquées, pas que des sommes, faire aussi des produits, utiliser même des logarithmes, fonctions exponentielles, etc. pour avoir une bonne dispersion. L'indice qu'on obtient doit se trouver sur la plage de la table, donc on utilise modulo n pour ramener l'indice trouvé dans la table.

Traitement des collisions Externe SI f(clé) donne un indice "occupé" alors stocker la clé et son information dans une liste linéaire "accrochée" à la case d'indice i.

Exemple : la clé = la longueur de la chaîne f(ABC)=3 f(BC)=2 f(DEF)=3 Structures de données : typedef struct poste { T clé ; K info ; struct poste* suiv ; } poste ; typedef poste* ptr_poste ;

L'exemple ci-dessus montre l'utilisation d'un tableau des pointeurs vers les postes. Avantages : Moins de place en mémoire statique Gestion est homogène, on ne gère que des listes linéaires : c.à.d. on ne différencie pas le premier élément des autres.   Cette représentation est donc préférable et plus utilisée. BC ABC DEF ABC ABC

Inconvénients : Pointeurs à stocker Gestion des pointeurs SI liste très longue  parcours séquentiel, donc on arrive à l'adressage associatif. Donc il faut bien choisir une fonction de dispersion. Autres avantages : Il n'est pas nécessaire de surdimensionner la table (on pourrait même la sousdimensionner puisque lors d'une collision, l'information est stockée en externe. On ne peut pas y avoir des collisions indirectes.

Interne linéaire SI f(clé) donne un indice "occupé" ALORS essayer (modulo N) les cases i+1, i+2, … jusqu'à une case vide (place de la donnée) ou jusqu'à l'indice de départ (ça signifie qu'il n'y a plus de place).

Inconvénients : Surdimensionnement du tableau Création de collisions indirectes (on fabrique des paquets d'information autour de l'information primaire) Exemple : f(x) = longueur de x AB AB, ABC, DEF,ABCD ABC DEF ABCD Collision indirecte oblige à stocker ABCD dans 5. Avantage : Pas de gestion de pointeurs, donc pas d'information supplémentaire à stocker dans la table.

Interne quadratique SI f(clé) donne un indice "occupé" alors essayer i+12, i+22, i+32 etc (modulo N) jusqu'à une case libre ou jusqu'à N/2 tentatives (avec N choisi comme nombre premier – résultat mathématique important). Cette méthode génère moins de collisions indirectes, car la dispersion est plus grande, les informations ne se stockent pas autour de l'information de départ.   Inconvénient : Surdimensionnement important Avantage : Pas de collisions indirectes

Conclusion Interne quadratique Externe

En principe les méthodes de hachage sont utilisables dans les cas suivants : on doit gérer une collection C, dont les clés appartiennent à un univers U très grand ; la taille probable de C est connue et est relativement petite par rapport au nombre d'éléments de U. Ajout : Pas de réorganisation de la table  assez performant Suppression : externe  mise à jour de pointeurs interne linéaire : pas de restriction Remaque : Il faut pouvoir distinguer une case jamais utilisée (arrêt de la recherche) d'une case ayant été utilisée (continuation de la recherche).