| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
En informatique, une table de hachage est une structure de données qui permet une association clé-élément.
On accède à chaque élément de la table via sa clé. Il s'agit d'un tableau ne comportant pas d'ordre (un tableau est indexé par des entiers).
| Sommaire |
Soient
et
deux ensembles
quelconques. On définit l'application
suivante:
Si H est injective, alors H est une table de hachage.
Pourquoi injective?
H doit être injective pour assurer l'unicité de l'accès aux données stockées:
en effet, dans le cas contraire, des éléments différents de
pourraient être accessibles par la même clé.
H n'est pas nécessairement surjective.
L'implémentation la plus courante fait appel à une fonction injective:
L'entier résultant est utilisé pour retrouver
dans un tableau (un n-uplet) de 
Il est souvent très difficile de trouver une fonction de hachage injective
simple de
sur
. Pour pallier à ce défaut, on introduit le mécanisme
suivant:
on choisit une fonction de hachage (non nécessairement injective) qui fait correspondre à la clé un hachage h:
On prend souvent un hachage entier : ![\mathcal{H} = [m,n]\subset \mathbb{N}](/Images/a/a9dfec325b6712a5c89af6961978b222.png)
Cette fonction n'étant pas injective, on introduit un risque de collisions:

c'est à dire qu'à deux clés différentes, on fait correspondre le même hachage. Le terme de collision vient de l'approche naïve: si l'on désire stocker les valeurs v1 et v2 relatives aux clés k1 et k2 dans un tableau, les deux indices h(k1) et h(k2) étant égaux alors v1 et v2 se cognent dans la même cellule.
On choisit donc un mécanisme de résolution des collisions:
L'ensemble doit vérifier:
injective
On a alors la table de hachage suivante:
Le terme francisé de fonction de hash recouvre au moins deux sens:
est
simple a calculer, mais
est un
problème difficile
,
alors on a probablement 
Bien sûr, la distinction entre ces deux sens n'est pas évidente; d'ailleurs, ces deux visions ne s'opposent rien: une somme de
contrôle peut faire une très bonne fonction de hachage pour une table de hachage (puisque si
, alors on a très probablement
).
On se reportera aux articles: Fonction de hash, Cryptologie, Cryptographie.
Ce mécanisme de résolution de collisions utilise une liste (ou un arbre de recherche). Pour chaque hachage, on stocke dans une
liste dédiée tous les éléments de
qui correspondent à ce hachage.


