Révision, fonction de hachage #
Map par hachage #
-
Pour faire
put(cle, ...)
, je trouve un indice dans la table -
Pour faire plusieurs
put()
avec différentes clés, on essaie de répartir sur plusieurs indices -
Si je dois aller 2 fois dans le même indice: collision
- en cas de collision, on peut utiliser un map naif
Fonctione de hachage #
- L’idée est de trouver un incide à partir de clé
- avec l’indice on va aller dans la table
Utilisable (valide) / pas utilisable (pas valide) #
-
Utilisable: indice utilisé pour le le
put(cle,...)
doit être le même re-caculé plus tard pour leget(cle)
-
Utilisable: on calcule l’indice uniquement avec les informations de la clé.
-
Pas utilisable: on pas toujours le même indice pour la même clé.
-
Pas utilisable: si on calcule l’indice avec du hasard ou encore une information externe à la clé (heure de la journée, nom de l’usager, etc).
Bonnes (efficace) #
- Si la fonction de hachage va placer / distribuer les éléments un peu partout
Mauvaises (pas efficace) #
- Si la fonction retourne toujours le même indice
Avantages / inconvénients du Map Hash #
-
Avantages
- Efficacité: temps constant
O(1)
pourput
/get
- Efficacité: temps constant
-
Inconvénient
- Prend plus espace mémoire que réellement nécessaire