布隆過濾器

2021-08-07 04:34:12 字數 1311 閱讀 5904

template

struct __hashfunc1

return hash;

}size_t operator()(const t& key)

};template

struct __hashfunc2

return hash;

}size_t operator()(const t& key)

};template

struct __hashfunc3

return hash;

}size_t operator()(const t& key)

};template

struct __hashfunc4

return hash;

}size_t operator()(const t& key)

};template

struct __hashfunc5

return hash;

}size_t operator()(const t& key)

};template

class hashfun2,

class hashfun3,

class hashfun4,

class hashfun5>

class bloomfilter

void set(const k& key)

bool isin(const k& key)

private:

bitset _table;

};

首先它是用來查詢資料的一種資料結構。對於布隆過濾器來說存在可能不準確,但是不存在一定準確。

布隆過濾器與雜湊表的優點與缺點

雜湊表                         布隆過濾器

空間利用率低 空間利用率高

查詢準確 查詢不準確(存在可能誤判,不存在一定準確)

支援erase,刪除某個元素 不支援erase

存放的是原資料 底層使用點陣圖不存放有效資料

對布隆過濾器的改進

布隆過濾器不能erase相應下標的元素, 因為待刪位可能與多個雜湊表有關,如果乙個雜湊表不使用該位就刪除的話很可能影響到其他位。所以對於我們不能任意刪除某個有效位。但是如果想讓它支援erase的話,那麼我們可以給布隆過濾器附近乙個成員vector,它標記著各個有效位的引用計數,當引用計數為0的話,就可以刪除該位元素。

布隆過濾器

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

布隆過濾器

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

布隆過濾器

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