数据流基本问题--独立元素计数(二)
来源:互联网 发布:数据库数据库系统 编辑:程序博客网 时间:2024/05/16 23:57
该篇文章中问题的定义和上一篇文章《数据流基本问题--独立元素计数(一)》中一样。不过该篇文章里能给出-近似的算法。
一、算法的基本思想
该篇文章中的算法是上一篇文章中算法的改进。这里不再记录流中元素zeros(h(j))的最大值,而是将满足所有的元素放入到B中。如果流中有d个独立元素,那么平均会有个元素满足。所以应该是d的一个比较好的估计(|B|指的是B中元素总数目)。
二、算法的具体过程
算法的伪代码如下图所示。将一个元素j添加到B中时,是以g(j)和zeros(h(j))组成一对加进去的。没有直接存元素而是存元素哈希后的结果是为了节省空间的考虑。而且也存放zeros(h(j))是为了当B需要删除元素时需要用到它。
三、算法的评估
设为算法结束后|B|的大小,t为算法结束后z的取值。则对d的估计为:
可以证明,的期望和方差如下:
如果t=0,说明算法运行过程中并没有对z进行加一的操作。这时候计算的结果也就是|B|为d的精确解。
如果t>1,假设Fail事件为不是d的-近似。即:
可以证明
假设哈希函数g(i)可能有冲突造成的影响,上述算法结果是对d的-近似。
通过使用median trick,我们可以将算法提高到对d的近似(对所有)。
3 0
- 数据流基本问题--独立元素计数(二)
- 数据流基本问题--独立元素计数(一)
- 数据流基本问题--确定频繁元素(二)lossy counting和sticky sampling
- 数据流基本问题--确定频繁元素(一)
- 计数问题(二)
- 数据流基本问题--矩估计(一)
- 数据流基本问题---采样问题
- 数据流操作(二)
- 数据流(二)
- MapReduce数据流(二)
- MapReduce数据流(二)
- MapReduce数据流(二)
- 数据流分析(二)
- 数据流挖掘——窗口内的计数问题
- 数据流基本
- SSIS_数据流转换(行计数&派生列&排序)
- 计数问题(一)
- 计数问题(/C++)
- linux内存管理(堆栈、数组)
- 浏览器兼容性
- SQLite使用
- 集合框架1
- MapReduce点滴
- 数据流基本问题--独立元素计数(二)
- Android使用ActionBar和ViewPager切换页面
- Android 性能优化(六)——资源文件的存放
- excel 导入文本数据乱码问题
- 冒泡排序法
- xml转json
- Cannot instantiate the type HttpClient问题
- drf
- 程序员家里高效工作5步