当前位置: 首页 > news >正文

关于网页设计的教育网站设计go网站开发

关于网页设计的教育网站设计,go网站开发,网站控制面板地址,链友咨询目录 1.布隆过滤器的概念 2.布隆过滤器的实现 2.1 set 2.2 test 3.布隆过滤器的查找 4.布隆过滤器的删除 5.布隆过滤器优点 6.布隆过滤器缺陷 7.布隆过滤器的应用及哈希切分 1.布隆过滤器的概念 布隆过滤器是用多个哈希函数,将一个数据映射到位图中的概率型…

目录

1.布隆过滤器的概念

2.布隆过滤器的实现

2.1 set

2.2 test

3.布隆过滤器的查找

4.布隆过滤器的删除

5.布隆过滤器优点

6.布隆过滤器缺陷

7.布隆过滤器的应用及哈希切分


1.布隆过滤器的概念

布隆过滤器是用多个哈希函数,将一个数据映射到位图中的概率型数据结构,

特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在

此种方式不仅可以提升查询效率(O(K),K极小),也 可以节省大量的内存空间(比特位存储)

上图就是将一个字符串通过不同的哈希函数映射到不同的哈希地址当中

不同字符串的映射位置难免有交叉

2.布隆过滤器的实现

struct BKDRHash
{size_t operator()(const string& str){size_t hash = 0;for(auto ch : str){hash = hash * 131 + ch;}return hash;}
};struct SDBMHash
{size_t operator()(const string& str){size_t hash = 0;for (auto ch : str){hash = 65599 * hash + ch;//hash = (size_t)ch + (hash << 6) + (hash << 16) - hash;  }return hash;}
};struct RSHash
{size_t operator()(const string& str){size_t hash = 0;size_t magic = 63689;for (auto ch : str){hash = hash * magic + ch;magic *= 378551;}return hash;}
};template<size_t N,class T = string,class Hash1 = BKDRHash,class Hash2 = SDBMHash,class Hash3 = RSHash>
class Bloomfilter
{
public:private:bitset<N> _bs;
};

(1)布隆过滤器常用于字符串的映射,参数默认为string

(2)Hash1等是不同哈希字符串算法的仿函数

(1)编译器会在布隆过滤器生成的时候自动去调用biset的构造函数,这里不用显示写

2.1 set

void set(const string& str)
{int hash1 = Hash1()(str) % N;int hash2 = Hash2()(str) % N;int hash3 = Hash3()(str) % N;_bs.set(hash1);_bs.set(hash2);_bs.set(hash3);}

根据不同的哈希函数计算的哈希地址进行映射

2.2 test

bool test(const string& str)
{int hash1 = Hash1()(str) % N;if (_bs.test(hash1) == false)return false;int hash2 = Hash2()(str) % N;if (_bs.test(hash2) == false)return false;int hash3 = Hash3()(str) % N;return _bs.test(hash3);
}

字符串所映射的比特位中,有一个为0,就说明该字符串一定不存在

全为1,只能说明,该字符串可能存在

这是因为该字串所映射的比特位可能与存在的字符串映射的比特位交叉重叠了

3.布隆过滤器的查找

分别计算每个哈希值对应的比特位置存储的是否为零,只要有一个为零,代表该元素一定不在,否则可能存在。

注意:布隆过滤器如果说某个元素不存在时,该元素一定不存在,如果该元素存在时,该元素可 能存在,因为有些哈希函数存在一定的误判

比如:在布隆过滤器中查找"alibaba"时,假设3个哈希函数计算的哈希值为:1、3、7,刚好和其 他元素的比特位重叠,此时布隆过滤器告诉该元素存在,但实该元素是不存在的

4.布隆过滤器的删除

标准布隆过滤器的实现不支持删除操作,这是因为删除操作是将比特位1置为0,但是我们不知道删除数据所对应的比特位涉及哪些其他的数据,贸然删除会影响其它数据的存在性

一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器(如8位整数)

插入元素时,给k个计 数器(k个哈希函数计算出的哈希地址)加一,

删除元素时,给k个计数器减一,

查询元素时,若所有k个位置的计数器均>0,则元素“可能存在”;否则“绝对不存在”

通过多占用几倍存储 空间的代价来增加删除操作

缺陷: 1. 无法确认元素是否真正在布隆过滤器中

2. 存在计数回绕(8位整数的范围0-255,若已经有了255次,再加1即溢出为0)

5.布隆过滤器优点

1. 增加和查询元素的时间复杂度为:O(K), (K为哈希函数的个数,一般比较小),与数据量大小无 关

2. 哈希函数相互之间没有关系,方便硬件并行运算

3. 布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势

4. 在能够承受一定的误判时,布隆过滤器比其他数据结构有这很大的空间优势

5. 数据量很大时,布隆过滤器可以表示全集,其他数据结构不能

6. 使用同一组散列函数的布隆过滤器可以进行交、并运算

  • 并集:位数组按位或操作,时间复杂度O(m)
  • 交集:位数组按位与操作,时间复杂度O(m)

6.布隆过滤器缺陷

1. 有误判率,即不能准确判断元素是否在集合中

补救方法:再 建立一个白名单,存储可能会误判的数据

2. 不能获取元素本身

3. 一般情况下不能从布隆过滤器中删除元素

4. 如果采用计数方式删除,可能会存在计数回绕问题

7.布隆过滤器的应用及哈希切分

1.给两个文件,分别有100亿个query,我们只有1G内存,

如何找到两个文件交集?分别给出 精确算法和近似算法

近似算法:用布隆过滤器a标记A文件的query,遍历文件B的Query,若布隆过滤器a返回"可能存在",则记录为交集(可能有重复的query,当然也存在误判)

精确算法:按照相同的哈希函数,将两个文件A、B切分成若干个小文件,将对应的小文件堆到内存中使用unordered_set进行精确查找

哈希切分就是通过哈希函数将大文件切分为小文件的过程
相同的query一定会被分配到对应的小文件中(A0-B0、A1-B1、A2-B2......)

当然,这里并不是平均切分,某些小文件仍可能会过大

文件为5G,有两种情况:

1、4G数据相同、1G冲突

2、大多数数据冲突

怎么区分这两种情况呢?

解决方法:使用unordered_set存储数据,当程序抛出bad_alloc异常的时候,

说明是情况2,需要再切分,否则不需要

2.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 与上题条件相同,如何找到top K的IP?

问题一:
哈希切分后,使用unordered_map统计文件中的Ip地址的出现次数,统计完一个文件,使用变量标记该IP地址及其次数,持续进行统计次数、更新变量的操作

问题二:

哈希切分后,使用unordered_map统计文件中的Ip地址的出现次数,边统计边更新小堆,持续进行统计次数、更新小堆的操作

http://www.dtcms.com/a/510621.html

相关文章:

  • 南京溧水城市建设集团网站wordpress时尚英文站
  • 网站开发合同履约宁波网站建设招商加盟
  • 单页网站的区别最好的网站建设公司
  • 网站建设得要素长春火车站附近有什么好玩的地方
  • 十大购物网站常州做网站价位
  • 电子商务网站建设各项费用预算是多少wordpress旺季密码
  • 四川省微信网站建设公静态网站建设背景
  • 设计素材网站排版网站开发工程
  • 网站建设中成本怎么描述官方网站开发方案
  • 东莞营销商城网站建设wordpress适合外贸站
  • 用粉色做网站主题色建设银行网站账户注销
  • 网站域名什么意思seo是做什么工作的
  • 高唐做网站推广广州市南沙区基本建设办公室网站
  • 社区网站设计策划书3000字重庆公司注销的流程及需提供的材料
  • 网站做关键词开封美食网站建设规划
  • 建网站要多少钱 优帮云广东网站建设公司968
  • 哈尔滨市住房与城乡建设局网站绍兴网站建设公司地址
  • 珠海网站开发价格站长工具seo优化
  • 北京网站seo哪家公司好网站开发之ios知识扩展
  • dede网站入侵教程西宁网站建设报价cu君博規范
  • 阜阳网站建设费用企业通讯录
  • 深圳最好用的网站设计阿里巴巴网站导航怎么做
  • 网站title是什么百姓网为什么不能创建地址
  • 怎么建设自己的网站网站建设设计外包公司
  • 5118网站是免费的吗网络服务商
  • 佛山市和城乡建设局网站首页建站极速通
  • 大气手机网站模板免费下载网页界面设计内容
  • 小城镇建设期刊网站广告公关公司
  • 网站程序上传完如何做内网站的宣传栏
  • 福州市交通建设集团有限公司网站现在找个网站这么难的吗