Tables de hachage
#Tables de hachage
Fonctions de hachage, collisions, sondage/chaînage, et complexités moyennes/pires cas.
#Animation interactive
Voici une animation qui illustre le fonctionnement d'une table de hachage avec gestion des collisions par adressage ouvert :
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
Table de hachage initialisée avec 10 emplacements
Étape 1 / 1 | Taille: 10
#Exemple (Python — dictionnaires)
#Exercice : Implémentation d'une table de hachage
Implémentez une table de hachage simple en Python avec gestion des collisions par chaînage.
#Instructions
- Créez une classe
HashTable
avec une taille fixe. - Implémentez une fonction de hachage simple (par exemple, modulo la taille de la table).
- Utilisez des listes pour gérer les collisions (chaînage).
- Implémentez les méthodes
put(key, value)
,get(key)
etremove(key)
.
#Exemple de code
pythonpython
1class HashTable:2 def __init__(self, size=10):3 self.size = size4 self.table = [[] for _ in range(size)]5 6 def _hash(self, key):7 return hash(key) % self.size8 9 def put(self, key, value):10 index = self._hash(key)11 bucket = self.table[index]12 13 # Vérifier si la clé existe déjà14 for i, (k, v) in enumerate(bucket):
Collisions
Inévitables quand l’espace de clés est plus grand que la table; gérées par chaînage (listes) ou sondage (open addressing).