La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Structures de données IFT-10541 Abder Alikacem Les tables de dispersion Résumé Département dinformatique et de génie logiciel Édition septembre 2009."— Transcription de la présentation:

1 Structures de données IFT Abder Alikacem Les tables de dispersion Résumé Département dinformatique et de génie logiciel Édition septembre 2009

2 Synthèse Ladressage associatif Tables de dispersion Fonctions de dispersion Résolution de conflits Listes de collisions espace dadressage virtuel espace dadressage réel

3 Ladressage associatif Placer une information dans une structure en fonction d'une partie de cette information: la clé de recherche. 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 Adressage ouvert… Synthèse

4 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) Synthèse

5 Problème : listes de collisions Structure darbre : 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

6 Problème : listes de collisions Regroupement des listes de collisions problème de ladressage ouvert !!! regroupement primaire regroupement secondaire

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

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

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

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

11 Connaître la fin des listes de collisions : utilisation dun « pass bit » à 1 lorsque lélément nest pas le dernier à 0 sinon Solutions (2)

12 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R M 0 info pass bit 0 S Q Y 0 G 0 0

13 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, M 0 info pass bit 0 S Q Y 0 G 1 0

14 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, M 0 info pass bit 0 S Q Y 0 G 1 0

15 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, M 0 info pass bit 0 S Q Y 0 G 1 R 0

16 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z M 0 info pass bit 0 S Q Y 0 G 1 R 0

17 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z M 0 info pass bit Z 0 S Q Y 0 G 1 R 0

18 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z : S M 0 info pass bit Z 0 S Q Y 0 G 1 R 0

19 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z : S M 0 info pass bit Z 0 S Q 1 S Y 0 G 1 R 0

20 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z : S 19 7 rechercher : P M 0 info pass bit Z 0 S Q 1 S Y 0 G 1 R 0

21 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z : S 19 7 rechercher : P 16 4 rechercher : R 18 6, 5, M 0 info pass bit Z 0 S Q 1 S Y 0 G 1 R 0

22 Exemple : « pass bit » i i - p(el) si i < 0 alors i i + m p(el) = 1 pour tout élément el + : M 13, Y 25, G 7, Q 17 + : R 18 6, 5, 4 + : Z : S 19 7 rechercher : P 16 4 rechercher : R 18 6, 5, 4 rechercher : H M 0 info pass bit Z 0 S Q 1 S Y 0 G 1 R 0

23 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

24 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.

25 Exemple {27, "bleu"} {18, "blanc"} {29, "rouge"} {28, "noir"} {39, "vert"} {13, "gris"} {16, "mauve"} {42, "cyan"} {17, "rose"} Fichier d'index = Table de dispersion 0 Clé LienI LienE Fichier principal

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

27 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)


Télécharger ppt "Structures de données IFT-10541 Abder Alikacem Les tables de dispersion Résumé Département dinformatique et de génie logiciel Édition septembre 2009."

Présentations similaires


Annonces Google