Diese Frage wurde bereits früher gestellt, aber es gab zu dieser Zeit keine Antwort, also entschied ich mich, sie noch einmal zu stellen.Effiziente Implementierung eines Bloom-Filters in C?
Ich brauche eine effiziente Implementierung eines Bloom-Filters in C (nicht C++). Wenn es so etwas nicht gibt, würde ich nichts dagegen haben, wenn ich einen guten Hinweis bekomme, damit es nicht zu viel Zeit in Anspruch nimmt.
Ich möchte diese Datenstruktur für Einfügungen und Tests in einem Verhältnis (1: 20k) verwenden, also ist es in erster Linie testintensiv. Die zu testenden Daten sind 64-Bit-Ganzzahlen.
Es ist probabilistisch. Wenn Sie eine exakte Antwort wünschen, verwenden Sie Union Disjoint Set suchen. Suchen Sie nach diesem auf Topcoder, es sollte ein Tutorial für sie geben. – nhahtdh
Wenn Sie C schreiben, ist dies nicht die Art von Sache, für die Sie eine allgemeine Bibliothek benötigen. Es sollte weniger als 100 Codezeilen umfassen und sollte weniger Zeit zum Schreiben benötigen als die Integration einer Drittanbieterbibliothek. Lesen Sie einfach Ihre Lieblingsbeschreibung des Algorithmus auf Wikipedia oder ähnliches. –
@R schreiben es wird weniger Zeit dauern, die ich weiß, aber es effizient zu schreiben, so dass es gut skaliert ist ein Problem.Ich muss die Zugehörigkeit von Daten in der Größenordnung von 10^7 testen und diese Abfrage schneller machen als die count (*) Abfrage auf das Ergebnis eines Equi Joins. Ich kann es mir nicht leisten, auch nur eine ms in meiner Implementierung zu verlieren –