入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

100亿个query,1G内存如何找出这俩个文件的交集?分别给出近似算法和精确算法?

创建时间:2017-11-05 投稿人: 浏览次数:241

分析

近似算法

  近似算法,用布隆过滤器,对query进行哈希,开70亿个位,刚好差不多比1G小点,再从第一个文件中,读取query,一 个 一 个映射到布隆过滤器里面,再从第二个文件中读取query,一个一个在布隆过滤器里面查询,看是否存在,因为存在不一定准确,但是不存在一定准确,所以这个是可以解决的,所以它是近似算法。

精确算法

  精确算法,一个query字符串大概算60字节,100亿大概600G,那么我们可以进行哈希切割。那么我们切分6000块把源文件,即对源文件中的query字符串进行哈希得到key值,然后用除留余数法进行哈希(%6000),把不同的query放到不同的文件中。
  切割完毕后,读取第二个文件时也是对其分割成6000份,对其每一个字符串进行哈希(MD5),然后得到的key 用除留余数法 看落在那个被切割的子文件中,然后把子文件内容读取到unordered_map中,然后进行find,在不在就是不在。这个就是精确的算法。切割6000块,一块文件大概100M,所以也符合题意。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。