Aller au contenu principal

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

  1. Créez une classe HashTable avec une taille fixe.
  2. Implémentez une fonction de hachage simple (par exemple, modulo la taille de la table).
  3. Utilisez des listes pour gérer les collisions (chaînage).
  4. Implémentez les méthodes put(key, value), get(key) et remove(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).