Dictionnaires et tables de hachage
Clés/valeurs, complexité
Dictionnaires et tables de hachage
Définition
Un dictionnaire (ou tableau associatif) associe à chaque clé une valeur. Opérations attendues : insertion, recherche et suppression par clé.
En Python : d = {"alice": 17, "bob": 12} ; accès d["alice"], ajout d["chloé"] = 15, test "bob" in d, suppression del d["bob"].
Table de hachage
Une fonction de hachage transforme une clé en un indice dans un tableau de taille . Une bonne fonction de hachage est rapide à calculer et distribue uniformément les clés.
Le couple (clé, valeur) est rangé dans la case T[h(clé)]. La recherche, l'insertion et la suppression sont alors en en moyenne.
Gestion des collisions
Deux clés distinctes peuvent avoir le même haché : c'est une collision.
Chaînage : chaque case contient une liste des couples ayant ce haché.
class TableHachage:
def __init__(self, m=16):
self.m = m
self.T = [[] for _ in range(m)]
def _h(self, cle):
return hash(cle) % self.m
def ajouter(self, cle, val):
seau = self.T[self._h(cle)]
for i, (c, _) in enumerate(seau):
if c == cle:
seau[i] = (cle, val); return
seau.append((cle, val))
def chercher(self, cle):
for c, v in self.T[self._h(cle)]:
if c == cle: return v
raise KeyError(cle)
Adressage ouvert : on cherche une case libre suivante (sondage linéaire, quadratique, double hachage).
Facteur de charge
(nombre d'éléments / taille du tableau). Quand dépasse un seuil (≈ 0,7), on redimensionne (rehashing) le tableau en doublant , ce qui amortit le coût.
Complexités
| Opération | Moyenne | Pire cas |
|---|---|---|
| Insertion | ||
| Recherche | ||
| Suppression |
Le pire cas survient quand toutes les clés tombent dans le même seau (mauvaise fonction de hachage ou attaque).
Sources et références
Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.
- 1.Programmes et ressources du lycée général et technologique — Éduscol — Ministère de l'Éducation nationale
- 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat) — education.gouv.fr
- 3.Ressources et programme de NSI — Éduscol
- 4.Documentation du langage Python — Python Software Foundation
- 5.Protection des données et RGPD — CNIL
Contenu vérifié et mis à jour le 08/08/2026. Les liens renvoient vers les sites officiels des éditeurs cités.
Historique éditorial
Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.
- — Dernière mise à jour du cours (relecture et enrichissement)
- — Première publication de la fiche de cours