Les tables de dispersions Flashcards

1
Q

Les tables de dispersions servent notamment à implémenter des …

A

dictionnaires

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Déf : Dictionnaire

A
  • Conteneur d’éléments, non ordonné

- Insertion, suppression, trouver presque toujours en O(1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Que fait une fonction de hachage ?

A

Transforme la clé x, identifiant chaque élément, en un index d’un tableau que l’on appelle de dispersion.
L’index doit être entre 0 et la taille N du tableau - 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Déf : Collision

A

Le même index est calculé pour 2 clé distinctes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Déf : Bonne fonction de hachage

A

doit disperser ses valeurs d’index le plus uniformément possible dans {0, 1, …, N-1}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

De quoi dépend le temps d’exécution d’une fonction de hachage

A
  • dépend seulement de la taille de la clé

- Ne dépend PAS de la taille du tableau

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Bon choix de taille d’une table dispersion

A

Généralement un nombre premier supérieur à l’espace requis par le programme.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Une fonction de hachage est composée

A
  • d’un “code de hachage” qui transforme la clé en entier non-signé e
  • d’une “fonction de compression” qui transforme e en index de la table de dispersion
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Pourquoi le hachage polynomial est-il pertinent ?

A

Obtenir une meilleure dispersion en tenant compte de la position des caractères de la clé dans le calcul du hachage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Avantages et Désavantages du chaînage externe

A

Avantages :

  • simplicité de gestion de la table
  • collisions n’ont pas d’effet Domino

Désavantages :
- 1 ptr par clé Þ ajout d’espace
- Nécessité d’allouer dynamiquement la mémoire à chaque
insertion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Principe du chaînage externe

A
  • On utilise un tableau de listes
  • Chaque liste contient les clés qui hachent
    à la même valeur d’index

(Voir schéma P18)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Comment calcule-t-on le taux d’occupation de la table de dispersion (λ)

A

λ = n / N

N : taille de la table
n : nombre d’éléments

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Dans le cas du hachage externe pourquoi re-hacher dès que taux d’occupation devient plus grand que 1

A

Les recherches/suppressions/insertions pour une clé x nécessitent
d’examiner la liste h(x) pour s’avoir si x est dans cette liste.
- Cela nécessite un temps O(λ) pour tout x. (en meilleur cas)

Donc si λ > 1 on est plus en temps constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Le coût général du re-hachage (cas chaînage externe)

A

Θ(n+N) = Θ(n)

Car n = N+1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Le coût PAR ÉLÉMENT du re-hachage (cas chaînage externe)

A

O(1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Adressage Ouvert : Structure de données

A
  • Utiliser directement la table de dispersion pour stocker la valeur.
    -> Pas d’allocation nécessaire à chaque valeur.
  • ## Champ état (Active, Deleted, Empty) en plus de la valeur
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Adressage Ouvert : Calcul de l’index d’une valeur

A
  • hi(x) = ( h(x) + f(i) ) mod N

- f(i) définissant ce que l’on fait après la ième collision. C’est le “sondage”

18
Q

Adressage Ouvert : comment fonctionne trouverPosition(x)

A
effectue la séquence de sondages h0(x), h1(x), h2(x), …
et retourne l’index hi(x) de la première case qui est dans l’état EMPTY ou qui
contient x (dans l’état ACTIVE ou DELETED).
19
Q

Adressage Ouvert : taux d’occupation λ maximum

A

λ = 1/2

Puisque toutes les données doivent être stockées dans la table, celle-ci
devra être plus grande que celle utilisée pour le chaînage externe

20
Q

Principe du sondage linéaire

A

f(i) = i

Alors hi(x) = (h(x) + i) Mod N

21
Q

Problème du sondage linéaire

A
  • Formation de regroupements primaires

- ceux ci provoquent de très longe séquences de sondages

22
Q

Principe du Sondage Quadratique

A

f(i) = i²

Alors hi(x) = (h(x) + i²) Mod N

23
Q

Théorème Sondage Quadratique

A

Si la taille N de la table est un nombre premier, il sera
toujours possible de pouvoir insérer un élément avec le sondage quadratique
lorsqu’il y a ⎡𝑵/𝟐⎤ cases vides ou plus.

24
Q

Le sondage quadratique : Onest assuré de pouvoir insérer une clé si

A
  • Table à moitier vide

- Taille est un nombre premier

25
Q

Preuve du Théorème du Sondage Quadratique

A

Stratégie : Nous allons démontrer que les ⎡𝑵/𝟐⎤ premières positions sondées sont
toutes distinctes.
⇒ (Si c’est le cas, un des sondages trouvera nécessairement une case vide
puisqu’il y a en au moins ⎡𝑵/𝟐⎤ qui sont vides parmi N)

1) Poser 2 sondages le i-ème et j-ième
- avec i < j sans perte de généralité
- et 0 ≤ i,j ≤ ⎡𝑵/𝟐⎤ - 1 = ⎣𝑵/𝟐⎦ (car N est impair)

2) Si les 2 sondages pouvaient être identiques alors
( h(x) + i² ) mod N = ( h(x) + j² ) mod N
⇒ i² mod N = j² mod N
⇒ (j² - i²) mod N = 0
⇒ (j – i) (j + i) mod N = 0
⇒ (j – i) (j + i) doit être un multiple de N

Impossible car N est premier et i,j ≤ ⎣𝑵/𝟐⎦. CQFD

26
Q

Principe du double hachage

A

f(i) = i * h’(x)

hi(x) = ( h(x) + f(i) ) mod N

h’(x) ne doit jamais être = 0

27
Q

Double hachage : fonction fréquente h’(x) =

A

h’(x) = R - c(x) mod R

Où R est un nombre premier plus petit que N

28
Q

Double hachage vs sondage quadratique

A

Pour 2 valeurs hachant au même index, le double hachage ne produit généralement pas la même séquence de sondage subséquente.
⇒ il produit moins de sondage que le sondage quadratique.

Mais cela se fait au prix d’un temps d’exécution plus lent (dû au calcul de h’(x)) par sondage.
⇒ En pratique, il n’y a pas toujours un gain de performance.

29
Q

Une bonne fonction de hachage, en pratique..

A

En fait, il existe toujours plusieurs séquences de clés qui ont la propriété de hacher toutes vers le même index.

  • Donc, toute fonction h possède ce cas le plus défavorable qui produira un temps d’exécution en Θ(n) pour les recherches, insertions et suppressions.
  • Peu importe la méthode utilisée pour résoudre les collisions.
30
Q

Déf : Une famille H de fonctions est dite universelle,,

A

Une famille H de fonctions hachant ses clés dans une table de N indexes est dite universelle si pour toute paire (x,y) de clés distinctes, le NOMBRE de fonctions h de H telle que h(x) = h(y) est au plus |H|/N.

31
Q

La probabilité d’avoir une collision entre deux clés distinctes données est …

A

..au plus de (|H|/N)/|H| = 1/N

Avec une distribution uniforme sur H

32
Q

Pour toute séquence de n clés hachées dans une table de N indexes et pour toute clé test x, la longueur attendue de la liste à l’entrée h(x) :

A
  • est ≤ λ lorsque x n’est pas parmi les n clés,

* est ≤ 1 + λ lorsque x est parmi les n clés.

33
Q

THM (inégalité de Markov):

A

Pour toute variable aléatoire X non négative dont l’espérance E X = μ, et pour tout entier t > 0, on a: Pr(X ≥ t) ≤ μ/t.

34
Q

Quand sommes nous en situation de hachage parfait ?

A

On est en situation de hachage parfait lorsque les recherches de clés
s’effectuent en O(1) en pire cas.

35
Q

Quand le hachage parfait est il réalisable ?

A

1- lorsque la distribution des clés stockées dans la table est statique.

2- en choisissant aléatoirement notre fonction de hachage dans une famille universelle de fonctions de hachage

36
Q

Principe du hachage parfait à 2 niveaux

A
  • Pour n éléments èa stocker.
  • Une table primaire de n alvéoles.
  • Chaque alvéoles pointent sur une table secondaire distincte de nj^2 alvéoles (nj = nombres de clés hachant en j sur la primaire)
37
Q

Hachage parfait à 2 niveaux : THM de la somme des tailles des tables secondaires

A

Si on stocke n clés dans une table de hachage primaire de taille n via une fonction de hachage tirée aléatoirement dans une classe universelle, alors l’espérance de la somme des tailles des tables secondaires sera < 2n

38
Q

Hachage parfait : Probabilité d’obtenir une fonction de hachage h (tirage d’une classe universelle) lorsque la taille de la table = n^2

A

1/2

39
Q

Hachage parfait : Si l’on stocke n clés (distinctes) dans une table de dispersion comprenant N alvéoles via une fonction de hachage choisie aléatoirement dans une classe universelle, le nombre attendu de collisions sera au plus de

A

n(n-1)/(2N)

40
Q

Exemple d’une famille universelle

A

Considérons d’abord que les clés sont des entiers non signés.
- Soit N la taille de la table (pas nécessairement un nombre premier ici).
- Soit P (avec P > N) un nombre premier assez grand, pour que toutes les
clés possibles aient une valeur comprise dans {0, 1, …, P-1}.
- Pour tout nombre a dans {1, …, P-1} et b dans {0,1, …, P-1}, soit ha,b défini
tel que pour toute clé x, on a:
- ha,b(x) = ( (a x + b) mod P ) mod N
- Comme il y a P-1 valeurs possibles pour a et P valeurs possibles pour b,
cette famille H(P,N) possède P(P-1) fonctions de hachage.

41
Q

E Ch(x,y)

A

<= 1/N