Szukam struktury danych zajmującej mało miejsca, która przechowuje zestawy (bez powtórzeń) elementów wordize i obsługuje szybkie wstawianie (amortyzowane O (1)). Przez „oszczędny przestrzennie” rozumiem idealnie, słów do przechowywania n elementów.
Bycie zestawem jest ważną częścią pytania: jeśli każdy element zostanie dodany, razy wykorzystana przestrzeń nie może być n log n .
Struktura powinna również wspierać wyliczanie jej elementów (rozsądnie i skutecznie); każda zdrowa struktura nie powinna mieć tutaj problemów. (Szybkie zapytania o członkostwo to plus.)
ds.data-structures
Charles
źródło
źródło
Odpowiedzi:
Myślę, że „Zwięzłe słowniki dynamiczne i drzewa” Ramana i Rao spełniają określone przez ciebie granice. Z streszczenia:
źródło
Jeśli twoja aplikacja może tolerować fałszywe alarmy, powinieneś rozważyć użycie filtra Bloom .
Parafraza Wikipedii: Filtr Blooma to zajmująca mało miejsca probabilistyczna struktura danych, która służy do testowania, czy element należy do zbioru. Fałszywie pozytywne są możliwe, ale fałszywe negatywne nie są. Elementy można dodawać do zestawu, ale nie można ich usuwać. Im więcej elementów zostanie dodanych do zbioru, tym większe prawdopodobieństwo fałszywych trafień.
źródło