布隆過濾器 算法篇


比特幣 比較火  書本資料也較少

對cache緩存的概念就不講了  

Filter 判斷這個元素在不在 經過filter判斷這個元素在不在如果不在的話肯定就不在

而如果在的話(有誤差)在從數據庫和內存中取

chache和filter 有一定的異曲同工之妙

我們來講一下hash函數

 

 作用就是通過映射拿到值

hash有個問題 即使value 沖突 ?怎么解決 把映射到同一個value的key作為拉鏈存起來 比如列表

filter 和 cache 是互為互補的作用

filter和上述hash一樣 不過是把

一個元素 散射到二進制向量里面來

 

布蘭過濾器實現過程

映射到很長很長的二進制向量 比如int就是64的二進制向量

而布隆過濾器可以檢索一個元素是否在一個集合中 

布隆過濾器優點和缺點

空間復雜度 事件復雜度遠遠小於其他算法  

缺點是勿失識別率和刪除困難

為什么那么快

因為是二進制所以快 但是也無法避免一個新的問題 就是准確率低 (天下沒有一塊完整的蛋糕 不然為什么不直接用他?)

勿識別率低那么為什么還要?

首先講一下他的勿識別率

首先元素在的時候才會有勿識別率  不在的時候肯定是不在的

如果在任何條件下 識別率都只有80%這樣的情況 那么這個算法肯定是沒用的 

布隆過濾器實現原理

 

 對於任何一個元素 使用映射函數 映射到 向量里 把 0 置為1  

新來一個w 用來查詢 如果映射0的情況 那么這個w肯定不存在 

 

 大白話 :通過左邊A和E把向量描紅  右邊有三個元素需要查找ACB 

發現a有 c沒有 b有 實際上b是沒有的 所以這就導致了勿失別

怎么解決勿失別

filter主要工作就是幫助過濾一下不存在的元素 所以說和cache一樣擋了一層 如果不存在再去數據庫查找 

所以后面還要跟一層數據管理系統 比如mysql 后面的是數據權威機構過濾器和cache是預先處理模塊

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM