Wikipedia sagt:Wie viele Hash-Funktionen benötigt mein Bloom-Filter?
Ein leerer Bloom-Filter ist ein Bit-Array von m Bits, die alle auf 0 gesetzt gibt auch verschiedene Hash-Funktionen definiert sein muss, k, von denen jede Karte oder Hashes einige Satzelement nach einem der das M-Array positioniert mit einer gleichmäßigen Zufallsverteilung.
Ich habe den Artikel gelesen, aber was ich nicht verstehe, ist, wie k bestimmt wird. Ist es eine Funktion der Tabellengröße?
Außerdem habe ich in Hashtabellen, die ich geschrieben habe, einen einfachen, aber effektiven Algorithmus verwendet, um automatisch die Hash-Größe zu vergrößern. Grundsätzlich, wenn mehr als 50% der Eimer in der Tabelle gefüllt waren, würde ich die Größe des Tisches verdoppeln. Ich vermute, dass Sie dies vielleicht noch mit einem Bloom-Filter tun möchten, um falsche Positive zu reduzieren. Richtig?
einfach perfekt. danke –
Beachten Sie, dass aufgrund von Rundungs / Abschneidungsunterschieden und/oder der Genauigkeit der Logarithmusfunktion möglicherweise nicht die exakt gleichen Zahlen für das Beispiel angezeigt werden, wenn Sie diese Gleichungen in der Sprache Ihrer Wahl ausführen. Für mich sind 'm = 2075674' und' k = 6.64'. So oder so, runden Sie beide Werte auf die nächste ganze Zahl auf, und Ihre falsche positive Rate ist nahe genug. Es wäre interessant, die Gleichung zu haben, um den * tatsächlichen * Wert von 'p' neu zu berechnen, indem man die berechneten/gerundeten 'm' und' k' Werte verwendet. Auch hier sollte man sich keine Sorgen machen müssen, genaue Werte zu haben. Baseballstadion ist gut genug. –
Die Gleichung gefunden, um den tatsächlichen Wert von 'p' zu berechnen, wenn man' m' und 'k' berechnet - interessant zu vergleichen, um zu sehen, wie eine Rundung Ihre annehmbare falsche positive Rate beeinflusst haben könnte. 'e' ist die mathematische Konstante, kein dynamischer Wert. 'p = e^(- (m/n) * (ln (2)^2))' - Danke an http://stackoverflow.com/a/24071581/2609094 –