Dictionnaires et tables de hachage
Clés/valeurs, complexité
Rédigé par l'équipe éditoriale de RévisionBac d'après le programme officiel · Mis à jour le · Méthodologie
En clair. Clés/valeurs, complexité
Ce qu'on te demande au bac (Spé NSI) : maîtriser le vocabulaire de « Dictionnaires et tables de hachage », savoir refaire les raisonnements du cours et les réutiliser sur un sujet ou un document nouveau.
Conseil de révision. Lis d'abord cet encadré, puis fais le quiz : si tu bloques, reprends la partie du cours correspondante.
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 10/09/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