Il semble être de connaissance commune que les tables de hachage peut atteindre O(1) mais qui n'a jamais fait sens pour moi. Quelqu'un peut-il expliquer cela?
A. La valeur est un entier plus petit que la taille de la table de hachage, de sorte que la valeur est sa propre hash, donc il n'y a pas de table de hachage, mais si il n'y avait, il serait O(1), et d'être inefficace.
B. Vous devez calculer la valeur de hachage, de sorte que la commande est O(n) pour la taille des données à regardé. La recherche peut être O(1) après O(n) de travail, mais qui vient encore de O(n) dans mes yeux.
Et à moins d'avoir un idéal de hachage ou une grande table de hachage, il ya probablement plusieurs articles par seau de sorte qu'il devient une petite recherche linéaire à un certain point, de toute façon.
Je pense que les tables de hachage sont géniaux, mais je n'ai pas l'O(1) désignation, sauf si c'est juste censé être théorique.
La page Wikipedia de l'article pour les tables de hachage systématiquement les références de la constante recherche de temps, et ignore totalement le coût de la fonction de hachage. Est-ce vraiment une bonne idée?
Edit:
Pour résumer ce que j'ai appris:
C'est techniquement vrai, car la fonction de hachage n'est pas nécessaire d'utiliser toutes les informations sur la clé et donc, peuvent être des constantes de temps, et parce qu'un assez grand tableau peut apporter des collisions à proximité de la constante de temps.
Il est vrai, dans la pratique car au fil du temps, il fonctionne aussi longtemps que la fonction de hachage et de la taille de la table sont choisis pour minimiser les collisions, même si cela signifie souvent pas à l'aide d'une constante de temps de la fonction de hash.