文件名称:Url消重算法(BloomFilter)
文件大小:19KB
文件格式:RAR
更新时间:2011-03-04 09:06:14
BloomFilter Url 搜索引擎 消重 网络蜘蛛
本程序主要是BloomFilter算法的简化实现
因为C#非安全代码无法直接分配内存块,使用了int型数组代替,暂时为了简单没有使用位运算,比位运算消耗内存多16倍。
算法原理:
其首先申请一块大内存,并把内存中的所有位设置为0。对每一个URL,用10个不同的hash函数计算其hash值,并把这些hash与内存bit数大小取模,把取模后的10个数在内存对应的位置设为1。在设置前会判断该位是否被设置。如果10个hash值对应的bit位全被设置,则认为该URL已存在。该算法在web archive中实现。据其统计,平均为每个URL分配两个字节,可以达到零冲突。
本程序算法:
创建一个大小固定的数组,平均分为8段,前4段存储HASH函数(MD5)URL后的对应值,转换每4个字节为int,以转换后的int%每段数组的元素数,取模后的值对应的位置元素设置为1。后4段存储HASH函数(SHA1)URL后的对应值,具体算法相同。
如果在保存一个URL时,在8段数组中对应位置都已经被置1,则该URL已经存在,如有任意1位置没被置1,则该URL不存在。
【文件预览】:
testBloomFilter
----BloomFilter.cs(3KB)
----bin()
--------Debug()
----obj()
--------testBloomFilter.csproj.FileList.txt(166B)
--------Debug()
----testBloomFilter.csproj(2KB)
----Properties()
--------AssemblyInfo.cs(1KB)
----Program.cs(1KB)
testBloomFilter.suo
testBloomFilter.sln
readme.txt