Mit einem Bloom-Filter können Sie effizient verfolgen, ob während der Verarbeitung bereits verschiedene Werte festgestellt wurden. Wenn viele Datenelemente vorhanden sind, kann ein Bloom-Filter zu einer erheblichen Speichereinsparung über eine Hash-Tabelle führen. Das Hauptmerkmal eines Bloom-Filters, das es mit einer Hash-Tabelle teilt, ist, dass es immer "nicht neu" sagt, wenn ein Element nicht neu ist, aber es besteht eine Wahrscheinlichkeit ungleich Null, dass ein Element als "nicht neu" gekennzeichnet wird "auch wenn es neu ist.
Gibt es einen "Anti-Bloom-Filter", der das gegenteilige Verhalten aufweist?
Mit anderen Worten: Gibt es eine effiziente Datenstruktur, die "neu" sagt, wenn ein Artikel neu ist, aber für einige Artikel, die nicht neu sind, auch "neu" sagt?
Das Beibehalten aller zuvor angezeigten Elemente (beispielsweise in einer sortierten verknüpften Liste) erfüllt die erste Anforderung, beansprucht jedoch möglicherweise viel Speicher. Ich hoffe, dass es angesichts der entspannten zweiten Anforderung auch unnötig ist.
Für diejenigen, die eine formalere Behandlung bevorzugen, schreiben Sie wenn der Bloom-Filter für neu hält, , und schreiben Sie wenn wirklich neu ist und sonst.
Dann ; ; ; , für einige .0 < α < 1
Ich frage: Existiert eine effiziente Datenstruktur, die eine Funktion mit etwas implementiert , so dass ; ; ; & le; 0 < β < 1 P r [ b ' ( x ) = 0 | n ( x ) = 0 ] = β P r [ b ' ( x ) = 0 | n ( x ) = 1 ] = 0 P r [ b ' ( x ) = 1 | n ( xP r [ b ' ( x ) = 1 | n ( x ) = 1 ] = 1
Bearbeiten: Es scheint, dass diese Frage zuvor bei StackExchange gestellt wurde, da /programming/635728 und /cstheory/6596 mit einer Reihe von Antworten von "kann nicht sein" done "through" kann mit einigem Aufwand "to" durchgeführt werden, indem die Werte von umgekehrt werden ". Mir ist noch nicht klar, was die "richtige" Antwort ist. Es ist klar, dass ein LRU-Caching-Schema (wie das von Ilmari Karonen vorgeschlagene) ziemlich gut funktioniert, einfach zu implementieren ist und die Zeit für die Ausführung meines Codes um 50% verkürzt.