入门客AI创业平台(我带你入门,你带我飞行)
博文笔记
  • 当前位置:
  • 入门客AI创业平台
  • >
  • 博文笔记
  • >
  • 给两个文件,分别有100亿个URL,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法。

给两个文件,分别有100亿个URL,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法。

创建时间:2017-08-18 投稿人: 浏览次数:488

思路

分析

1G内存为10亿字节,所以无法把100亿直接载入内存,所以我们可以通过哈希与位图的结合来处理该问题。先哈希到位图上,在把俩个位图按位与求其交集。

解法

1.我们可以申请100个vector空间,每一个vector空间保存初始化过的1亿个无符号整数。
2.用字符串哈希函数对每个url的MD5结果进行哈希,然后把字符串哈希函数得到的整数结果再进行二次哈希,每个整数都模上100,把该结果作为vector空间的下标。
3 再次把字符串哈希函数的结果模上1亿,把得到的结果在相应的vector中用直接定址法对相应元素赋值为1。
4 把第二个文件重复1-3步,也得到一个哈希过的vector的结果。
5 对相应的vector进行按位与。
6 把任意一个文件的vector结果取出,再对任一一个文件进行遍历,每取出一个url对其先MD5运算,再用字符串哈希再模上100,再找至相应vector中继续用字符串哈希结果模上1亿,再看在该vector中相应元素是否为1,如果为1将url输出不为1代表交集中无该url。

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