Dictionnaires et tables de hachage

Clés/valeurs, complexité

Se connecter pour contribuerPublié le · Dernière mise à jour le

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 h:Cleˊs{0,,m1}h : \text{Clés} \to \{0, \dots, m-1\} transforme une clé en un indice dans un tableau de taille mm. 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 O(1)O(1) 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

α=n/m\alpha = n / m (nombre d'éléments / taille du tableau). Quand α\alpha dépasse un seuil (≈ 0,7), on redimensionne (rehashing) le tableau en doublant mm, ce qui amortit le coût.

Complexités

OpérationMoyennePire cas
InsertionO(1)O(1)O(n)O(n)
RechercheO(1)O(1)O(n)O(n)
SuppressionO(1)O(1)O(n)O(n)

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. 1.Programmes et ressources du lycée général et technologiqueÉduscol — Ministère de l'Éducation nationale
  2. 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat)education.gouv.fr
  3. 3.Ressources et programme de NSIÉduscol
  4. 4.Documentation du langage PythonPython Software Foundation
  5. 5.Protection des données et RGPDCNIL

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.

  1. Dernière mise à jour du cours (relecture et enrichissement)
  2. Première publication de la fiche de cours