Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 3 Min.

Ein Beispiel zu Bloom-Filtern

Ein Bloom-Filter ist eine Datenstruktur, die entwickelt wurde, um schnell und speichereffizient zu prüfen, ob ein Element in einem Set vorhanden ist.
Der Preis für seine Effizienz ist, dass ein Bloom-Filter eine probabilistische Datenstruktur ist: Er sagt uns, dass das Element entweder definitiv nicht im Set ist oder sich im Set befinden kann. Basisdatenstruktur eines Bloom-Filters ist ein Bitvektor. Stellen Sie sich für ein Beispiel ein leeres Array mit 15 Elementen vor (Index: 0 bis 14) – siehe Bild. Jede leere Zelle in diesem Array hat einen Index und repräsentiert ein Bit. Um ein Element zum Bloom-Filter hinzuzufügen, hashen wir es einfach ein paar Mal und setzen die Bits im Bitvektor auf den Index dieser Hashes auf 1. Es ist einfacher zu sehen, was das bedeutet, als es zu erklären. Im abgebildeten Beispiel 1 wurde der String "dotnetpro" eingegeben. Im Bitvektor wurden durch die einfachen Hash-Funktionen Fnv und Murmur die Indizes 11 und 14 mit einer 1 belegt. In Beispiel 2 wurden drei weitere Strings hinzugefügt.Um die Mitgliedschaft zu testen, werden die abzufragenden Zeichenketten mit den gleichen Hash-Funktionen bearbeitet und geprüft, ob diese Werte im Bitvektor gesetzt sind. Sind sie nicht gesetzt, wissen Sie, dass das Element nicht in der Menge ist (Abfrage 2). Sind sie gesetzt (Abfragen 1 und 3), dann wissen Sie nur, dass das Element enthalten sein könnte (maybe!), denn ein anderes Element oder eine Kombination von anderen Elementen könnte die gleichen Bits gesetzt haben (Abfrage 3).Die in einem Bloom-Filter verwendeten Hash-Funktionen sollten unabhängig und gleichmäßig verteilt sein. Sie sollten auch so schnell wie möglich sein (kryptographische Hashes wie sha1sind daher keine gute Wahl). Beispiele für schnelle, einfache Hashes, die unabhängig genug sind, sind murmur, die fnv-Serie von Hashes und HashMix.Mehr über Bloom-Filter erfahren Sie im Bloom-Filter-Tutorial von Entwickler Bernardo Sulzbach (auch auf GitHub), in diesem Beitrag von C. Titus Brown sowie auf Wikipedia.

Neueste Beiträge

KI lässt Entwickler ihre Leidenschaft zum Programmieren neu entdecken - Motivation
Softwareentwicklung ist gleich Spaßfreie Zone? Das muss nicht sein: Der Beitrag beleuchtet, wie Teams ihren Kopf wieder freibekommen und ihre Freude am Entwickeln neu entdecken.
5 Minuten
10. Jul 2025
Contacts guaranteed: Die Partnerunternehmen auf der DWX 2025 - Konferenz
Über 30 führende Unternehmen, unzählige Impulse: Auf der DWX 2025 in Mannheim zeigten unsere Partner, was Tech heute kann – und morgen möglich macht.
2 Minuten
10. Jul 2025
Miscellaneous

Das könnte Dich auch interessieren

PolyCoder: Quelloffener KI-Code-Generator - Carnegie Mellon University
PolyCoder ist ein quelloffener KI-Code-Generator, der mit 249 GByte Daten in zwölf Programmiersprachen trainiert wurde und laut Forschern C-Code mit großer Genauigkeit verfasst.
2 Minuten
15. Mär 2022
CodeProject.AI Server in neuer Version - Lokaler AI-Server
CodeProject.AI Server (jetzt in Version 2.1.10) ist ein lokal installierter, selbstgehosteter, schneller, kostenloser und Open Source Artificial Intelligence Server für jede Plattform und jede Sprache.
2 Minuten
Code-agnostisch entwickeln - Jim Douglas, Betanews
Code-agnostische Entwicklung ist die Zukunft der Cloud-nativen Anwendungen.
3 Minuten
22. Dez 2022
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige