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.
Miscellaneous

Neueste Beiträge

KI: SQL Server versus Anwendungscode - SQL Server 2025 und Microsoft Azure AI, Teil 2
Wer SQL Server und Anwendungscode bewusst trennt, erhält eine Architektur, die sowohl performant als auch wartbar ist und sich langfristig stabil betreiben lässt.
6 Minuten
Design mit KI - UX goes Dev, Teil 2
Wie die Integration künstlicher Intelligenz in Designwerkzeuge die Art und Weise verändert, in der digitale Benutzeroberflächen entstehen.
6 Minuten
2. Jul 2026
RAG mit SQL Server 2025: KI-Antworten mit Kontext - SQL Server 2025 und Microsoft Azure AI, Teil 1
RAG als Architekturpattern verbindet Sprachmodelle mit der realen Wissensbasis eines Unternehmens. Seine pragmatische Umsetzung im Microsoft-Stack: Azure OpenAI für Sprache, SQL Server 2025 und Azure AI Search für Semantik und .NET 10 für Integration und Orchestrierung.
6 Minuten
29. Jun 2026

Das könnte Dich auch interessieren

C#-.NET-Apps mit WinUI 3 - Komponentenbasierte Apps mit Fluent/FAST, Teil 3
Microsoft macht mit WinUI 3 ein natives User-Experience-Framework für Windows verfügbar, dessen Komponenten auf dem Microsoft-eigenen Design-System Fluent 2 basieren.
23 Minuten
13. Mai 2024
Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
Ameisen aus Code - Mit AntMe ins Programmieren einsteigen
Serious Games gestalten den Einstieg in das Programmierenlernen leichter und im wahrsten Sinne des Wortes spielerisch.
22 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige