Fast Algorithm for GK Summary算法
来源:互联网 发布:二级域名做优化 编辑:程序博客网 时间:2024/04/28 06:32
- 前言
- 算法思路
- 1 数据量固定的算法
- 2 数据量固定的算法复杂度
- 3 流式数据算法
- 4 流式算法复杂度分析
- 参考文献
0.前言
本文主要介绍Zhang and Wang利用GK Summary的Merge与Prune操作来构建新的
1.算法思路
Zhang and Wang在论文先描述:1)数据量固定的算法,即已知数据量
1.1 数据量固定的算法
首先考虑:数据量固定场景,论文提出多层
其中
for ( i = i; i ≤ N; i++ ){ insert vi into s0; //新进数据直接插入s0 if ( |s0| < b ) //s0没满,则继续插入 contiune; sort s0; //s0满了,则排序并执行compress操作 sc = compress(s0, 1/b); //生成sc,1/b为prune增加误差,对应生成b/2个元素,s0误差为0 s0 = ∅; for ( k = 1; k <= L; k++ ) { if ( |sk| == 0 ) //sk是否为空 { sk = sc; //为空,则加入sc break; } else { tmp = merge(sk, sc); //否则,sc与sk进行merge,此时对应误差max(ϵk, 1/b) sc = compress(tmp, 1/b); //ϵk为sk的误差,继续compress,max(ϵk, b/2) + 1/b sk = ∅ //sk置空,可以归纳出,sk存在summary时,误差为k*(1/b) } //上层误差比下层大。 }}
方便理解,对应图示如下:
证明:对于第
对于第
最终查询时,会将所有层的
上述可见,
1.2 数据量固定的算法复杂度
论文给出算法的空间复杂度为:
GK Summary算法的空间复杂度
论文给出平均每个元素
算法主要是
1.3 流式数据算法
现在考虑流式数据场景,论文将流式数据进行分阶段进行构建summary,将流按照对于大小来分段。阶段1为
算法流程如下:
S = ∅;SC = ∅; k = 0; N = 1/ε; //初始化值 while ( not EOS ) { e = next element in stream; //流式系统新数据 n++; SC = Update(e, SC, ε/2); // 调用上述固定长度的fast quantile算法,生成对应summary if ( n == N) // 第i阶段结束 { // 下面过程生成第i阶段的summary SC,误差边界ε/2 s_all = s0; for ( i = 1; i <= L; i++ ) { s_all = Merge(s_all, si); } Sk = compress( s_all, ε/2); // 将summary compress到2/ε,减少summary数 S = S ∪ Sk; // 合并所有阶段summary SC = ∅; // 重置 n = 0; N = 2×N; } }
生成最终
// 直接结束当前阶段,生成summaryif ( SC != empty; ){ s_all = s0; for ( i = 1; i <= L; i++ ) { s_all = Merge(s_all, si); } Sk = compress( s_all, ε/2 );}// merge所有的阶段的summaryS = S0for ( i = 1; i ≤ k; i++ ) S = Merge(S, Si);
1.4 流式算法复杂度分析
论文给出空间复杂度:
参考文献
- A fast algorithm for approximate quantiles论文: https://pdfs.semanticscholar.org/03a0/f978de91f70249dc39de75e8958c49df4583.pdf
- Emory大学Stream DB System课程关于A Fast Algorithm算法材料:
http://www.mathcs.emory.edu/~cheung/Courses/584-StreamDB/Syllabus/08-Quantile/Zhang.html - Emory大学Stream DB System课程关于A Fast Algorithm算法材料:
http://www.mathcs.emory.edu/~cheung/Courses/584-StreamDB/Syllabus/08-Quantile/Zhang2.html
- Fast Algorithm for GK Summary算法
- 分布式GK Summary算法
- FAST Algorithm for Corner Detection
- GK Tools for Joomla!
- Fast Exponentiation Algorithm(快速幂算法)
- gk
- HybridList - A fast N lg (N) sort algorithm for lists
- Fast CU Depth Decision Algorithm for HEVC Intra Coding
- Fast CU Depth Decision Algorithm for HEVC Intra Coding
- 深度学习,A fast learning algorithm for deep belief nets
- Chapter7. Sorting algorithm summary C++/Python 排序算法总结
- Java Algorithm Learning Summary
- 【Leetcode Algorithm】Summary Ranges
- interview sorting algorithm summary
- Hungarian Algorithm Summary
- Summary of Analysis of Algorithm
- Fast CU Depth Decision Algorithm for HEVC Intra Coding文章实现
- DBN训练学习-A fast Learning algorithm for deep belief nets
- Fiddler 抓包工具总结
- NOSQL学习总结
- 【Scikit-Learn 中文文档】分解成分中的信号(矩阵分解问题)
- HDOJ-3507 Print Article (斜率优化dp)
- HDU 5438 Ponds
- Fast Algorithm for GK Summary算法
- 【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计
- 虚幻4安装方法
- leetCode-Beautiful Arrangement II
- xilinx -- 逻辑单元CLB、Slice、LUT
- RFID射频识别基本知识框架
- 【Scikit-Learn 中文文档】新异类和异常值检测
- 小小总结
- 10.Python