Хеши: таблицы, списки и карты, о мой? - PullRequest
7 голосов
/ 19 сентября 2011

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

(1) С практической точки зрения, в чем разница между этими 3?

(2) Чем отличается время выполнения их операций?Существуют ли явные случаи, когда следует использовать или избегать использования других типов хэшей?

(3) Как каждый из них относится к Map ADT?Все ли это разные реализации или разные звери?

Спасибо за понимание!

1 Ответ

2 голосов
/ 19 сентября 2011

Существует абстрактная структура данных, которая содержит отображение между ключами и значениями. У него есть несколько разных имен, включая Map, Dictionary, Table, Association Table и другие.

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

Из множества реализаций, доступных для этой структуры данных, некоторые из наиболее популярных используют хеш-функции для быстрого времени доступа. Эти реализации иногда называют по имени Hash Table или Hash Map, вы можете прочитать о них в Википедии . Производительность также варьируется между реализациями хеш-таблиц, при этом некоторые достигают амортизации вставки O (1) и сложности доступа (по цене большого количества используемого пространства).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...