了解Count Sketch数据结构和相关算法

时间:2012-01-04 20:48:27

标签: data-structures language-agnostic

围绕CountSketch数据结构及其相关算法进行工作。它似乎是一个很好的工具,用于查找流数据中的常见元素,它的附加特性使得一些有趣的属性可以找到频率上的大变化,可能类似于Twitter用于趋势主题的内容。

paper对于那些暂时不再采用更多学术方法的人来说有点难以理解,previous post这里确实对某些人有所帮助,对我而言,至少它仍然留下了很多几个问题。

据我了解,Count Sketch结构类似于bloom过滤器。但是哈希函数的选择让我感到困惑。该结构是N×M表,具有N个散列函数,其中M个可能值确定要改变的“桶”,并且每个N的另一个散列函数s是“成对独立”

是否要从通用散列系列中选择哈希值,比如说h(x)=((ax + b)%some_prime)%M?

如果是这样的话,那些返回+1或-1的s哈希在哪里?从一个桶中减去的原因是什么?

1 个答案:

答案 0 :(得分:3)

他们从桶中减去以使其他事件引起的加法/减法的平均效果为0.如果有一半的时间我加上&f; foo'的数量,一半的时间我减去计数&f; foo'然后在期待中,&#f; foo'不影响' bar'的计数估计。

选择像你描述的通用哈希函数确实有效,但它对于理论而不是实践来说最重要。 Salting您最喜欢的合理哈希函数也可以工作,您只需使用一些固定的哈希函数就可以根据预期值有意义地编写证明。

相关问题