Встановіть структуру даних для ефективної повторної вставки


11

Я шукаю просторову структуру даних, яка містить набори (без повторення) елементів розміру слів і підтримує швидке вставлення (амортизований O (1)). Під "просторовим" я маю на увазі в ідеалі слів для зберігання n елементів.n+o(n)n

Набір набору є важливою частиною питання: якщо кожен елемент доданий разів, ніж використаний простір, не може бути n log n .lognnlogn

Структура також повинна підтримувати перелік її елементів (розумно ефективно); будь-яка розумна структура тут не повинна мати проблем. (Швидкі запити про членство - плюс.)


2
Чи є причина, що хеш-таблиця не зробить хитрість?
Дейв

@Dave: Я не думаю, що це відповідає вимогам місця, але я вважаю, що досить жорсткий графік динамічного зміни розміру може змусити його працювати. Але загалом я хотів би побачити, що там, перш ніж насправді писати код.
Чарльз

1
Щоб отримати амортизований з динамічним зміною розміру, вам потрібно збільшити розмір на постійну частку, яка, на мою думку, не відповідає вимозі простору, якщо ви хочете суворо відповідати n + o ( n ) . O(1)n+o(n)
Дейв

O(1)

@Magnus: Я здогадуюсь, що мається на увазі, що фактичні функції, що стоять за O- та o-позначеннями у питанні, не залежать від розміру слова.
Tsuyoshi Ito

Відповіді:


10

Я думаю, що "Хороші динамічні словники та дерева Рамана" і Рао відповідають межу, яку ви визначаєте. З реферату:

SU={0,,m1},|S|=nO(1)SO(1)B+o(B)B=lg(mn)є теоретико-інформаційний мінімальний простір для подання .S


Це виглядає фантастично. (Ви зрозумієте, якщо я прочитаю статтю, перш ніж приймати її, правда?)
Чарльз

1

Якщо ваша програма може переносити помилкові позитивні результати, вам слід вивчити використання фільтра Bloom .

Парафраза Вікіпедії: Фільтр Блума - це просторийна імовірнісна структура даних, яка використовується для перевірки того, чи є елемент членом набору. Помилкові позитиви можливі, але помилкові негативи - ні. Елементи можна додавати до набору, але не видаляти. Чим більше елементів додано до набору, тим більша ймовірність помилкових позитивних результатів.


Шахта не може, але +1 для чудової структури даних.
Чарльз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.