D(m,n)是一个长度为m, 包含n个不同元素的信息流 (stream). 假设这些元素分别为[1,2,⋯,n], fi是元素在信息流中i的频数. 假设g()是任意一个函数, 则我们将∑i=1ng(fi)称为频数向量的g−sum.
如果g()是单调函数并且g(fi)≤O(fi2), 则用于估计G−sum的具有多重对数型空间复杂度的信息流算法(streaming algorithm)是存在的.
Stream−PolyLog是所有存在对应的多重对数型空间复杂度的信息流算法的G−sum的集合.
对于元素i∈[1,2,⋯,n], 如果g(fi)>γ∑jg(fj), 其中0<γ<1, 则我们称i为一个g-重型元素 (g-heavy element 或 g-heavy hitter). G−core是所有g-重型元素的集合.
已有文献证明, 对于元素[1,2,⋯,n], 它的频率向量是[f1,f2,⋯,fn], 如果某个元素是频率向量的L2范数的重型元素, 则它也是这个频率向量的g-重型元素.
UnivMon包括两部分, 即在线测量部件和离线估计部件. 在线测量部件的工作流程如算法1所示. 其工作流程可具体描述如下.信息流D(m,n)={a1,a2,⋯,am}中共有n个不同的元素. 令d=log2n. 我们建立d+1个梗概. 我们将这些梗概分别记为S0,S1,⋯,Sd. 此外, 梗概S1,S2,⋯,Sd分别对应于哈希函数h1,h2,⋯,hd, 且hk() (k=1,2,⋯,n)可以将一个元素随机地映射到0或者1. 当元素ai到达的时候, 我们将其插入S0中, 并且在其上查找L2-重型元素, 并将找到的重型元素插入Q0中. 之后, 对于Si (i=1,2,⋯,d), 我们依次进行如下操作: 如果h1(ai)⋅h2(ai)⋯hi(ai)=1, 则我们将ai插入梗概Si中, 并且在Si上查找L2重型元素, 之后将找到的重型元素存入Qi中.

以上过程处理完成以后, 我们就得到了d+1个序列Q0,Q1,⋯,Qd, 分别用于从数据平面的梗概S0,S1,⋯,Sd从提取出来的L2重型元素. 之后我们使用算法2来获取对G−sum的估计, 即对∑0ng(fi)的估计. 在算法2中, wj(i)是Qj中的第i个哈希桶中的元素的计数值.

为什么这两个算法是有效的, 我现在也不太明白. 我打算进一步调研原来文章中给出的相关文献, 理清这两个算法的内在逻辑. 我弄清楚并做好笔记以后会在这里给出链接.