Ich habe einen Pool setzt (mit der Größe von Pool n), mit allen Sets nicht in den RAM passen. Ich kann nur einen kleinen Bruchteil, sagen wir 1-5% aller Sätze in RAM.Schneller Approximationsalgorithmus für die Kardinalität von Schnittmengen
Das Problem ist gegeben Abfrage gesetzt Q Ich muß mit dem größten Mächtigkeit von intersect Top-k-Sätze zurück mit Q.
- Unter der Annahme, Q in aus dem gleichen Pool von Sätzen.
- Für allgemeine Q.
k klein ist, in Hunderten, während n in Hunderten von Millionen. Gesamtzahl der Bezirkselemente in allen Sätzen auch in Hunderten von Millionen.
- Es gibt viele probabilistische Datenstrukturen, KMV, MinHash und es ist Varianten, die man soll ich verwenden?
- Kann ich HyperLogLog für meine Aufgabe ändern?
- Welche dieser Strukturen können zu einer Art Index zusammengefügt werden?
Ich habe einige Experimente durchgeführt, die Sets als Bloom-Filter darstellen. Da die Größe der Sets sehr unterschiedlich ist, muss ich sehr große bloomfilters verwenden, was ineffizient ist (bloomfiltes benötigt 5x Speicherplatz des ursprünglichen Datasets). Adaptive bloomfiters von https://github.com/jaybaird/python-bloomfilter erzeugen nur 3-5x Kompression des Datensatzes, so dass dies immer noch ziemlich undurchführbar ist.
bedeutet "alle Sätze, die nicht in den RAM passen" bedeuten, dass a) * keine * der Sätze in RAM passen, ** oder ** b) die * Kombination aller * Sätze nicht passt im RAM? –
Es bedeutet b). Ich kann etwa 1% aller Sätze in Ram einfügen. – Moonwalker