Как создать пустые сегменты в расширяемом хешировании - PullRequest
0 голосов
/ 24 мая 2010

Я знаю, как сделать расширяемое хэширование на бумаге, но я не знаю, как возможно создать пустые сегменты.

Что может привести к созданию пустых сегментов в расширяемом хешировании?Можете показать простой пример?

1 Ответ

0 голосов
/ 25 мая 2010

Предположим, что хеш-функция h(x) равна h(x) = x, и каждый сегмент может содержать в себе две вещи.

Я также буду использовать младшие значащие биты хеш-кода, как в индексе, в хеш-каталоге,в отличие от самых значимых битов.

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

Итак, давайте начнем вставлять вещи.

Сначала вставьте 0. Это должно идти в первом сегменте, начиная с h(0) = 0 и 0 % 2 = 0.

Затем вставьте 4. Это также должно идти в первом сегменте, начиная с h(4) = 4 и 4 % 2 = 0.

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

К сожалению, поскольку процесс перефразирования занимает h(x) % 4 и все наши числа (намеренно) кратны 4, первый сегментостается слишком полным, а третье ведро пусто.Это решается с еще одним удвоением хэш-таблицы.

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