structures de données ift-10541 abder alikacem les tables de dispersion résumé département...

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

Upload: grosvenor-lagarde

Post on 04-Apr-2015

115 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Structures de donnéesIFT-10541

Abder AlikacemAbder Alikacem

Les tables de dispersionRésumé

Département d’informatique et de génie logiciel

Édition septembre 2009

! +

Page 2: 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

Synthèse

• L’adressage associatif• Tables de dispersion• Fonctions de dispersion• Résolution de conflits• Listes de collisions

espace d’adressage virtuel

espace d’adressage réel

Page 3: 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

• 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

Page 4: 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

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

Synthèse

Page 5: 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

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

Page 6: 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

Problème : listes de collisions

Regroupement des listes de collisions

• problème de l’adressage ouvert !!!• regroupement primaire• regroupement secondaire

Page 7: 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

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 :

Page 8: 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

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 :

Page 9: 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

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 :

Page 10: 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

• 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 (1)

Page 11: 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

• 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

Solutions (2)

Page 12: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

      0S      1

0

00

7

8

9

10

Q      0

      0      0

00

Y      0

     

G      0

       0

Page 13: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

      0S      1

0

00

7

8

9

10

Q      0

      0      0

00

Y      0

     

G      1

       0

Page 14: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

      0S      1

0

00

7

8

9

10

Q      1

      0      0

00

Y      0

     

G      1

       0

Page 15: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

      0S      1

0

00

7

8

9

10

Q      1

      0      0

00

Y      0

     

G      1

R    0

Page 16: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

      0S      1

0

00

7

8

9

10

Q      1

      0      0

00

Y      0

     

G      1

R    0

Page 17: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

    0      0

00

Y      0

     

G      1

R    0

Page 18: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

    0      0

00

Y      0

     

G      1

R    0

Page 19: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

S    0      0

00

Y      0

     

G      1

R    0

Page 20: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

S    0      0

00

Y      0

     

G      1

R    0

Page 21: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

S    0      0

00

Y      0

     

G      1

R    0

Page 22: 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

Exemple : « pass bit »

• 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

0

1

2

3

4

5

6

M     0

info pass bit

Z    0S      1

0

00

7

8

9

10

Q      1

S    0      0

00

Y      0

     

G      1

R    0

Page 23: 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

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

Page 24: 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

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.

Page 25: 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

Exemple

{27, "bleu"}

{18, "blanc"}

{29, "rouge"}

{28, "noir"}

{39, "vert"}

{13, "gris"}

{16, "mauve"}

{42, "cyan"}

{17, "rose"}

012345678910

Fichier d'index = Table de dispersion

0

Clé LienI LienE

29 -1 2

18 10 1

28 9 3

13 -1 5

27 8 0

16 -1 6

39 4 4

42 3 7

17 -1 8

1

2

3

4

5

6

7

8

9

10

Fichier principal

Page 26: 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

Résumé des complexités

Recherche Insertion Retrait

Méthode Séquentielle

O(N/2) O(1) O(N)

Dichotomie O(logN) O(N) O(N)

Arbre binaire de recherche

O(logN) O(logN) O(logN)

"Haching" (dispersion)

O(1) O(1) O(1)

Complexité en moyenne

Page 27: 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

Résumé des complexités (suite)

Complexité au pire

Recherche Insertion Retrait

Méthode Séquentielle

O(N) O(1) O(N)

Dichotomie O(logN) O(N) O(N)

Arbres binaires

O(N) O(N) O(N)

"Hashing"(dispersion)

O(N) O(N) O(N)