南通网站建设培训,国内最近新闻,大连金州房价,网页设计与制作思政教学设计布隆
布隆过滤器#xff08;Bloom Filter#xff09;是一种概率型数据结构#xff0c;用于判断一个元素是否可能存在于一个集合中。它使用多个哈希函数和位图来表示集合中的元素。
布隆过滤器的基本原理如下#xff1a; 初始化#xff1a;创建一个长度为m的位图#xf…布隆
布隆过滤器Bloom Filter是一种概率型数据结构用于判断一个元素是否可能存在于一个集合中。它使用多个哈希函数和位图来表示集合中的元素。
布隆过滤器的基本原理如下 初始化创建一个长度为m的位图bitmap并将所有位都置为0。 插入元素对于要插入的元素使用k个哈希函数对其进行哈希计算得到k个哈希值。然后将位图中对应的位置置为1。 查询元素对于要查询的元素同样使用k个哈希函数对其进行哈希计算得到k个哈希值。然后检查位图中对应的位置如果所有位置都为1则认为元素可能存在于集合中如果有任何一个位置为0则元素一定不存在于集合中。
布隆过滤器的优点是占用空间小、插入和查询速度快且不需要存储实际的元素值。但布隆过滤器也存在一定的误判率False Positive即可能将不存在的元素误判为存在。误判率取决于位图的长度和哈希函数的个数。
布隆过滤器适用于需要高效判断元素是否存在的场景如缓存穿透问题、URL去重、黑名单过滤等。但它不适用于需要精确判断元素是否存在的场景因为存在一定的误判率。在使用布隆过滤器时需要根据实际情况选择合适的位图长度和哈希函数个数以平衡空间占用和误判率。
哈希切分
问题两个文件分别有100亿个query只有1G内存如何找到两个文件的交集分别给出精确算法和近似算法
1.假设每个query 30byte 100亿query需要多少空间 - 3000亿byte - ≈ 300G 10亿byte约等于1G 2.假设两个文件叫A和B
在相同编号的小文件中找交集 A0和B0 … 如果小文件过大也可以切分递归即可没有必要分成1000份分成适当大小即可
问题