IFT-10541 Structures de données Abder Alikacem Département dinformatique et de génie logiciel.

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 : Introduction
Tris.
Chap. 4 Recherche en Table
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
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.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Chap. 1 Structures séquentielles : listes linéaires
8. Les tableaux P. Costamagna – ISEN N1.
Initiation à la programmation et algorithmique cours 3
Utilisation des tableaux
ALGORITHMES RECURSIFS
Structures de données linéaires
Chapitre V. Tables de hachage
Les structures de données arborescentes
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Methode de Tri efficace
Méthode des k plus proches voisins
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Structures de données IFT-2000
Sections sélectionnées du Chapitre 11
Allocation de mémoire Allocation de mémoire.
FICHIERS : Définition : Algorithme général:
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
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 Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000
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
Structures de données IFT-2000
Structures de données IFT-10541
Présentation Structures de Données et TDA
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.

Efficacité des algorithmes
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Les Algorithmes de Tri Introduction Tri par Sélection
Table de hachage Introduction Notion de clé Fonction de hachage
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.

Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000

1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Structures de données avancées : Hachage dynamique
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
David Rivreau Table de hachage David Rivreau
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
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.
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 : Principales structures de données
Architecture et technologie des ordinateurs II
Structures de données IFT-2000
Tables de hachage Tables de hachage: Idée et exemples
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:

IFT Structures de données Abder Alikacem Département dinformatique et de génie logiciel

Synthèse sur les tables de dispersion

Hachage et adressage calculé La méthode du h-code constitue une alternative aux structures d'arbre lorsque : 1. il n'est pas nécessaire de gérer dynamiquement les données; 2. il n'est pas important de traiter les cas les plus défavorables avec un maximum de performances; 3. il n'est pas demandé d'effectuer d'autres opérations que la recherche, sur les données une fois structurées.

Les tables de dispersion Tables de dispersion Replier lespace des données Accès par calcul: h, fonctions de dispersion h nest pas injective: collisions! Fonctions de dispersion : h facile (rapide) à calculer Dispersion uniforme vers lespace dadressage réel Accepter les premières collisions lorsque le facteur de charge=70% espace dadressage virtuel espace dadressage réel

Les tables de dispersion Tables de dispersion Replier lespace des données Accès par calcul: h, fonctions de dispersion h nest pas injective: collisions! Fonctions de dispersion : h facile (rapide) à calculer Dispersion uniforme vers lespace dadressage réel Accepter les premières collisions lorsque le facteur de charge=70% Résolution de conflits Chaînage externe (avec ou sans « buckets »). Désavantages : Espace mémoire requis Temps daccès espace dadressage virtuel espace dadressage réel

le champ info contiendra : la clé qui identifie lélément référencé car il faut savoir de quel élément il sagit (lettre, nom) car la table est en mémoire principale un pointeur vers lélément stocké P 2 K 2 S 1 info card ptr B 2 I 1 E Chaîne externe

Techniques des bacs « buckets » Idée : faire partager 1 ptr par plusieurs éléments utilisation dun tampon (bac) taille du tampon = taille dun secteur disque temps daccès aux collisions info card info card 0 0 } bac } }

Adressage ouvert Si les collisions sont concentrées aux mêmes endroits : on perd de lespace dans la table temps d accès à linformation Pourquoi aller à lextérieur de la table sil reste de la place dans la table? Solution #1: chaînage dans la table

Objet Lien Dispo 29, "rouge" -1 29, "rouge" -1 18, "blanc" 10 18, "blanc" 10 28, "noir" 9 28, "noir" 9 13, "gris" -1 13, "gris" -1 27, "bleu" 8 27, "bleu" 8 16, "mauve" -1 16, "mauve" -1 39, "vert" 4 39, "vert" 4 42, "cyan" 3 42, "cyan" 3 17, "mauve" -1 17, "mauve" -1 Chaînage dans la table

Adressage ouvert Si les collisions sont concentrées aux mêmes endroits : on perd de lespace dans la table temps d accès à linformation Pourquoi aller à lextérieur de la table sil reste de la place dans la table? Solution #1: chaînage dans la table Solution#2: résolution des collisions par calcul, redispersion

Redispersion En cas de collision, il faut trouver une case vide en se basant sur une formule dindexation. Exemple, si h est la fonction de hachage et el une clé donnée : i h(el) si table[i] est vide alors FAUX /* absent */ sinonsi table[i] = el alors VRAI /* présent */ sinon /* redispersion */ i i - p(el) si i < 0 alors i i + m La fonction p est appelée fonction de redispersion

Fonctions de redispersion i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el fonction de dispersion nest plus uniforme! Le choix de la fonction p comme constante nest pas intéressant! Regroupement primaire: toutes les listes de collisions se chevauchent. Définition: une liste de collision est le parcours rattaché à une entrée pour placer/chercher une clé M 1 info card S Q Y 1 G 1 R 1 Z 1 S 1 P 1

Méthode du résidu quadratique Méthode du résidu quadratique : h(el) = i (h est la fonction de hachage, el la clé) Fonction de redispersion: p(el) = (-1) j j/2 2 (où j est litération) i i + p(el) si i < 0 alors tantque i < 0 alors i i + m sinon tantque i > m-1 alors i i - m Idée : sauter par-dessus des blocs de cases occupées Regroupement secondaire: les listes de collisions Pour une même entrée se chevauchent. : troncature M 1 info card S Q Y 1 G 1 R 1 Z 1 S 1 P 1 4e4e 5e5e

Redispersion pseudo-aléatoire (0,10,2,3,1,6,7,5,4,9,8) M 1 info card S Q Y 1 G 1 R 1 Z 1 S 1 P 1 j=4 i =5 p(el) = r 3 =3 i (i + p(el))%m=8 Lindice 8 de la table est vide: fin des itérations. Regroupement secondaire: les listes de collisions pour une même entrée se chevauchent.

Adressage ouvert Si les collisions sont concentrées aux mêmes endroits : on perd de lespace dans la table temps d accès à linformation Pourquoi aller à lextérieur de la table sil reste de la place dans la table? Solution #1: chaînage dans la table Solution#2: résolution des collisions par calcul, redispersion Fonctions de redispersion constantes Problème du regroupement primaire: partage des listes de collisions Fonctions de redispersion quadratiques, aléatoires.. Le regroupement secondaire: h(el 1 ) = h(el 2 ) 1 même chaîne! départager les chaînes de collisions de el 1 et el 2 (r 0 = 0, r 1, r 2, r 3, r 4, r 5,..., r m-1 ) une permutation aléatoire des adresses de la table propre à lélément recherché (ou à insérer). p(el i ) = r j-1,el i (où j est litération et el i = « seed ») « double hashing » h 1 (el 1 ) = i (= h 1 (el 2 )) h 2 (el 1 ) = k ( h 2 (el 2 )) p(el 1 ) = (j-1)*k (où j est litération)

Double hachage Méthode du « double hashing »: on utilise deux fonctions de hachage, h1 et h2. Soit 2 clés el 1 et el 2 : h 1 (el 1 ) = i (= h 1 (el 2 ) si collision) h 2 (el 1 ) = k ( h 2 (el 2 )) p(el 1 ) = (j-1)*k (où j est litération pour trouver une place vacante dans la table de dispersion) i (i + p(el))%m

Questions Pourquoi si h 1 (el 1 ) = h 1 (el 2 ) et h 2 (el 1 ) h 2 (el 2 ) ne pas changer de fonction de dispersion et utiliser directement h 2 comme valeur d indice pour la table ? Est-ce que les chaînes de collisions sont entièrement disjointes (peu importe la méthode) ? Comment choisir m (la taille de la table de dispersion) étant donné n (le nombre de données)? À partir de quel facteur de charge dune table de dispersion, quon commencera à tolérer les collisions ?

Synthèse sur les tables de dispersion Critère de choix de la fonction de dispersion analyser l'environnement dans lequel s'appliquera la fonction; trouver une fonction qui se calcule facilement et rapidement; s'assurer que la fonction distribue les clés le plus uniformément possible sur l'espace des possibilités dans le fichier de données (qui élimine tout risque de collision); idéalement, choisir une fonction qui élimine tout risque de collision. Pour réduire le nombre de collisions, il faut: 1) trouver une meilleure fonction de dispersement pour la situation; 2) diminuer le facteur de compression de la table.

collisions vs espace mémoire espace mémoire collisions Le nombre de collisions augmente généralement très vite lorsque fc (le facteur de compression) devient supérieur à 90%. Synthèse sur les tables de dispersion

Comment choisir la fonction de dispersion? par analyse du domaine dapplication introduction dun facteur aléatoire connu taille de la table sera un nombre premier Comment lévaluer ? Empiriquement !!! tests sur des échantillons représentatifs on ajuste les paramètres : h(), m, p() Synthèse sur les tables de dispersion

Métrique Nous allons introduirons une méthode générale pour mesurer la qualité dune méthode de dispersion. La procédure dépend de plusieurs facteurs. L'un des facteurs importants est le rapport du nombre n de clés dans K (qui n'est autre que le nombre d'enregistrements dans T) au nombre m d'adresses calculées en L. Ce rapport = n/m constitue le facteur de charge. Synthèse sur les tables de dispersion

L'efficacité d'une fonction de hachage dans le cas du traitement d'une collision est mesurée par le nombre de sondages (comparaisons de clés) nécessaires pour trouver l'adresse d'un enregistrement avec une clé donnée k. L'efficacité dépend principalement du facteur de charge, et nous nous intéresserons à deux grandeurs en particulier : S( ) = nombre de sondages en cas de succès; U( ) = nombre de sondages en cas d'échec. Métrique Synthèse sur les tables de dispersion

Exemple Soit T, un tableau à 11 adresses T[1], T[2],..., T[11] et 8 enregistrements A, B, C, D, E, X, Y et Z, avec les adresses calculées suivantes : Enregistrements: ABCDEXYZ H(k) : Supposons que les 8 enregistrements aient été insérés dans le tableau T dans l'ordre indiqué précédemment. Le tableau T présentera alors l'aspect suivant : Tableau T :X CZ AE Y_ B_ _D Adresse : Synthèse sur les tables de dispersion

Enregistrements: ABCDEXYZ H(k) : Tableau T :X CZ AE Y_ B_ _D Adresse : Le nombre moyen de sondages S pour une recherche couronnée de succès est : S = = 13 = Le nombre moyen de sondages U pour une recherche infructueuse est : U = = 40 = Synthèse sur les tables de dispersion

Résumé des complexités RechercheInsertionRetrait Méthode Séquentielle O(N/2)O(1)O(N/2) DichotomieO(logN)O(N/2) Arbre binaire de recherche O(logN) "Haching" (dispersion) O(1) Complexité en moyenne

Résumé des complexités (suite) Complexité au pire RechercheInsertionRetrait Méthode Séquentielle O(N)O(1)O(N) DichotomieO(logN)O(N) Arbres binaires O(N) "Hashing" (dispersion) O(N)

Soit un tableau T de 12 éléments (d'indice de 1 à 12), et soit des enregistrements de clé A, B, C, D, E, F, G et H avec les adresses calculées, par une fonction de hachage donné, suivantes : enregistrement :A B C D E F G H H(k): a) En supposant que le tableau est remplie par ces enregistrements dans un ordre de gauche à droite, et que la technique de résolution des collisions est celle de ladressage ouvert, donner son aspect (graphique) une fois que tous les enregistrements soient insérés. b) Estimer le nombre moyen S de sondage pour une recherche couronnée de succès. c) Estimer le nombre de sondages moyen U pour une recherche infructueuse. Exercices

Exemple dans les notes de cours pages : #define MAX 11 typedef struct { TypeElinfo; intlink; }Element; typedef Element* TableauT; /* le TABLEAU T */ typedef int Table[MAX];/* la TABLE*/ Donnez limplantation en C de la fonction qui permet la recherche dun nouvel élément dans les deux structures ci-haut et dont le prototype obligatoire est : Bool rechercheElement(Table LaTable, TableauT LeTableau, TypeEl info, int AVAIL); Vous pouvez supposer comme connue (déjà écrite) une fonction de hachage H dont le prototype est : int H (TypeEl K);