Показать сообщение отдельно
Старый 18.12.2012, 20:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 33  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
:| Кого интересует можно ли повторять значения в хеш таблицах. Они вообще в таблицах не хранятся. В таблицах хранятся только ключи (указатели). Это фундаментальное свойство Блум фильтров, и его конкретной разновидности (с количеством хеш функций равном одному) - хеш таблице. Для блум фильтров вцелом, это свойство описывает соотношение между памятью и вероятной ошибкой чтения ключа, а для конкретного тривиального случая - хеш таблицы, это свойство описывающее сколько места нужно для хранения ключей. Т.е. если мы хотим хранить Х ключей, то нам нужно отвести памяти 2^n, где n такое, что при возведении двойки в эту степень число получится больше Х.
Естесственно, для больших таблиц где разница между Х и 2^n будет большая, то имеет смысл использовать бинарные деревя, например, составив их из 2^(n - 1) + 2^(n - 2) и т.п. Но это уже детали.

Главное, что ключи не могут повторятся, и именно ключи - это элементы хеш таблицы. Значения - не элементы таблицы.
__________________
Hell is the possibility of sanity