Ich suche nach einer platzsparenden Datenstruktur, die Mengen (keine Wiederholung) von Elementen mit Wortgröße enthält und das schnelle Einfügen unterstützt (amortisiertes O (1)). Mit "platzsparend" meine ich im Idealfall Wörter zum Speichern von Elementen.n
Eine Menge zu sein ist ein wichtiger Teil der Frage: Wenn jedes Element mal hinzugefügt wird, kann der verwendete Speicherplatz nicht .n log n
Die Struktur sollte auch die Auflistung ihrer Elemente unterstützen (angemessen effizient). Jede vernünftige Struktur sollte hier keine Probleme haben. (Schnelle Mitgliedschaftsanfragen sind von Vorteil.)
ds.data-structures
Charles
quelle
quelle
Antworten:
Ich denke, Ramans und Raos "Prägnante dynamische Wörterbücher und Bäume" erfüllen die von Ihnen festgelegten Grenzen. Aus der Zusammenfassung:
quelle
Wenn Ihre Anwendung einige Fehlalarme tolerieren kann, sollten Sie einen Bloom-Filter verwenden .
Paraphrase von Wikipedia: Ein Bloom-Filter ist eine platzsparende probabilistische Datenstruktur, mit der getestet wird, ob ein Element Mitglied einer Menge ist. Falsch positive Ergebnisse sind möglich, falsch negative jedoch nicht. Elemente können dem Set hinzugefügt, aber nicht entfernt werden. Je mehr Elemente zur Menge hinzugefügt werden, desto größer ist die Wahrscheinlichkeit von Fehlalarmen.
quelle