📘 Fiche de cours
L'essentiel du cours
Une table de hachage est une structure de données permettant une recherche, une insertion et une suppression en temps moyen $O(1)$. Elle repose sur une fonction de hachage $h(k)$ qui transforme une clé $k$ en un indice dans un tableau de taille $m$.
- Hachage par division : $h(k) = k \pmod m$.
- Gestion des collisions :
- Chaînage : Chaque case contient une liste chaînée.
- Adressage ouvert : On cherche une autre case libre (Sondage linéaire : $(h(k) + i) \pmod m$).
Méthodes à maîtriser
- Calculer l'indice d'une clé avec une fonction donnée.
- Insérer des éléments dans une table en gérant les collisions par chaînage ou sondage linéaire.
- Calculer le facteur de charge $\alpha = \frac{n}{m}$.
- Évaluer la complexité selon le taux de remplissage.
Exemples corrigés
Soit une table de taille $m=5$ et $h(k) = k \pmod 5$. Insérer 12, 22.
- $h(12) = 12 \pmod 5 = 2$. Case 2 occupée par 12.
- $h(22) = 22 \pmod 5 = 2$. Collision ! Avec sondage linéaire : $(2+1) \pmod 5 = 3$. On place 22 en case 3.
Erreurs fréquentes
- Oublier que l'indice commence à 0.
- Confondre le facteur de charge $\alpha > 1$ (impossible en adressage ouvert).
- Ne pas gérer le cas où la table est pleine en adressage ouvert.