首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无人车技术面临八大挑战:反应慢的人类司机、恶劣天气、黑客……

李杉 李林 编译自 《纽约时报》 量子位 报道 | 公众号 QbitAI 无人驾驶汽车一定会实现,这大概已经是所有科技和汽车行业从业者的共识。分歧只不过是要不要人类司机时刻准备接管,以及到底何时才能量产。 但是,无人车要真正进入主流,仍要解决许多问题。以下就是这项技术面临的一些挑战: 1. 危急时刻,根本指望不上人类司机接管 三年前,谷歌无人车团队忽然推出一款无油门无刹车无方向盘的“三无”低速全自动无人车,就和这个问题有关。 此前,谷歌面向自家员工开展了自动驾驶汽车内测,车内摄像头记录下的测试人员表现,

08
您找到你想要的搜索结果了吗?
是的
没有找到

妙计:布隆过滤器

在谈布隆过滤器算法的之前,我们先说一说查找,比如在1亿数据中 查找数字X是否存在。 常见的方法是: 1,遍历查找,随着数据量的增长,查询的时间复杂度O(n)也是线性增长的。 2,对数据排序之后,进行二分查找,查找的时间复杂度 O(logn) 3,使用哈希表k-v结构存储,这样通过判断X是否在K的集合,时间复杂度是O(1)。 这些方法都不可避免的需要存储所有数据,随着数据量的增加,存储空间也不断增加。 一,布隆过滤器的原理: 当然还有一种不需要存储数据,快速判断数据X是否存在的神奇方法:松下问童子。 童子具有先验的知识,能够判断师傅(X)在山中采药。 若有多个童子都判断 师傅(X)在在山中采药。 我们是不是就可以更准确的判断X存在了。

02

布隆过滤器(BloomFilter)原理 实现和性能测试

布隆过滤器(BloomFilter)是一种大家在学校没怎么学过,但在计算机很多领域非常常用的数据结构,它可以用来高效判断某个key是否属于一个集合,有极高的插入和查询效率(O(1)),也非常省存储空间。当然它也不是完美无缺,它也有自己的缺点,接下来跟随我一起详细了解下BloomFilter的实现原理,以及它优缺点、应用场景,最后再看下Google guava包中BloomFilter的实现,并对比下它和HashSet在不同数据量下内存空间的使用情况。 学过数据结构的人都知道,在计算机领域我们经常通过牺牲空间换时间,或者牺牲时间换空间,BloomFilter给了我们一种新的思路——牺牲准确率换空间。是的,BloomFilter不是100%准确的,它是有可能有误判,但绝对不会有漏判断,说通俗点就是,BloomFilter有可能错杀好人,但不会放过任何一个坏人。BloomFilter最大的优点就是省空间,缺点就是不是100%准确,这点当然和它的实现原理有关。

02

布隆过滤器介绍

我们知道检查一个元素是否在某一个集合中,使用HashSet是比较好的选择,因为在不发生Hash碰撞的情况下它的时间复杂度为常数级别,但是在数据量比较大的情况下,使用HashSet将会占用大量的内存空间。举个例子,长城防火墙有100亿个需要屏蔽的网址,来自计算机的每一次请求都要经过防火墙的过滤判断请求URL是否在黑名单中,如果我们使用HashSet来实现过滤的话,我们假设每个URL的大小为64B,那么100亿个就至少需要大约640GB的内存空间,这显然是不符合实际情况的。另一种解决方案是我们可以将URL存入关系型数据库,每次计算机发起请求我们对数据库进行exits查询,然而这种方案适用于并发量比较小的情况,若并发量较大,那么我们就需要对数据库进行集群。

02

布隆过滤器redis缓存 顶

Bloom Filter布隆过滤器 算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希 表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时 间。 在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的存储空间越来越大,以及检索的时间越 来越长,导致内存开销太大、时间效率变低。 此时需要考虑解决的问题就是,在数据量比较大的情况下,既满足时间要求,又满足空间的要求。即我们需要一个时间和空间消耗都比较 小的数据结构和算法。Bloom Filter就是一种解决方案。 Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以 用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。 它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是Bloom Filter判断元 素不再集合,那肯定不在。如果判断元素存在集合中,有一定的概率判断错误。因此,Bloom Filter”不适合那些“零错误的应用场合。 而在能容忍低错误率的应用场合下,Bloom Filter比其他常见的算法(如hash,折半查找)极大节省了空间。 Bloom Filter 原理 布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我 们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检 元素很可能在。这就是布隆过滤器的基本思想。 Bloom Filter跟单哈希函数Bit-Map不同之处在于:Bloom Filter使用了k个哈希函数,每个字符串跟k个bit对应。从而降低了冲突的概 率。

02
领券