提供布隆过滤器的实现。 布隆过滤器是一种空间效率很高的概率型数据结构,用于判断一个元素是否在集合中。 它允许一定的假阳性,但绝不允许假阴性。
BloomFilter
01 Syntax
Microsoft.VisualBasic.ComponentModel.DataSourceModel.Repository.BloomFilter
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .ctor | 1 | 使用指定的位数组大小和哈希函数数量初始化 BloomFilter 类的新实例。 |
| Create | 1 | 根据期望的元素数量和目标假阳性率,自动计算最优参数并初始化 BloomFilter 类的新实例。 |
| Add | 1 | 将指定的元素添加到布隆过滤器中。 |
| Contains | 1 | 检查布隆过滤器中是否可能包含指定的元素。 |
| OptimalM | 1 | 根据给定的元素数量和假阳性率,计算最优的位数组大小。 |
| OptimalK | 1 | 根据给定的位数组大小和元素数量,计算最优的哈希函数数量。 |
| GetHashPositions | 1 | 获取元素在位数组中映射的 k 个位置。 这里使用双哈希技术来生成 k 个独立的哈希值。 |
| ToArray | 1 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| m | 1 | length of the BitArray |
| k | 1 | 哈希函数的数量 |
| FalsePositiveRate | 1 | 获取当前布隆过滤器的理论假阳性率。 |
| CheckItem | 1 |
04 Fields
05 Members
#ctor(
Int32, Int32)使用指定的位数组大小和哈希函数数量初始化 BloomFilter 类的新实例。
Parameters
| Name | Type | Description |
|---|---|---|
m | Int32 | 位数组的大小。必须为正数。 |
k | Int32 | 哈希函数的数量。必须为正数。 |
Create(
Int32, Double)根据期望的元素数量和目标假阳性率,自动计算最优参数并初始化 BloomFilter 类的新实例。
Parameters
| Name | Type | Description |
|---|---|---|
expectedItems | Int32 | 预计将要插入的元素数量。必须为正数。 |
desiredFalsePositiveRate | Double | 期望的假阳性率,范围在 (0, 1) 之间。 |
Add(
String)将指定的元素添加到布隆过滤器中。
Parameters
| Name | Type | Description |
|---|---|---|
item | String | 要添加的元素。不能为 Nothing。 |
Contains(
String)检查布隆过滤器中是否可能包含指定的元素。
Parameters
| Name | Type | Description |
|---|---|---|
item | String | 要检查的元素。不能为 Nothing。 |
Returns
如果元素可能存在,则为 true;如果元素绝对不存在,则为 false。
OptimalM(
Int32, Double)根据给定的元素数量和假阳性率,计算最优的位数组大小。
Parameters
| Name | Type | Description |
|---|---|---|
n | Int32 | 预计插入的元素数量。 |
p | Double | 期望的假阳性率。 |
Returns
最优的位数组大小。
OptimalK(
Int32, Int32)根据给定的位数组大小和元素数量,计算最优的哈希函数数量。
Parameters
| Name | Type | Description |
|---|---|---|
m | Int32 | 位数组的大小。 |
n | Int32 | 预计插入的元素数量。 |
Returns
最优的哈希函数数量。
GetHashPositions(
String)获取元素在位数组中映射的 k 个位置。 这里使用双哈希技术来生成 k 个独立的哈希值。
Parameters
| Name | Type | Description |
|---|---|---|
item | String | 要哈希的元素。 |
Returns
包含 k 个位置的整数数组。
m
length of the BitArray
Returns
位数组的长度
k
哈希函数的数量
FalsePositiveRate(
Int32)获取当前布隆过滤器的理论假阳性率。
Parameters
| Name | Type | Description |
|---|---|---|
currentItemCount | Int32 | 当前已插入的元素数量。 |
Returns
理论假阳性率。
bitmap
使用 BitArray 来高效地存储位数组
prime
Knuth's multiplicative constant
prime
CheckItem
ToArray()