資料結構 布隆過濾器

2021-08-16 00:22:28 字數 1324 閱讀 3417

基於位圖的缺點——只能儲存整型,在現實中的應用有了很大的侷限性,所以又引出了一種新的雜湊變形,其實也算是點陣圖的變形——布隆過濾器。

如圖,把字串經過布隆過濾器的處理,對映到位圖的多個位置,讓這幾個位置都置成1用來表示這個字串的存在。所以只要有乙個位置為0,那麼這個資料就不存在。

1.本來不存在的資料,可能因為儲存的資料過多導致誤判。比如下圖中的close,其實不存在,因為其他資料占用了他的空間導致誤判。

2.只能儲存不能刪除,如果刪除了string,就影響了open的儲存。

void bloomfilterinit(bloomfilter* bf, size_t range) //初始化

void bloomfilterset(bloomfilter* bf, keytype key) //插入

int bloomfiltertest(bloomfilter* bf, keytype key) //判斷是否存在

void bloomfilterreset(bloomfilter* bf, keytype key) //刪除

void bloomfilterdestory(bloomfilter* bf) //銷毀

資料結構 布隆過濾器

原理 如果要判斷乙個數是不是在乙個集合裡,一半想到的是將所有的元素儲存起來,然後通過比較確定。但是隨著集合中元素的增加,需要的儲存空間越來越大,檢索速度自然會變慢。這時會有人想到使用雜湊表,將元素通過雜湊函式對映到乙個位陣列中,將相應的位元位置為1,這樣就可以判斷這個元素是不是在集合之中了。但是雜湊...

布隆過濾器

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

布隆過濾器

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