首先,先來了解布隆過濾器的概念。
布隆過濾器(bloom filter)是乙個叫做 bloom 的老哥於2023年提出的。可以把它看作由二進位制向量(或者說位陣列)和一系列隨機對映函式(雜湊函式)兩部分組成的資料結構。相比於我們平時常用的的 list、map 、set 等資料結構,它占用空間更少並且效率更高,但是缺點是其返回的結果是概率性的,而不是非常準確的。理論情況下新增到集合中的元素越多,誤報的可能性就越大;並且,存放在布隆過濾器的資料不容易刪除。
布隆過濾器示意圖
位陣列中的每個元素都只占用 1 bit ,並且每個元素只能是 0 或者 1。這樣申請乙個 100w 個元素的位陣列只占用 1000000 / 8 = 125000 b = 15625 byte ≈ 15.3 kb 的空間。
總結:乙個名叫 bloom 的人提出了一種來檢索元素是否在給定大集合中的資料結構,這種資料結構是高效且效能很好的,但缺點是具有一定的錯誤識別率和刪除難度。並且,理論情況下,新增到集合中的元素越多,誤報的可能性就越大。
布隆過濾器
布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...
布隆過濾器
布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...
布隆過濾器
如果想判斷乙個元素是不是在乙個集合裡,一般想到的是將集合中所有元素儲存起來,然後通過比較確定。鍊錶 樹 雜湊表 又叫雜湊表,hash table 等等資料結構都是這種思路。但是隨著集合中元素的增加,我們需要的儲存空間越來越大。同時檢索速度也越來越慢。bloom filter 是一種空間效率很高的隨機...