形式陈述
定义族
对频率向量 ,用$\ell_p$ 范数公理库赋范向量空间Normed vector space带满足正定、齐次与三角不等式范数的向量空间。衡量整体规模时通常取 ;坐标 是 heavy hitter,若
取 或 分别得到 与 版本。在insertion-only 或 strict turnstile 流公理库插入流与 Turnstile 流Insertion-only stream · Turnstile stream以频率向量更新语义区分非负插入、严格 Turnstile 与一般正负流。中频率非负,绝对值可以省略;general turnstile 允许正负抵消,必须保留它。近似输出还要定义必报区、必不报区与灰区。
流量大户是实例。Top- 必须返回固定数量,即使第 与 名几乎相同;heavy hitters 按阈值,可能返回零项或多项,二者不等价。
Misra–Gries 状态
给定参数 ,Misra–Gries 维护至多 个键计数器。新项命中候选则加一;有空槽则以计数 1 插入;否则所有计数器减一,并删除变为 0 的项。
取 ,流为 。状态依次是 、、;读到 时全减并删除 ,得到 ;最后两项使状态成为 。
真实频率为 。候选计数不是精确频率:a 被低估 1,b 被低估 1。若接口需要输出真实超过阈值的项,可在允许二次扫描时只对候选重新计数。
直觉
配对不变量
每次全减可与“当前新项加 个候选项”这 个互异流位置配成一组并从分析中删除。全减次数至多 ,所以保存计数从不超过真实频率,且每个键的低估至多 。
任何频率严格大于 的键都不可能在这些互异组中被全部消去,因而一定留在候选表。这个证明依赖所有更新都是正的一次出现;给计数器直接处理负更新会失去“删除互异组”的证据。
例子与边界
、 与 top-k
插入流中 - heavy hitter 最多 个。General turnstile 的正负抵消要求明确取绝对频率和范数;CountSketch 用随机符号估计,并给出与去掉大坐标后的 尾部相关的误差,适合这类模型。
频率 的 top-2 必须区分 99 与 98;阈值 却可能把三者都报出。没有 frequency gap 时,固定名次对微小误差敏感,而 heavy-hitter 规格通过必报区、必不报区和灰区表达容忍度。
输出契约
完整规格应列出必报区、必不报区、灰区、频率估计误差、失败概率、流模型和是否允许第二趟。只承诺候选表大小为 ,不能推出无假阴性或计数准确。
推论与应用
在 insertion-only 流和 频率阈值下,Misra–Gries 摘要公理库Misra–Gries 摘要Misra–Gries algorithm · Frequent algorithm以 k−1 个候选计数器确定性捕获频率超过流长 1/k 的所有元素。用至多 个计数器生成所有频率超过 的候选,并给出确定性的加性欠估界。它不直接提供精确频率,也不覆盖带负更新的 turnstile 语义;需要精确输出时应再对候选做第二遍计数或接入独立验证层。
Heavy-hitter 规格把流量大户、热点键和高能坐标统一为带阈值与灰区的恢复问题。Misra–Gries 适合正更新下的 候选,CountSketch 则面向 turnstile 与 尾部;候选生成、频率验证和 top- 排名应按各自输出契约组合。
参考资料
- Misra, Gries, “Finding Repeated Elements,” 1982.
- Cormode, Hadjieleftheriou, “Finding Frequent Items in Data Streams,” VLDB 2008.