Hash Collisions

Watch hash-table buckets fill, avec separate chaining ou open addressing

À propos de cet outil

Choisissez 4–256 cases, une variante de hachage et une stratégie, puis créez la table. Toute modification des paramètres écarte la table précédente et bloque les insertions jusqu’à sa recréation. Réinitialiser crée une table vide avec les paramètres actuels. Exemple insère douze noms de fruits ; 32 clés utilise un ensemble fixe reproductible pour comparer les configurations.

Les clés distinguent la casse. Les espaces aux extrémités sont retirés, les espaces internes conservés. Les clés vides sont refusées. Limites : 256 unités de code UTF-16 par clé et 1024 clés distinctes. Les doublons ne changent ni entrées ni compteurs.

Le chaînage conserve les clés en collision dans la même case. Le sondage linéaire visite (départ + décalage) mod capacité jusqu’à une case libre ou au doublon, avec retour au début. Une table pleine refuse les nouvelles clés mais reconnaît les doublons. Départ, destination et cases visitées décrivent la dernière opération. Le chaînage compte une visite de case, sans compter les comparaisons dans la liste. La moyenne porte uniquement sur les insertions réussies.

Les variantes traitent les unités UTF-16 JavaScript. FNV-1a utilise XOR puis multiplication modulo 2³² ; djb2 utilise h = 33h + unité. La somme ignore l’ordre et distribue volontairement mal. La variante de type Murmur3 conserve les décalages 0/8/16/24, avec chevauchement des bits pour les unités non ASCII, et une graine zéro. Ce ne sont pas des implémentations UTF-8 par octets des standards FNV ou MurmurHash3, ni des hachages cryptographiques.

Le facteur de charge vaut clés stockées / cases et peut dépasser un avec le chaînage. Les statistiques montrent les cases vides, la chaîne maximale et la moyenne des visites. L’histogramme optionnel groupe les cases par longueur avec une échelle commune. Avec quatre cases et la somme, ab et ba arrivent en case 3. En sondage linéaire, a/e/i/m partent de 1 et occupent 1/2/3/0 après 1/2/3/4 visites ; q est refusée lorsque la table est pleine.

RFC 9923 · FNV; Austin Appleby · MurmurHash3.

Les brouillons bruts, paramètres, ordre des insertions réussies, dernière opération et détails ouverts sont enregistrés localement jusqu’à 100000 caractères sérialisés. Un rechargement reconstruit la table exacte, y compris les cases après retour au début et les compteurs d’insertions réussies. Les anciennes versions ne stockaient pas les entrées pour le rechargement. Les sessions plus grandes conservent la copie précédente et affichent un avertissement d’export ; la navigation interne conserve la session courante. Un fichier invalide conserve la table actuelle. En cas d’avertissement, exportez avant de recharger ou de quitter la page.

La table défile localement. Les longues listes de compartiment défilent séparément pour éviter une ligne démesurée ; toutes les clés restent accessibles. La moyenne d’insertion compte les visites de compartiment, pas les comparaisons dans une chaîne.

Seules les valeurs saisies sont conservées dans ce navigateur. Les résultats calculés et historiques ne sont pas enregistrés.