考虑我们有一个算法,接收一条假设很长的键流。随着我们处理每个密钥,它会生成0到1之间的值,以供后续检索。输入集足够大,因此我们无法为每个键存储一个值。生成值的规则在键之间是独立的。
现在假设我们可以容忍后续查找中的误差,但我们仍希望最小化检索值和原始值之间的差异(即渐近地在许多随机检索中)。
例如,如果给定密钥的原始值为0.008,则检索0.06比检索0.6要好得多。
我们可以使用哪些数据结构或算法来解决这个问题?
布隆过滤器是我能想到的最接近的数据结构。可以量化输出范围,为每个桶使用布隆过滤器,然后在检索时以某种方式组合其输出,以估计最可能的值。在我继续这条路并重新发明轮子之前,是否有任何已知的数据结构、算法、理论或实际方法来解决这个问题?
我理想情况下正在寻找一种可以参数化空间和误差率之间权衡的解决方案。
现在假设我们可以容忍后续查找中的误差,但我们仍希望最小化检索值和原始值之间的差异(即渐近地在许多随机检索中)。
例如,如果给定密钥的原始值为0.008,则检索0.06比检索0.6要好得多。
我们可以使用哪些数据结构或算法来解决这个问题?
布隆过滤器是我能想到的最接近的数据结构。可以量化输出范围,为每个桶使用布隆过滤器,然后在检索时以某种方式组合其输出,以估计最可能的值。在我继续这条路并重新发明轮子之前,是否有任何已知的数据结构、算法、理论或实际方法来解决这个问题?
我理想情况下正在寻找一种可以参数化空间和误差率之间权衡的解决方案。