Les tables de dispersions Flashcards
Les tables de dispersions servent notamment à implémenter des …
dictionnaires
Déf : Dictionnaire
- Conteneur d’éléments, non ordonné
- Insertion, suppression, trouver presque toujours en O(1)
Que fait une fonction de hachage ?
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
Déf : Collision
Le même index est calculé pour 2 clé distinctes
Déf : Bonne fonction de hachage
doit disperser ses valeurs d’index le plus uniformément possible dans {0, 1, …, N-1}
De quoi dépend le temps d’exécution d’une fonction de hachage
- dépend seulement de la taille de la clé
- Ne dépend PAS de la taille du tableau
Bon choix de taille d’une table dispersion
Généralement un nombre premier supérieur à l’espace requis par le programme.
Une fonction de hachage est composée
- 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
Pourquoi le hachage polynomial est-il pertinent ?
Obtenir une meilleure dispersion en tenant compte de la position des caractères de la clé dans le calcul du hachage.
Avantages et Désavantages du chaînage externe
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
Principe du chaînage externe
- On utilise un tableau de listes
- Chaque liste contient les clés qui hachent
à la même valeur d’index
(Voir schéma P18)
Comment calcule-t-on le taux d’occupation de la table de dispersion (λ)
λ = n / N
N : taille de la table
n : nombre d’éléments
Dans le cas du hachage externe pourquoi re-hacher dès que taux d’occupation devient plus grand que 1
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.
Le coût général du re-hachage (cas chaînage externe)
Θ(n+N) = Θ(n)
Car n = N+1
Le coût PAR ÉLÉMENT du re-hachage (cas chaînage externe)
O(1)
Adressage Ouvert : Structure de données
- 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