web-dev-qa-db-fra.com

Quelle est la différence entre un hachage et un dictionnaire?

Quelle est la différence entre Hash et Dictionary?

Issu d'un contexte de script, je pense qu'ils sont similaires, mais je voulais découvrir les différences exactes. La recherche sur Google ne m'a pas beaucoup aidé.

48
Sairam

Hash est une structure de données extrêmement mal nommée où le programmeur a confondu l'interface avec l'implémentation (et ​​était trop paresseux pour écrire le nom complet, c'est-à-dire HashTable au lieu de recourir à une abréviation, Hash).

Dictionary est le nom "correct" de l'interface (= le ADT ), c'est-à-dire un conteneur associatif qui mappe des clés (généralement uniques) à des valeurs (pas nécessairement uniques).

Une table de hachage est ne implémentation possible d'un tel dictionnaire qui fournit de très bonnes caractéristiques d'accès (en termes d'exécution) et est donc souvent l'implémentation par défaut.

Une telle implémentation a deux propriétés importantes:

  1. les clés doivent être hashable et égalité comparable.
  2. les entrées n'apparaissent dans aucun ordre particulier dans le dictionnaire.

(Pour qu'une clé soit hachable, cela signifie que nous pouvons calculer une valeur numérique à partir d'une clé qui est ensuite utilisée comme index dans un tableau.)

Il existe des implémentations alternatives de la structure de données du dictionnaire qui imposent un ordre sur les clés - cela est souvent appelé un dictionnaire trié (et est généralement implémenté en termes d'arbre de recherche, bien qu'il existe d'autres implémentations efficaces).


Pour résumer: a dictionnaire est un ADT qui mappe les clés aux valeurs. Il existe plusieurs implémentations possibles de cet ADT, dont la table de hachage en est une. Hash est un terme impropre, mais dans son contexte, il équivaut à un dictionnaire implémenté en termes de table de hachage.

94
Konrad Rudolph

"Dictionnaire" est le nom du concept. Une table de hachage est une implémentation possible.

8
dan_waterworth

Un dictionnaire est le terme collectif donné pour toute implémentation de structure de données utilisée pour des recherches/insertions rapides. Ceci peut être réalisé/implémenté en utilisant une variété de structures de données comme la table de hachage, les listes de sauts, l'arbre rb, etc. Une table de hachage est une structure de données spécifique utile à de nombreuses fins, y compris la mise en œuvre d'un dictionnaire.

7
aufather

Un dictionnaire utilise une clé pour référencer la valeur directement à l'intérieur d'un tableau associatif.

c'est à dire (KEY => VALUE)

Un hachage est plus souvent décrit comme table de hachage qui utilise une fonction de hachage pour calculer la position en mémoire (ou plus facilement un tableau) où la valeur sera. Le hachage prendra la clé en entrée et donnera une valeur en sortie. Ensuite, branchez cette valeur dans la mémoire ou l'index du tableau.

c'est à dire KEY => HASH FUNCTION => VALUE

Je suppose que l'un est direct tandis que l'autre ne l'est pas. Les fonctions de hachage peuvent ne pas être parfaites non plus et peuvent parfois fournir un index référençant la mauvaise valeur. Mais cela peut être corrigé.

Meilleur endroit où regarder: Wikipedia ( tableau associatif et table de hachage )

5
Ross