2009-02-03 2 views
14

После обучения тому, как создать хеш-таблицу в классе, я не понимаю, когда данные хэширования были бы полезны. Мне кажется, что все хеширование - это хранение информации в полуслучайных позициях в массиве. Я хочу знать, как любой из данных может быть полезен после его сохранения.Какова цель в хэш-информации?

Мой вопрос: какие примеры, когда хеширующая информация полезна? Как данные извлекаются любым организованным образом? Кажется, он помещен в произвольные позиции, где было бы трудно получить.

ответ

20

хэширования может быть использована для многих целей:

  1. Он может быть использован для сравнения больших объемов данных. Вы создаете хэши для данных, храните хеши, а позже, если вы хотите сравнить данные, вы просто сравниваете хеши.

  2. Хэши могут использоваться для индексации данных. Они могут использоваться в хэш-таблицах для указания правильной строки. Если вы хотите быстро найти запись, вы вычисляете хэш данных и напрямую переходите к записи, на которую указывает соответствующая запись хеширования. (Предполагается, что у вас есть отсортированный список хэшей, указывающих на фактические записи)

  3. Они могут использоваться в криптографических приложениях, таких как цифровые подписи.

  4. Хеширование может использоваться для создания, казалось бы, случайных строк.

Вот применения хэш-функций, википедия перечисляет:

  1. Finding duplicate records
  2. Finding similar records
  3. Finding similar substrings
  4. Geometric hashing

Теперь в отношении таблицы хеш-таблицы, обратите внимание:

Если вы используете хеш-таблицу, хеши в таблице должны быть отсортированы. Если нет, вам нужно будет создать индекс в столбце hash. Некоторые реализации хранят хэш отдельно в порядке сортировки и указывают на исходную запись.

Если кто-то хранит хеши в полуслучайном порядке, это должно быть либо из-за вышеуказанных причин, либо потому, что они просто хотят хранить дайджест сообщения информации для сравнения, поиска дубликатов и т. Д., А не как индекс к данным.

+0

# 1) Если вы посмотрите на некоторые планы запросов в SQL Server, вы увидите, что хеширование очень важно для запросов, где недостаточно индексирования для покрытия ваших столбцов. –

+0

Дэйв, спасибо, что добавил. – Niyaz

+0

Я считаю, что это может быть использовано для получения дополнительной помощи http://techieme.in/hashing-in-detail-part-one – dharam

0

Существует несколько типичных причин хэш-данных. В примере, который вы ссылаетесь, вы будете хэш-данные и использовать это как ключ для извлечения фактического значения хешируемого элемента. Хешированные данные часто упоминаются как ключ, и он ссылается на ведро, где может быть найдено фактическое, не хешированное значение.

Другой типичной причиной является создание подписи хешированного значения, чтобы вы могли проверить, было ли значение изменено кем-то другим. Так как обычно, в зависимости от используемого алгоритма, для хэша двух элементов используется одно значение, вы можете перефразировать значение и сравнить его с сохраненным значением хэша, чтобы проверить, остается ли этот элемент тем же.

11

alt text

Одним из основных видов использования созданных в классе хэш-таблиц, когда вам нужно быстро O (1) раз подстановок. У вас будет два компонента, ключи и значения.

Хеш-функция преобразует ключ в хэш. Этот хэш - это число, и, в частности, это индекс данных в массиве.

Итак, когда вам нужно найти репутацию Agscala в хеш-таблице, и вы использовали свое имя пользователя в качестве ключа, для поиска и поиска нужного значения времени почти нет времени. Он просто повторно хеширует ваше имя пользователя и альт, есть индекс данных, которые вы искали. Вам не нужно было перебирать весь массив, ища это конкретное значение.

Для некоторых ссылок страница Википедии на Hash tables довольно хороша.

0

Хеширование - это метод, полезный для быстрого поиска ключей. Это позволяет более эффективно находить значение, а не сканировать список от начала до конца.

0

Вы когда-нибудь использовали словарь или набор? Они обычно реализуются с точки зрения хэш-таблицы, потому что значение, связанное с ключом, можно найти быстро.

{ 
'WA': 'Washington', 
'WV': 'West Virginia', 
'WY': 'Wyoming' 
} 
Смежные вопросы