您好、欢迎来到现金彩票网!
当前位置:PC蛋蛋 > 最优归并树 >

大数据集处理策略 Bloom-Filter trie树

发布时间:2019-08-09 23:45 来源:未知 编辑:admin

  如图所示,该trie树存有abc、d、da、dda四个字符串,如果是字符串会在节点的尾部进行标记。没有后续字符的branch分支指向NULL

  例如:已知n个由小写字母构成的平均长度为10的单词,判断其中是否存在某个串为另一个串的前缀子串。下面对比方法:

  2.使用hash:我们用hash存下所有字符串的所有的前缀子串。建立存有子串hash的复杂度为O(n*len)。查询的复杂度为O(n)* O(1)= O(n)。

  3.使用trie:因为当查询如字符串abc是否为某个字符串的前缀时,显然以b,c,d....等不是以a开头的字符串就不用查找了。所以建立trie的复杂度为O(n*len),而建立+查询在trie中是可以同时执行的,建立的过程也就可以成为查询的过程,hash就不能实现这个功能。所以总的复杂度为O(n*len),实际查询的复杂度只是O(len)。

  eg:寻找热门查询:查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个,每个不超过255字节。

  对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。

  还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。

  举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。

  注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。

  Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。Spectral Bloom Filter(SBF)将其与集合元素的出现次数关联。SBF采用counter中的最小值来近似表示元素的出现频率。

  问题实例:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?

  根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换成ip,则大大简单了。

  比如说,一个象 Yahoo,Hotmail 和 Gmai 那样的公众电子邮件(email)提供商,总是需要过滤来自发送垃圾邮件的人(spamer)的垃圾邮件。一个办法就是记录下那些发垃圾邮件的 email 地址。由于那些发送者不停地在注册新的地址,全世界少说也有几十亿个发垃圾邮件的地址,将他们都存起来则需要大量的网络服务器。

  布隆过滤器是由巴顿.布隆于一九七零年提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。我们通过上面的例子来说明工作原理。

  假定我们存储一亿个电子邮件地址,我们先建立一个十六亿二进制(比特),即两亿字节的向量,然后将这十六 亿个二进制位全部设置为零。对于每一个电子邮件地址 X,我们用八个不同的随机数产生器(F1,F2, ...,F8) 产生八个信息指纹(f1, f2, ..., f8)。再用一个随机数产生器 G 把这八个信息指纹映射到 1 到十六亿中的八个自然数 g1, g2, ...,g8。现在我们把这八个位置的二进制位全部设置为一。当我们对这一亿个 email 地址都进行这样的处理后。一个针对这些 email 地址的布隆过滤器就建成了。(见下图)

  现在,让我们看看如何用布隆过滤器来检测一个可疑的电子邮件地址 Y 是否在黑名单中。我们用相同的八个随机数产生器(F1, F2, ..., F8)对这个地址产生八个信息指纹 s1,s2,...,s8,然后将这八个指纹通过G对应到布隆过滤器的八个二进制位,分别是 t1,t2,...,t8。如果 Y 在黑名单中,显然,t1,t2,..,t8 对应的八个二进制一定是一。这样在遇到任何在黑名单中的电子邮件地址,我们都能准确地发现。

  布隆过滤器决不会漏掉任何一个在黑名单中的可疑地址。但是,它有一条不足之处。也就是它有极小的可能将 一个不在黑名单中的电子邮件地址判定为在黑名单中,因为有可能某个好的邮件地址正巧对应八个都被设置成一的二进制位。好在这种可能性很小。我们把它称为误 识概率。在上面的例子中,误识概率在万分之一以下。

  (一)Trie的简介Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。他的核心思想是空间换时间,空间消耗大但是...博文来自:NK_test的博客

  简介在使用一些搜索引擎去搜一些东西的时候,我们经常会碰到一个有意思的事情。有时候我们在搜索框输入一部分内容的时候,会发现搜索框会显示一个下拉的列表,里面有一些以前面输入的内容为开头的一系列搜索字段...博文来自:点缀星辰

  在trie里找xor最大值沙比题,当前位是1就优先走0,是0就优先走1在trie里找and或者or最大值以and为例,如果当前位是1的线的线都有...博文来自:泉華子的OI足迹

  字典树(TrieTree)百度链接trie树就是用来对于大量的文本统计,储存与查找的一种数据结构,下面简单介绍两种trie树的实现方式。多叉trie树对于一个字符集大小为SSS的文本,我们可以建立一棵...博文来自:TimeTraveller-VictoryCzt

  世界真的很大trie树贪心求最大异或和大概也就是那么回事了但是对于区间的查询就不是那么容易的了考虑主席树的思想,怎么得到区间的值域的这就是可持久化的trie树说来容易指针教做人哪看题先:descrip...博文来自:BerryKanry的博客

  搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”,搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”刘...博文来自:帝江VII的博客

  在机器学习项目中,如果使用的是比较小的数据集,数据集的处理上可以非常简单:加载每个单独的图像,对其进行预处理,然后输送给神经网络。但是,对于大规模数据集(例如ImageNet),我们需要创建一次只访问...博文来自:云水木石

  Trie,又称单词查找树、前缀树,是一种多叉树结构。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字...博文来自:sunny_ss12的专栏

  在本文中,我们将讨论如何使用Keras在不适合内存的大数据集上训练我们的深度学习网络。介绍深度学习算法优于所有...博文来自:喜欢打酱油的老鸟

  1.概述之前在读取和处理较大的csv数据时,在尝试了一次直接读取处理后发现非常耗时,就改用导入数据库,再通过RMySQL或者RODBC来读取处理数据。今天来比较一下。加载相关packageslibra...博文来自:weixin_34008933的博客

  目录将内存使用量减少高达90%的方法使用棒球比赛日志数据帧的内部表示了解子类型使用子类型优化数值列将Numeric与String存储进行比较使用分类优化对象类型读取数据时选择类型分析棒球比赛总结和后续...博文来自:探索世界,改变世界

  数据集加载工具sklearn.datasets包嵌入了一些小型玩具数据集。GeneraldatasetAPI通用数据集API对于不同类型的数据集,有三种不同类型的数据集接口。最简单的是样本图像的界面。...博文来自:xiexie1357的专栏

  碎碎念: 在大学数据结构中,有关于树的应用部分。其中一个就是利用树来进行词频的统计,我们主要希望的是查询效率高,对于树来说查询效率和插入都比较快,时间复杂度都能做到较好。 我们来看一段来自百度百科对t...博文来自:的博客

  Trie树简介Trie树也称字典树,在字符串的查找中优势比较明显,适用于在海量数据中查找某个数据。因为Trie树的查找时间和数据总量没有关系,只和要查找的数据长度有关。比如搜索引擎中热度词语的统计。除...博文来自:一个程序渣渣的小后院

  第一次自学一种新的数据结构,感觉学会利用资源很重要,参考别人写的博客,谷歌搜索一下关于这中数据结构的一些问题,解决等,学会搜索资料,学习并掌握一门数据结构并不是很难。要知道相关的基本知识,主要应用与哪...博文来自:guin_guo的博客

  Description给定一些数,求这些数中两个数的异或值最大的那个值Input第一行为数字个数n,1Output任意两数最大异或值这个问题可以用01-字典树很好地解决即把所有数先按二进制从高到低位看...博文来自:缺氧

  tire树也叫字典树,也是一种N叉树,是一种特殊的前缀树结构。1、前缀树是N叉树的一种特殊形式。通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节...博文来自:凌墨的博客

  数据集类别不平衡通常发生在分类问题上,例如有两个类别(A,B)的数据集,A有80个,而B有20个,那么这个数据集是不平衡的。大多数数据集每一个类别通常不是完全的平衡,小的不平衡不会有太大的问题。但是当...博文来自:的博客

  ID3算法简介:构造ID3决策树的基本算法是贪心算法,它以自顶向下递归的各个击破方式构造决策树。一种著名的决策树算法是ID3,算法的基本策略如下:①创建一个节点。如果样本都在同一类,则算法停止,把...博文来自:机器之我心的博客

  trie树+BFS+链表,调了一个世纪,然后发现这是个爆空间的写法,气死我了。Trie树:概念什么的,度娘比较厉害。一棵树,26叉树,子节点都代表字符。我觉得吧,这就是将字符串用树的方式存储,以便于操...博文来自:dsakhdkas的博客

  字符串的Trie树:Description给出n个单词组成的字典(可能由相同的单词),请你完成下列任务:任务1、把n个单词去重后按字典序由小到大后输出。任务2、给出m个询问,每次询问一个单...博文来自:的博客

  前言,本人初学算法,很多东西学的很浅,具体原理请看各位大佬的blog,大佬勿喷1、什么是Trie树在计算机科学中,Trie树,称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与...博文来自:nobleman

  Trie树的结构如下:就根据这个图来建立就好了。就是删除要考虑几种情况:1.删除中间的红点2.删除末红点找到前面的支点(如上图,要删除bcd,就要找到b指的节点,再向下删除,像abd,就要从ab指的节...博文来自:的博客

  假定存在这样一种情况多个用户对数据库进行写,我们的业务逻辑规定,每个用户只能写一次,大部分用户也只发一次请求。publicvoidwrite(Uersu){//dosomething}但是有一种情况(...博文来自:程序员小董的专栏

  Trie(Prefixtree,前缀树,字典树)简介在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由...博文来自:sherine的博客

  搜索树包括B_树、B+树、Trie树等以及它们的各种变形。用Trie树搜索一个关键码的时间与关键码本身及其长度有关,最快是O(1),即在第一层即可判断是否搜索到,最坏的情况是O(n),n为Trie树的...博文来自:sinat_34080511的博客

  引用一下百度百科的话吧:Trie树,又称单词查找树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点...博文来自:lkness的博客

  Trie树又叫“字典树”,是一种在字符串计算中极为常见的数据结构。在介绍Trie树的具体结构之前,我们首先要搞明白的就是Trie树究竟是用来解决哪一类问题的,为什么这类问题可以用Trie树高效的解决。...博文来自:guoziqing506的博客

  Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地...博文来自:收拾心灵_描绘未来

  Trie树和前缀匹配Trie树根节点不包含字符,除根节点外其他每个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的子节点包含的字符都不同。父节点保存...博文来自:yyfaith的博客

  前言:    最近学习了tire树(前缀树),也就是单词查找树;正如书上所言,这是人类对算法研究的最高成果之一,学会了后感觉尤为深刻,接下来就来记录下自己的感受。原理:    Trie树和其他的数据结...博文来自:weixin_41427400的博客

  前言目前做分词比较流行的是用深度学习来做,比如用循环神经网络和条件随机场,也有直接用条件随机场或隐马尔科夫模型的。前面也实现过上面几种,效果挺不错,基于隐马尔科夫模型的差一点,条件随机场的效果较好,而...博文来自:seaboat——a free boat on the sea.(公众号:远洋号)

  Trie树本身就是一个很迷人的数据结构,何况是其改进的方案。在本博客中我会从DAT(Double-ArrayTire)的原理开始,并结合其源代码对DAT的状态转移过程进行解析。如果因此你能从我的博客中...博文来自:大鱼

  Trie树利用字符串的公共前缀降低了查询时间的开销,提高了查询的效率。字典树的插入,删除和查找都非常简单,用一个一重循环即可。1.从根节点开始一次搜索2.取得要查找关键词的第一个字母,并根据该字母选择...博文来自:ccq1029的专栏

  ZZZz12zzZZ:您好,博主,我对公式2实在是不太理解,我知道theta是一个参数,不太理解B的含义,论文中也没提到,您能给我说说么,感谢!

http://cairowatch.com/zuiyouguibingshu/174.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有