Structures de données Tables de hachage et graphes Flashcards
quelle est l’utilité et les contraintes de la table de hachage (HashTable)
utilité • Permet d’insérer, supprimer et chercher des éléments en O(1) Contraintes: • Ordre des éléments n’est pas important • Performance dépend de la fonction de hachage
Ce qu’il faut décider lors de la
conception de la table de hachage (HashTable)
• Déterminer la fonction de hachage • Déterminer la taille de la table • Déterminer stratégie de résolution des collisions
différente opération pour la table de hachage (HashTable) et le temps moyen de la comception de celle-ci
Insertion
suppression
recherche
Une bonne conception permet un temps moyen de
O(1) pour l’insertion et la recherche.
qu’est ce que les dimension de la table? et de quoi elle dépend
La dimension de la table est le nombre d’emplacements (« buckets ») disponibles
La dimension dépend de la fonction de hachage et de la stratégie de résolution des conflits
comment déterminer facilement la table de hachage
Une bonne règle du pouce pourrait être:
• Pour une bonne performance, il ne faut pas que le nombre d’éléments
dépasse 75% de la capacité totale de la table
• Donc, la taille du tableau devrait être d’environ 1.3 fois le nombre
maximum de clés qu’elle devra contenir
• Dimension du tableau devrait être un nombre premier
Que se passe-t-il si l’estimation est mauvaise?
• Table trop petite, il faudra éventuellement en créer une plus grande et
« rehasher » tous les éléments
• Table trop grande, on gaspille potentiellement de l’espace
quelle est la fonction de l’hachage et comment choisir la fonction
La fonction de hachage fait l’association
entre la clé et un index dans la table
• Doit-être facile et rapide à calculer • Devrait distribuer les clés de façon la plus uniforme possible • Réduis les risques de collision • Ne dois pas être aléatoire
quelle serait la fonction simple Si les clés sont des entiers?
• h(clé) = clé mod |T|
• Cette fonction distribue uniformément les clés
lorsque les celles-ci sont insérer aléatoirement.
Qu’est-ce qui se passe si la table est de dimension
100 et que toutes les clés sont des multiples de 10?
• En pratique, il est préférable que la taille de la
table soit un nombre premier.
voir exemple chaine de caractèere pour table de hachage
dia 9 a 12
quelles sont les Techniques pour la gestion des collisions
- Par listes chaînées
- Adressage ouvert
- Double hachage
- Etc.
qu’est ce que la Résolution par liste chaînée
Chaque élément du tableau est la tête d’une liste
chaînée
• Lors d’une collision, les éléments sont ajoutés à
la liste
voir ex dia 15 16
quels sont les avantage et inconvénient de la Résolution par liste chaînée
Avantages
traitement simple des collisions
traitement simple des suppressions
• Il suffit d’éliminer l’élément de la liste
Le nombre de données peut dépasser la grandeur de
la table.
Inconvénients:
La liste peut devenir très longue
• De trop longues listes réduisent l’efficacité de la table de hachage
Plus de mémoire à cause des pointeurs
• Particulièrement important lorsque la taille des données est petite
Le pire cas absolu:
•Tous les éléments dans une seule liste
• Causé par une mauvaise fonction de hachage
quel est le principe de la Résolution par adressage ouvert
Principe:
• Tous les éléments sont stockés directement dans la
table
• Lorsqu’il y a une collision, il faut chercher une autre
case disponible
quels sont les avantage et inconvénient de la Résolution par adressage ouvert
Avantages:
• Pas besoin de structures supplémentaires
• Pas besoin d’allouer/libérer de la mémoire lors des
insertions/suppressions
Inconvénients:
• Insertions plus lentes, ça peut être long avant de
trouver un nouvel emplacement
• Table doit être plus grande pour obtenir le même
genre de performance
• La suppression est difficile à gérer