Questions tagged «data-streams»

5
通过多次传递来减少st-connectivity的空间使用?
假设将具有个顶点的图表示为m个边的流,但是允许对该流进行多次遍历。Ñ 米GGGnnnmmm Monika Rauch Henzinger,Prabhakar Raghavan和Sridar Rajagopalan观察到Ω(n/k)Ω(n/k)\Omega(n/k)空间对于确定G中两个给定顶点之间是否存在路径是必要的GGG,如果允许对数据进行kkk次传递。(另请参阅技术报告版本。)但是,它们没有提供实际实现此限制的算法。我假设一种最佳算法实际上将在现实的计算模型中占用O((nlogn)/k)O((nlogn)/k)O((n\, \log\, n)/k)空间,因为如果一个人不能使用恒定大小的指针索引内存,则必须区分nnn不同的顶点。 如何使用O((n \,\ log \,n)/ k)空间确定kkk传递的图形连通性?O((nlogn)/k)O((nlogn)/k)O((n\, \log\, n)/k) 如果只允许一次通过,则输入数据可以存储为一组顶点的分区,如果在两个不同集合中的顶点之间看到一条边,则合并这些集。显然,这最多需要O(nlogn)O(nlogn)O(n\, \log\, n)空间。我的问题是关于k>1k>1k > 1:如何才能使用更多的通道来减少所需的空间? (为避免琐碎性,kkk是不能被常数先验限制的参数,而空间界限是涉及nnn和k的函数的表达式kkk。) 更新:即使对于k=2k=2k=2,也有一种只存储n/2n/2n/2个顶点的方法确实很有用。还是实际上对于某个常数c都存在一个更强的下界cn,而与k无关?cncncnccckkk

2
'k'最频繁出现的数字的算法
我一直在寻找最有效的(streaming ??)算法,该算法可以告诉我在任何时间点数据流中最常出现的“ k”个元素。这篇文章:“分而治之”的数据流算法使我对此感兴趣。 例如,假设有数字:(4,3,5,1,6,2,4,3,3,8,9,1)并且我查询了3个最频繁出现的数字(例如),那么我应该得到(3,4,1)作为答案。 我尝试在线搜索,但找不到任何可以提供方法的地方,并说那是最好的。一个简单的解决方案是使用堆或平衡的二叉树,但是我认为有更好的方法,我想知道它是否在某处记录了。 编辑:我正在寻找一种始终能给出正确答案的算法,而不是依赖某种或其他方式依赖数据分布的混合算法(其中很多出现在搜索结果中)

2
中位数选择的存储要求(两次通过算法)
在一篇经典论文中,Munro和Paterson研究了算法在随机排序的数组中查找中位数需要多少存储量的问题。他们特别关注以下模型: 输入从左到右被读取P次。 证明存储单元就足够了,但是只有P = 1才知道相应的下界。对于P> 1,我没有看到任何结果。有人知道这样的下限吗? Ø (ñ1个2 P)Ø(ñ1个2P)O(n^{\frac{1}{2P}}) 注意这里的主要困难是在第二遍输入不再是随机排序的。

5
无损压缩数据的限制是多少?(如果有这样的限制)
最近,我一直在处理与压缩有关的算法,我想知道哪种压缩率可以通过无损数据压缩实现。 到目前为止,我在该主题上唯一能找到的资源是维基百科: 对数字化数据(如视频,数字化电影和音频)的无损压缩可保留所有信息,但由于数据的固有熵,其压缩效果几乎不会比1:2更好。 不幸的是,维基百科的文章没有引用或引用来支持这种说法。我不是数据压缩专家,因此,对于您可以提供的有关此主题的任何信息,或者如果您可以向我提供比Wikipedia更可靠的信息来源,我将不胜感激。

6
“分而治之”数据流算法
存在哪些对大型数据流起作用的有用算法,而且它们的结果还很小,并且可以通过某种方式合并它们的结果来计算两个流的混合结果? 我可以列举几个: 很明显的东西,例如总和,最小值,最大值,计数,top-K等。 近似的所谓“基于草图”的流算法,用于直方图,计数不同的项目或计算分位数 还有什么呢? (我很感兴趣,因为我正在编写一个业余项目来监视分布式系统,其有效性直接取决于此类算法的有效性)

3
近似频率矩的界限
让是一个整数序列,其中每个一Ĵ ∈ { 1 ,2 ,... ,Ñ }。对于我∈ { 1 ,2 ,... ,Ñ },让米我 = | { j :a j = i } | 。第k个频率矩定义为a1,a2,…,ama1,a2,…,ama_1, a_2,\dotsc, a_maj∈{1,2,…,n}aj∈{1,2,…,n}a_j \in \{1,2,\dotsc,n\}i∈{1,2,…,n}i∈{1,2,…,n}i \in \{1,2,\dotsc,n\}mi=|{j:aj=i}|mi=|{j:aj=i}|m_i = |\{j : a_j = i\}|kkk Fk=∑i=1nmki.Fk=∑i=1nmik.\displaystyle F_k = \sum_{i=1}^n m_i^k. 在他们著名的论文《近似频率矩的空间复杂性》中,Alon等人。得到流算法近似于使用大致ø (Ñ 1 - 1FkFkF_k空间。他们还使用通信复杂性技术来获得Ω(n1−5O(n1−1k(logn+logm))O(n1−1k(log⁡n+log⁡m))O(n^{1-\frac{1}{k}}(\log n + \log …

4
连续聚类
因此,在与实时连续流数据进行群集方面,我面临一个问题。由于我拥有不断增长的数据集,因此我不确定哪种是运行高效集群的最佳方法。我提出了一些可能的解决方案,包括: 设置允许的数据点数限制,这样就可以在最早的数据点到达另一个数据点时就达到限制。从本质上讲,这表明较旧的数据与我们之间的关联性不再足够,无法通过丢弃这些数据来照顾我们丢失的内容。 一旦有足够的数据来进行良好的聚类,请考虑这种“设置”,并随着新点的出现,而不是重新聚类所有数据,而只是找出新点最靠近哪个聚类中心并将其添加到该聚类中心。这样做的好处是,您可以不必在每个新点上重新进行聚类,并且不必考虑聚类“足够好”而只存储聚类中心的所有其他点。不利的一面是从头开始使用所有数据点重新运行该算法可能会更准确。 虽然这些是我脑力激荡的一些潜在解决方案,但我想知道是否有更好的已知技术来解决此问题。我认为像Google这样的网站必须以某种方式处理它(我希望“添加更多的ram,服务器和处理器”或“不断扩展数据中心”不是唯一可用的答案)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.