“输入是长度事先未知的 append only 数据流,目标是在任意时刻 (t) 用 (k) 个槽返回已见位置的均匀无放回样本。前 (k) 项直接入槽;第 (t k) 项以 (k/t) 概率进…”
资源协议 ​
流由更新 (a_1,\ldots,a_m) 顺序到达,算法通常一趟处理,只保留 (s\ll m) bits 状态;这是核心空间复杂度约束。任何算法都须报告 pass 数、update/query time 与空间口径。若算法使用随机摘要或近似输出,再另外说明误差尺度、成功概率及概率对哪些随机性取值;精确的确定性流算法并不需要这组参数。
网络包独立访客统计是例子:保存所有地址可精确计数但需线性空间;小摘要允许近似。把流写到磁盘再离线排序不属于小空间 streaming,尽管输入也按顺序读取。
一趟实例的状态演化 ​
处理同一包源地址流时,精确频率表、distinct 摘要与 heavy-hitter 摘要回答不同函数,状态和误差保证也不同。“流式”只规定资源协议,不能推出共同的统计接口。
若要求每次更新后立即输出,查询或解码时间会进入逐项延迟;只在流末输出则可把部分工作推迟到终点。持续监控与 one-shot summary 必须分别计费。
模型边界 ​
是否知道
滑动窗口只统计最近
状态机执行轨迹 ​
设状态只有 64 个 32-bit words。更新到来时,算法只能用当前状态、更新与固定随机种子计算下一状态,不能再次读取早先记录。对地址流 a,b,a,c,精确 distinct 状态若保存集合依次为 {a}、{a,b}、不变、{a,b,c};小空间估计器则只更新哈希寄存器,无法列出原键。
形式上写作
流末查询只运行解码器
概率量词和自适应性 ​
固定流保证先固定
对固定合法流
将失败率从常数降到
通信下界接口 ​
通信下界归约把流切成 Alice 前缀和 Bob 后缀。Alice 运行后只把
若底层通信问题需要
与在线和外存模型对照 ​
Online algorithm 强调未知未来下立即决策,可拥有线性记忆;external-memory 可反复随机访问磁盘,以 I/O 计费;streaming 主要限制 pass 与工作空间。三者都“顺序到达”时仍不能混用复杂度。
参考资料
- Alon, Matias, Szegedy, “The Space Complexity of Approximating Frequency Moments,” JCSS, 1999.
- S. Muthukrishnan, Data Streams: Algorithms and Applications, 2005.