布隆過濾器

2021-08-16 08:51:58 字數 431 閱讀 2684

【問題】有100億條黑名單網頁,每個網頁的url最多占用64b,現給出乙個新的網頁,判斷該網頁是否在黑名單中。

【解法】

假設有k個雜湊函式,雜湊函式設計的足夠好。有乙個byte陣列,陣列長度是n。遍歷100億條url。對url經過k個雜湊,得到k個值,將值對應的下標位置塗黑。得到乙個經過處理後的陣列。

新給出乙個url值,經過雜湊,只要發現k個值中有乙個下標沒有被塗黑,判斷該url一定是白名單(整個判斷一定是準確的)。如果k個值都被塗黑,判斷該url在黑名單中(這個判斷存在誤報率)。

該方法是寧可錯殺一千,不可放過乙個。判斷出的白名單一定是白名單,黑名單有多少概率是錯的呢。下面繼續分析n和k的取值,是的誤報率(假陽性)能降到最低。

檢查k個位置都為黑的概率。相當於,如果有個網頁是正常的url,但是雜湊得到k個值,那在bitmap中這些值都是黑的概率就是誤報率。

布隆過濾器

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

布隆過濾器

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

布隆過濾器

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