什麼是布隆過濾器

2021-10-19 11:56:20 字數 721 閱讀 2653

本質上布隆過濾器是一種資料結構,比較巧妙的概率型資料結構(probabilistic data structure),特點是高效地插入和查詢,可以用來告訴你 「某樣東西一定不存在或者可能存在」。

相比於傳統的 list、set、map 等資料結構,它更高效、占用空間更少,但是缺點是其返回的結果是概率性的,而不是確切的。

實現的結構是bitmap結構,通過對資料進行多次hash得到的結果,對其對應的bitmap位置置為1。

例如資料a三次hash的結果為1,5,7。那麼會在bitmap的1,5,7三個位置置為1。如果資料b的三次hash結果是1,5,8。有前兩個一樣,但是最後乙個8不一樣,那麼可以判斷為不一致。

而布隆過濾器就是通過對資料進行hash,判斷hash結果位置是否置1為依據進行判斷。如果沒有匹配中,那麼必定不在過濾資料中,反之則有可能存在過濾資料中。 但要注意,只是可能!!!! 因為如果資料過於龐大,bitmap結構較小,會出現大量的重疊位置,導致誤判。

例如:

過濾資料有:

資料a:1,5,7。

資料b:2,5,8。

資料c:3,5,13。

資料d:0,6,9。

此時有資料e,hash結果為:3,6,7

過濾的資料中沒有資料e,但是hash得到的bitmap位置出現了重疊。造成了誤判。但是存在的資料一定命中,不存在的資料有概率誤判。

解決辦法:擴大布隆過濾器的長度。

布隆過濾器

布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...

布隆過濾器

布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...

布隆過濾器

如果想判斷乙個元素是不是在乙個集合裡,一般想到的是將集合中所有元素儲存起來,然後通過比較確定。鍊錶 樹 雜湊表 又叫雜湊表,hash table 等等資料結構都是這種思路。但是隨著集合中元素的增加,我們需要的儲存空間越來越大。同時檢索速度也越來越慢。bloom filter 是一種空間效率很高的隨機...