Bloom-Filter算法 简介
生活随笔
收集整理的這篇文章主要介紹了
Bloom-Filter算法 简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Bloom-Filter算法 其實可以看作 bit-map 的一種擴展。
它把已存在的元素通過多個hash 函數映射到一個 bit 序列,對于每一個元素根據hash函數的結果把相應的 位置置一(這個bit序列通常很長,但是比起記住所有元素它占用的空間是小的)。
在判斷一個元素時候已存在的時候,它會把這個元素的多個hash結果對應到bit序列中查看,如果已經全部置為一,那么說明該元素已經存在。
一個Bloom Filter有以下參數:
| m | bit數組的寬度(bit數) |
| n | 加入其中的key的數量 |
| k | 使用的hash函數的個數 |
| f | False Positive的比率 (假陽性) |
為了把錯誤率控制在 f,共有 n 個元素的集合作 bloom filter 其他參數可以由以下公式來定值:
m =nlg(1/f)*lge?(其中 lg 表示以2為底的對數)
k = - ln(f) / ln(2) ????????????
另外對于一個元素非常多的集合要進行?Bloom Filter 操作,必須構造一個返回值范圍很大的 hash 函數。可以用 md5 算法生成十六進制的hash值,然后轉成十進制:
import hashlibm=hashlib.md5() m.update('123123123123123123') print int(m.hexdigest(), base=16)
詳見:http://blog.csdn.net/hguisu/article/details/7866173
轉載于:https://www.cnblogs.com/rav009/p/5131107.html
總結
以上是生活随笔為你收集整理的Bloom-Filter算法 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 4431 Mahjong(模拟题
- 下一篇: 国内2大Git代码托管网站