Structures de données IFT-10541

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
Structures de données avancées : Principales structures de données
Chap. 4 Recherche en Table
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.
Le Modèle Logique de Données
Witold Litwin Structures physiques Witold Litwin
Chap. 1 Structures séquentielles : listes linéaires
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Structures de données linéaires
Chapitre V. Tables de hachage
Les structures de données arborescentes
Les algorithmes: complexité et notation asymptotique
Methode de Tri efficace
II. Chaînage, SDD séquentielles
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Structures de données IFT-2000
Sections sélectionnées du Chapitre 11
1.Un rang de données multicolores 2. Deux permutations des n premiers entiers 3. b permutations des k premiers entiers 4. Choix de n points dans [0,1]
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
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 Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
8 Organisations unidimentionnelles : indexage et hachage
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.
Veuillez trouver ci-joint
IFT Structures de données Abder Alikacem Département dinformatique et de génie logiciel.

Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.
Structures de données IFT-2000
Exemple : (fichier “ automobile ”)
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000
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

Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
David Rivreau Table de hachage David Rivreau
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
II. Chaînage, SDD séquentielles
Gestion de Fichiers Hachage (suite et fin). 2 Plan du cours d’aujourd’hui Utilisation des “buckets” Effacements dans des fichiers hachés Autres méthodes.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Principales structures de données
Structures de données IFT-2000
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
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.
Ali walid A-2002 Plan: Fichier d’organisation séquentielle indexée (index statique)... 1 – Introduction 2 - La technique de l’accès indexé : 2 – 1 - Les.
Transcription de la présentation:

Structures de données IFT-10541 Abder Alikacem Les tables de dispersion Résumé Édition septembre 2009 Département d’informatique et de génie logiciel

Synthèse L’adressage associatif Tables de dispersion espace d’adressage virtuel espace d’adressage réel L’adressage associatif Tables de dispersion Fonctions de dispersion Résolution de conflits Listes de collisions

Synthèse Tables de dispersion L’adressage associatif Placer une information dans une structure en fonction d'une partie de cette information: la clé de recherche . Tables de dispersion Replier l’espace des données Accès par calcul: h, fonctions de dispersion h n’est pas injective: collisions! Fonctions de dispersion : h facile (rapide) à calculer Dispersion uniforme vers l’espace d’adressage 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 d’accès Adressage ouvert…

Synthèse Si les collisions sont concentrées aux mêmes endroits : on perd de l’espace dans la table temps d ’accès à l’information Pourquoi aller à l’extérieur de la table s’il 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(el1) = h(el2)  1 même chaîne! départager les chaînes de collisions de el1 et el2 (r0 = 0, r1, r2, r3, r4, r5, ..., rm-1) une permutation aléatoire des adresses de la table propre à l’élément recherché (ou à insérer). p(eli) = rj-1,eli (où j est l’itération et eli = « seed ») « double hashing » h1(el1) = i (= h1(el2)) h2(el1) = k (≠ h2(el2)) p(el1) = (j-1)*k (où j est l’itération)

Problème : listes de collisions Structure d’arbre : O(log n) pour la recherche et les mises à jour (incluant rebalancements) Table de dispersion : de O(1) à O(n) pour la recherche dépend de la longueur des listes de collisions de la charge (densité) de la table de la fonction de dispersion de la politique de prise en compte des collisions des regroupements de listes de collisions

Problème : listes de collisions Regroupement des listes de collisions problème de l’adressage ouvert !!! regroupement primaire regroupement secondaire

Solutions (1) Maintenir les listes de collisions triées : par ordre des clés par ordre de fréquence d’accès Quels en sont les problèmes pour : le chaînage externe : le chaînage par « buckets » : l’adressage ouvert :

Solutions (1) Maintenir les listes de collisions triées : par ordre des clés par ordre de fréquence d’accès Quels en sont les problèmes pour : le chaînage externe : insertions + longues le chaînage par «buckets» : l’adressage ouvert :

Solutions (1) Maintenir les listes de collisions triées : par ordre des clés par ordre de fréquence d’accès Quels en sont les problèmes pour : le chaînage externe : insertions + longues le chaînage par « buckets » : réorganisation de plusieurs (?) secteurs l’adressage ouvert :

Solutions (1) Maintenir les listes de collisions triées : par ordre des clés par ordre de fréquence d’accès Quels en sont les problèmes pour : le chaînage externe : insertions + longues le chaînage par « buckets » : réorganisation de plusieurs (?) secteurs l’adressage ouvert : effet Domino

Solutions (2) Connaître la fin des listes de collisions : utilisation d’un « pass bit » à 1 lorsque l’élément n’est pas le dernier à 0 sinon

Exemple : « pass bit » M 0 Y 0 0 0 S 1 Q 0 G 0 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6 M     0 Y      0       0 7 8 9 10        0       S      1 Q      0 G      0       0       0

Exemple : « pass bit » M 0 Y 0 0 0 S 1 Q 0 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5 M     0 Y      0       0 7 8 9 10        0       S      1 Q      0 G      1       0       0

Exemple : « pass bit » M 0 Y 0 0 0 S 1 Q 1 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 M     0 Y      0       0 7 8 9 10        0       S      1 Q      1 G      1       0       0

Exemple : « pass bit » M 0 Y 0 0 R 0 S 1 Q 1 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 M     0 Y      0       0 7 8 9 10 R    0       S      1 Q      1 G      1       0       0

Exemple : « pass bit » M 0 Y 0 0 R 0 S 1 Q 1 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 M     0 Y      0       0 7 8 9 10 R    0       S      1 Q      1 G      1       0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1     0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 + : S19  7 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1     0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 S 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 + : S19  7 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1 S    0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 S 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 + : S19  7 rechercher : P16  4 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1 S    0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 S 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 + : S19  7 rechercher : P16  4 rechercher : R18  6, 5, 4 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1 S    0       0

Exemple : « pass bit » M 0 Y 0 Z 0 R 0 S 1 Q 1 G 1 S 0 0 i  i - p(el) info pass bit 1 2 3 4 5 6 i  i - p(el) si i < 0 alors i  i + m p(el) = 1 pour tout élément el + : M13, Y25, G7, Q17 + : R18  6, 5, 4 + : Z26  3 + : S19  7 rechercher : P16  4 rechercher : R18  6, 5, 4 rechercher : H8  7 M     0 Y      0 Z    0 7 8 9 10 R    0       S      1 Q      1 G      1 S    0       0

Opérations Recherche O(1) si collisions bien gérées Insertion recherche + gestion des collisions : O(recherche) Enlèvement (chaînage externe) listes de collisions externes gestion de listes chaînées gestion de tableaux d’éléments Enlèvement (adressage ouvert) listes de collisions entremêlées  on ne peut pas ôter les éléments de la table + bit de présence/absence + reconstruction de la table de dispersion

Index et tables de dispersion Idée générale Deux fichiers sont utilisés. Le premier contient la table de dispersion qui donne la relation entre le résultat de la fonction de dispersement et la position des enregistrements dans le fichier. Ce fichier est appelé un index. Le deuxième renferme la base de données, ordonnée de façon logique.

Fichier d'index = Table de dispersion Exemple Fichier d'index = Table de dispersion Fichier principal Clé LienI LienE {27, "bleu"} {18, "blanc"} {29, "rouge"} {28, "noir"} {39, "vert"} {13, "gris"} {16, "mauve"} {42, "cyan"} {17, "rose"} 1 2 3 4 5 6 7 8 9 10 1 13 -1 5 2 3 17 -1 8 4 42 3 7 5 27 8 0 28 9 3 6 18 10 1 7 8 16 -1 6 39 4 4 9 29 -1 2 10

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

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