Bloom Filter 概念和原理

2021-10-01 18:12:58 字數 867 閱讀 4099

bloom filter 是由 howard bloom 在 1970 年提出的二進位制向量資料結構,它具有很好的空間和時間效率,被用來檢測乙個元素是不是集合中的乙個成員。如果檢測結果為是,該元素不一定在集合中;但如果檢測結果為否,該元素一定不在集合中。因此bloom filter具有100%的召回率。這樣每個檢測請求返回有「在集合內(可能錯誤)」和「不在集合內(絕對不在集合內)」兩種情況,可見 bloom filter 是犧牲了正確率和時間以節省空間。

召回率(recall rate,也叫查全率)是檢索出的相關文件數和文件庫中所有的相關文件數的比率,衡量的是檢索系統的查全率;精度是檢索出的相關文件數與檢索出的文件總數的比率,衡量的是檢索系統的查準率。召回率(recall)和精度(precise)是廣泛用於資訊檢索和統計學分類領域的兩個度量值,用來評價結果的質量。

在電腦科學中,我們常常會碰到時間換空間或者空間換時間的情況,即為了達到某乙個方面的最優而犧牲另乙個方面。bloom filter在時間空間這兩個因素之外又引入了另乙個因素:錯誤率。在使用bloom filter判斷乙個元素是否屬於某個集合時,會有一定的錯誤率。也就是說,有可能把不屬於這個集合的元素誤認為屬於這個集合(false positive),但不會把屬於這個集合的元素誤認為不屬於這個集合(false negative)。在增加了錯誤率這個因素之後,bloom filter通過允許少量的錯誤來節省大量的儲存空間。

自從burton bloom在70年代提出bloom filter之後,bloom filter就被廣泛用於拼寫檢查和資料庫系統中。近一二十年,伴隨著網路的普及和發展,bloom filter在網路領域獲得了新生,各種bloom filter變種和新的應用不斷出現。可以預見,隨著網路應用的不斷深入,新的變種和應用將會繼續出現,bloom filter必將獲得更大的發展。

1135 原根(概念)

設m是正整數,a是整數,若a模m的階等於 m 則稱a為模m的乙個原根。其中 m 表示m的尤拉函式 給出1個質數p,找出p最小的原根。輸入輸入1個質數p 3 p 10 9 輸出輸出p最小的原根。輸入樣例 3輸出樣例 2a是p的原根滿足 p 1的所有質因子p1,p2,pk,都滿足a p 1 pi p 1...

webpack基本概念 打包流程和熱更新原理

webpack核心概念 entry 編譯入口 module 模組,在 webpack 中,一切皆為模組,乙個模組對應乙個檔案 chunk 塊,乙個 chunk 由多個模組組合而成,用於 的合併與分割 loader 模組轉換器,將非js模組轉化為webpack能識別的js模組 plugin 擴充套件外...

Bloom Filter的基本原理和變種

學習乙個東西首先要知道這個東西是什麼,可以做什麼,接著再了解這個東西有什麼好處和優勢,然後再學習他的工作原理。下面我們分別從這三點簡單介紹一下bloom filter,以及和他的變種。what 在允許一定的錯誤率的情況下,用於判斷乙個元素是否屬於乙個集合,bloom filter可能會將乙個不屬於集...