“Misra–Gries 为频繁项与重项问题处理insertion only 流 $a 1,\ldots,a m$,用一个至多含 $k 1$ 个键的字典维护候选及计数:命中候选就加一;有空槽则…”
形式陈述 ​
三种更新语义 ​
在数据流模型中,以整数频率向量
库存入库是插入流;含出库且库存从不为负是 strict turnstile;两个数据源差值的更正可产生负频率,属于 general。严格模型约束每个时间前缀,仅最终向量非负仍不够。
直觉
一条序列的逐态判定 ​
从
使坐标依次成为 3、1,因而在 strict turnstile 合法。反序执行则经过
若实现把负计数饱和截成 0,反序输入会先得到 0、再得到 3,而不是语义要求的 1。这个错误在最终只检查“非负”时不易发现,因此测试必须观察每次更新后的实际频率。
例子与边界
范数与查询定义 ​
Insertion-only 中
“支持删除”不能替代模型名称。Count-Min 一类使用非负计数上界的论证常依赖插入语义;线性 sketch 则因状态是
推论与应用
分布式合并 ​
两个站点产生局部频率
若各站只见插入,合并后仍是插入流;若站点用正负日志互相抵消,全局接口就至少需要 turnstile 语义。
Misra–Gries 等非线性摘要需要专门 merge 后重新压缩,状态字节不能直接逐项相加。可合并也不等于撤销任意历史更新:算法只看净频率状态,未必保留哪条日志产生了它。
与动态集合的分界 ​
动态字典可随机访问并精确保存活动键,空间通常随宇宙中出现的键数增长;streaming 只保留次线性状态,删除后不能回看被遗忘信息。两者都使用“插入/删除”词汇,资源与接口并不相同。
模型还应说明更新值的位宽、流长是否已知、坐标宇宙能否动态增长,以及查询是一次性还是持续输出。这些参数会影响计数器空间和失败概率的合成。
参考资料
- S. Muthukrishnan, “Data Streams: Algorithms and Applications,” Foundations and Trends in Theoretical Computer Science 1(2), 2005, pp. 117–236.
- Graham Cormode and S. Muthukrishnan, “An Improved Data Stream Summary: The Count-Min Sketch and Its Applications,” Journal of Algorithms 55(1), 2005, pp. 58–75.
- Noga Alon, Yossi Matias, and Mario Szegedy, “The Space Complexity of Approximating the Frequency Moments,” Journal of Computer and System Sciences 58(1), 1999, pp. 137–147.