COMP5270 Week 8 总结:Streaming and Sketching I(题解 + 知识点)
课程: COMP5270 - Randomness, Probability, and Algorithms
学期: S1 2026
来源: Week 8 - Streaming and Sketching I, Weeks 8 and 9 going-further readings, Week 8 - Tutorial 8 (Solutions)
Part 1: Tutorial 8 详细题解
Warm-up
Problem 1: Morris counter 的 median-of-means 证明
题目: 复习 Morris counter 的 median-of-means proof,证明讲义中的结果。
题解:
Morris counter 返回的估计记为
以及:
因此
但方差是
当
解决办法是先做 average:
运行
期望仍然是
取:
即可让 Chebyshev 给出常数成功概率,即:
然后用 median trick:独立重复这个“平均估计器”
本题用到的知识点:
- Morris counter 的无偏性与大方差。
- 平均
个独立估计器使方差除以 。 - Chebyshev 给常数成功率。
- Median trick 做概率放大。
Problem 2: Mean-of-medians 为什么不行?
题目: 若不用 median-of-means,而是反过来用 mean-of-medians,会怎样?
题解:
mean-of-medians 的问题是:Morris counter 单次估计一开始就不是“常数概率足够准”的估计器。
median trick 的前提是:每个 block 的估计已经有至少
但如果一开始直接取若干个 Morris counters 的 median,由于每个单独 counter 方差太大,good probability 可能很低。此时中位数不一定好。
换句话说:
- means 的作用:先降方差,让一个 block 变得可靠;
- median 的作用:把可靠 block 的失败概率放大到很小。
顺序不能随便换。
本题用到的知识点:
- Median trick 需要 base estimator 有常数成功概率。
- Means 降方差,median 降失败概率。
- 方差太大的单估计器不能直接取 median。
Problem 3: BJKST 使用 truly random hash functions 的空间
题目: 如果 BJKST 算法不用 strongly universal hash family,而用 truly random hash functions,空间会变成多少?
题解:
Truly random hash function
每个输出需要:
bits,一共有
bits。
而 strongly universal hash family 的好处是:只需存随机 seed 或少量参数,通常:
bits 就能描述一个 hash function。
所以 streaming 算法必须避免 truly random hash function,否则仅 hash function 本身就太大。
本题用到的知识点:
- Truly random function 表需要为每个输入存输出。
- Strongly universal hash family 可用短 seed 描述。
- Streaming space 要把 hash seed 也算进去。
Problem 4: BJKST 为什么还要用
?
题目: BJKST 算法中为什么用 hash function
题解:
BJKST 要维护通过 tidemark threshold 的 distinct
elements,但直接存元素
bits。
如果 bucket
甚至还要乘上 log factors。
使用另一个 hash function:
是为了存较短的 fingerprint
因此
本题用到的知识点:
- Streaming algorithm 中存元素 ID 的
成本很贵。 - Fingerprinting/hash compression。
- BJKST 用
做 sampling level,用 做 compact representation。
Problem Solving
Problem 5: Careful Morris counter
题目: 分析 careful variant of Morris
counter:不再以概率
题解:
令
当第
更新:
a) 期望
条件在
因为:
所以:
取全期望:
由
因此
b) 方差
计算二阶矩:
因为
用
因此:
所以:
c) 用 median trick
由 Chebyshev:
若取
次,空间约为:
d) 不用 median trick
若希望单个 counter 直接失败概率
可由 Chebyshev 直接得到:
存 exponent
所以:
存
这得到讲义中的 additive log bound。
e) 如何实现概率 ?
理论上可以从
则 increment。
在有限计算机上,可先把
因为
也是有理数。若该概率写成
本题用到的知识点:
- Conditional expectation 计算 Morris-style counter。
- 二阶矩推方差。
- Chebyshev 控制 multiplicative error。
- median trick 与 careful parameter tuning。
- 有理概率 Bernoulli sampling。
Problem 6: Misra-Gries 输出 heavy hitters
题目: 给定 stream
修改 Misra-Gries 输出集合
空间
题解:
运行 Misra-Gries,参数取:
Misra-Gries guarantee:
因为
输出:
若
所以:
因此
反过来,若
又因为
即:
因此:
空间方面,Misra-Gries 只存
本题用到的知识点:
- Misra-Gries additive underestimate guarantee。
- Heavy hitter threshold sandwich。
- 选择
让误差变成 。
Problem 7:
Bottom- distinct elements
algorithm
题目: Bottom-
证明
题解:
令
附近,所以:
应接近
上尾:
这等价于第
定义 indicator:
对
若
期望:
strongly universal 给出 pairwise independence,所以:
用 Chebyshev,当
可调常数使其
下尾:
这等价于第
定义:
若
同理:
用 Chebyshev,当:
时下尾概率也可控制为
Union bound 后,以至少
再用 median trick 可把成功概率提升到
空间复杂度
需要存:
- hash function seed:
; 个 hash values; - 若做 median trick,再乘
。
所以:
bits 级别。
本题用到的知识点:
- Order statistics:第
小 hash 值约为 。 - Strongly universal 提供 pairwise independence。
- Chebyshev 足够分析 Bottom-
。 - Median trick 放大成功概率。
Advanced
Problem 8: 用 JL sketch 估计 stream 中平均向量大小
题目: stream 中每个元素
的
题解:
使用 JL random projection。
取随机矩阵:
其中:
取
JL 保证对固定向量
以高概率成立。
streaming 中维护:
因为
最后:
输出:
作为
空间上,只存
其中
随机 bits 若朴素存 Gaussian matrix,需要
本题用到的知识点:
- JL lemma 保持
norm。 - Linear sketch:
。 - Streaming 中只维护 sketch 向量,不存原始数据。
- 忽略随机矩阵存储时空间可很小。
Part 2: Week 8 讲义知识点
0. 基础版导读:streaming 为什么不是普通数组问题?
Week 8 开始进入 Streaming and Sketching。Streaming model 的限制是:
数据一个一个到来,只能顺序看,不能把所有数据都存下来。
例如网络 packet、搜索日志、点击流、交易流。数据长度
frequency vector 是核心语言
很多 stream 都可以表示成 frequency vector:
那么
常见任务:
: distinct elements 数量,即 。 : stream 总长度,即 。 - heavy hitters: 找出频率很大的元素。
- norms: 估计
等。
讲义中的算法经常不保存整个
stream 类型要先分清
读题时先判断更新形式:
- Insertion-only / cash register:只会出现
。 - Strict turnstile:允许加减,但保证最终
。 - General turnstile:允许加减,
可以为负。
Week 8 主要关注 insertion-only;Week 9 会更系统讨论 sketch 和 turnstile。
Misra-Gries 的直觉:抵消法
Misra-Gries 用来找 heavy hitters。它维护最多
处理新元素
- 如果
已在表中,counter 加 1。 - 如果
不在表中且表未满,把 放入,counter 设为 1。 - 如果
不在表中且表已满,所有 counters 减 1,减到 0 的删除。
第 3 步的直觉是:删除一组
常用 guarantee 是:
也就是说 Misra-Gries 的估计可能低估,但低估量有限。
Morris counter 的直觉:用随机性压缩计数
普通计数器数到
它只保存一个 counter
把
为什么合理? 当
单个 Morris counter 方差较大,所以要重复:
- 多个 counter 求平均,降低 variance。
- 多组平均再取 median,把成功概率放大到
。
这就是 tutorial 中 median-of-means 的来源。
distinct elements / 为什么难?
如果只数 stream 长度,普通 counter 就够了。但
朴素做法需要保存一个 set,空间可能是
随机化算法的共同直觉是:
给每个 distinct item 一个随机 hash 值;distinct item 越多,就越可能看到很小的 hash 值。
Bottom-
因为
AMS / Tidemark / BJKST 的共同思想
这些算法都估计
- Tidemark / AMS:观察 hash 值中 trailing zeros 的最大数量。
- BJKST:维护某个 sampling level 下被保留的 distinct items;集合太大就升 level,降低采样概率。
- Bottom-
:直接保存最小的 个 hash values。
共同思想是 subsampling:随机保留一小部分元素,再从样本反推总体规模。
证明套路
- 要证明无偏:直接算 expectation。
- 要控制误差:先算 variance,再用 Chebyshev。
- 要把常数成功率变成
:使用 median trick。 - 分析 distinct elements:把 hash values 看成
上的随机点。 - 分析 heavy hitters:把 decrement-all 看成删除一组互不相同的元素。
1. Streaming model
输入不是一次性给出,而是 stream:
每个
算法通常只允许 one pass,并且空间:
理想是:
时间通常不是主要限制,空间是核心限制。
2. Frequency vector
对 stream 定义 frequency:
于是:
在 cash register model 中,频率只增不减。
3. Misra-Gries algorithm
目标:以小空间近似所有 frequencies。
参数
维护至多
更新规则:
- 若 item 已有 counter,加 1;
- 若没有且 counter 数未满,插入并设为 1;
- 若没有且已满,所有 counters 减 1,减到 0 的删除。
Guarantee:
空间:
Misra-Gries 是 deterministic one-pass algorithm。
4. Majority problem
要找是否存在
用 Misra-Gries 取
5. Morris counter
普通精确计数到
bits。
Morris counter 只存指数
- 初始
; - 每次事件发生,以概率
做 ; - 输出:
性质:
单次方差大,需要 median-of-means 或 careful variant。
6. Careful Morris counter
把 base 从
- 以概率
将 乘以 ; - 输出
。
通过调
估计,并且空间:
这是 doubly logarithmic in
7. Distinct elements /
Distinct elements 数:
也叫
8. Tidemark / AMS algorithm
取 strongly universal
定义:
为二进制 trailing zeros 数。
维护最大 trailing zeros:
输出约:
得到 constant-factor estimate。用 median trick 可把成功率放大。
空间:
9. BJKST algorithm
BJKST 目标是
核心思想:
- 用
的 trailing zeros 做 subsampling level; - 用
做 compact bucket/fingerprint; - 维护一个大小约
的 set ; - 若
太大,提高 threshold 并删掉不够高的元素。
Guarantee:
空间:
10. Week 8-9 going further: data stream algorithms
Chakrabarti 的 streaming notes 进一步系统化了:
- one-pass vs multi-pass;
- cash register vs turnstile;
- frequency moments
; - sketches 的 mergeability;
- lower bounds。
本课程 Week 8 的重点是三类典型问题:
| 问题 | 工具 |
|---|---|
| frequent elements | Misra-Gries |
| approximate counting | Morris counter |
| distinct elements | AMS/Tidemark, BJKST, Bottom- |
本周核心记忆
| 主题 | 关键结论 |
|---|---|
| Streaming | 输入太大,空间是主要资源 |
| Misra-Gries | |
| MG space | |
| Morris counter | |
| Morris variance | |
| Careful Morris | |
| Distinct elements | |
| Tidemark | constant-factor |
| BJKST | |
| Bottom- |
第 |