Я ищу экономически эффективную структуру данных, которая содержит наборы (без повторений) элементов wordize и поддерживает быструю вставку (амортизированный O (1)). Под «эффективным с точки зрения пространства» я подразумеваю в идеале слов для хранения n элементов.
Быть множеством - важная часть вопроса: если каждый элемент добавляется раз, используемое пространство не может быть n log n .
Структура должна также поддерживать перечисление своих элементов (разумно и эффективно); у любой здравомыслящей структуры здесь не должно быть проблем. (Быстрые запросы членства являются плюсом.)
ds.data-structures
Чарльз
источник
источник
Ответы:
Я думаю, что «Краткие динамические словари и деревья» Рамана и Рао соответствуют указанным вами границам. Из аннотации:
источник
Если ваше приложение может допускать некоторые ложные срабатывания, то вам следует использовать фильтр Блума .
Перефразирование Википедии: Фильтр Блума - это экономически вероятностная структура данных, которая используется для проверки того, является ли элемент членом набора. Ложные срабатывания возможны, а ложные - нет. Элементы могут быть добавлены в набор, но не удалены. Чем больше элементов добавлено в набор, тем больше вероятность ложных срабатываний.
источник