![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据流算法
文章平均质量分 71
dm_ustc
微博:http://weibo.com/u/1769505225
展开
-
数据流基本问题--确定频繁元素(一)
下面可以谈论下如何求频繁元素的一个问题。一、问题定义如果一个数据流,其中m为数据流的大小,。我们可以定义每个元素出现的次数为,其中为第i个元素出现的次数。容易得出:。如果给定参数k,我们想求出所有出现次数超过m/k的元素。也就是输出集合:。下面我们先从一个简单特例入手,对这个问题进行分析和解决。二.简单情况有个经典的过半元素查找问题,在编程之美里面也有分析(寻找发帖水王)。就是原创 2015-05-21 19:31:29 · 5299 阅读 · 0 评论 -
数据流基本问题---采样问题
在数据流处理中的一个常见问题就是数据采样问题。我们希望从流中选择一个子集,以便能够对它进行查询并给出统计性上对整个流具有代表性的结果。一、蓄水池采样具体问题是我们要从数据流中随机抽取k个元素。如果数据流长度m事先已经知道,那这个问题就非常简单,每个元素以k/m的概率选取即可。但这个问题要求m未知,那就不太好搞了。这个问题的解法是保存一个k大小的窗口。数据流的前k个元素依次加入到窗口。对于数原创 2015-05-20 21:58:02 · 6449 阅读 · 2 评论 -
数据流基本问题--矩估计(一)
前面数据流基本问题--独立元素计数(一)和数据流基本问题--独立元素计数(二)我们谈到了独立元素技术。在本文中,我们将独立元素计数问题推广到更一般的问题,也就是矩估计问题。我们将先介绍矩的定义,然后介绍一个无偏的估计算法,最后介绍如何改进结果。一、矩定义原创 2015-05-26 18:54:28 · 2712 阅读 · 1 评论 -
数据流小问题--find the missing elements
这是关于数据流的一个有趣的小问题。问题可以定义为:整个数据流里的元素为1到n的排列(无序),假设移除了k个数,如何找出这k个数。要求使用尽可能少的空间。而且只能顺序扫描数据一次。对于这个问题,如果没有空间的限制,我们可以使用bitmap轻松搞定,bitmap使用n位即可,扫描到每个元素i,就把第i位设为1,最后结束后值为0的那些位置序号找出来就是所求结果,空间复杂度为O(n)。这个问题时间复杂原创 2015-05-29 10:54:08 · 1223 阅读 · 0 评论 -
数据流基本问题--独立元素计数(一)
下面我们讨论如何计算独立元素数目。一、问题定义如果一个数据流,其中m为数据流的大小,。我们可以定义每个元素出现的次数为,其中为第i个元素出现的次数。假设,容易得知d为在数据流中出现的不同元素数目,也就是独立元素数目。对于这个问题,可以在内存中使用高效的搜索结构(比如平衡BST等)保留当前已经出现的元素。但是如果元素数目实在太多以致搜索结构无法访问内存时,我们可以使用更多的机器或者将数据原创 2015-05-23 09:25:44 · 3008 阅读 · 0 评论 -
数据流算法
在接下来的几个博客里,我将讲述基础的数据流算法,包括采样问题,频繁元素问题,独立元素个数问题,k阶矩问题。后续可能会添加高阶内容。原创 2015-05-20 20:57:32 · 5590 阅读 · 1 评论 -
数据流基本问题--确定频繁元素(二)lossy counting和sticky sampling
我们之前在数据流基本问题--确定频繁元素(一)中提到了频繁元素的一个计算问题(找出出现次数超过m/k的元素),里面的算法返回的结果里肯定包含出现次数超过m/k的元素,但是也可能包含不超过m/k的元素(false positive)。对于这个缺点,必须得进行额外一次的重新扫描,以确定最终答案。我们只允许进行一次的扫描,那么该怎么去做呢?这里我们简单讨论下lossy counting算法。其实原创 2015-05-27 19:56:00 · 8714 阅读 · 0 评论 -
数据流基本问题--基于sketch进行Frequency Estimation
如果一个数据流,其中m为数据流的大小,。我们可以定义每个元素出现的次数为,其中为第i个元素出现的次数。这篇博客就是讲下的估计问题(Frequency Estimation)。在数据流基本问题--确定频繁元素里面的方法也可以对元素出现次数进行估计。但是这个方法如果该这种方法处理了两个数据流,无法对处理的结果进行汇总得到两个数据流合并后的结果进行估计。而且该方法只能针对vanilla原创 2015-05-25 18:42:30 · 13653 阅读 · 2 评论 -
数据流基本问题--独立元素计数(二)
该篇文章中问题的定义和上一篇文章《数据流基本问题--独立元素计数(一)》点击打开链接中一样。不过该篇文章里能给出-近似的算法。一、算法的基本思想该篇文章中的算法是上一篇文章中算法的改进。这里不再记录流中元素zeros(h(j))的最大值,而是将满足所有的元素放入到B中。如果流中有d个独立元素,那么平均会有个元素满足。所以应该是d的一个比较好的估计(|B|指的是B中元素总数目)。二、算法原创 2015-05-24 18:16:28 · 1546 阅读 · 0 评论