Почему мы не используем Cuckoo Hashing - PullRequest
0 голосов
/ 08 ноября 2018

Мой вопрос, насколько я понимаю, Cuckoo Hashing обычно занимает 0 (1) раз для вставки, удаления и поиска.В худшем случае O (1) (амортизируется).Мой вопрос: почему этот алгоритм не используется чаще?Зачем нам использовать другой алгоритм поиска вещей, вставляя или удаляя, а не что-то вроде Cuckoo Hashing?

1 Ответ

0 голосов
/ 08 ноября 2018

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

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

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

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

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

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