布隆过滤器思考

用处:

  快速查找某个内容(如字符串)是否在一集合内.

原理简介:

  设定空集合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的算法复杂度?

应用:

  短网址生成中查找网址是否已存在

posted @ 2020-09-22 01:22  ckaaaa  阅读(80)  评论(0)    收藏  举报