布隆过滤器思考
用处:
快速查找某个内容(如字符串)是否在一集合内.
原理简介:
设定空集合S
对于N个输入集合重复以下步骤:
hash_f_(1~7) 为一种计算hash值的方法,输入内容,输出整数 得到H,如: [10,40,21,9,7,3,100]
定bool数组长度为32(正好能转成一个整数): L
遍历数组H,对L长度取模, L[(Hi%32)]=true
最后L'二进制转成整数为x
判断S[x]如果为true,则已存在, 否则(不存在并设置S[x]=true)
注意:
因为使用hash,必然存在误判,得到不存在的结果肯定正确,得到存在的结果可能有误.
算法复杂度
取决于集合S的算法复杂度?
应用:
短网址生成中查找网址是否已存在
浙公网安备 33010602011771号