COMP5270 Week 8 总结:Streaming and Sketching I(题解 + 知识点)
课程: COMP5270 - Randomness, Probability, and Algorithms 学期: S1 2026 来源: Week 8 Lecture Notes & Tutorial 8 Solutions
Part 1: Tutorial 8 详细题解
本部分按官方 Solutions PDF整理,每题含完整题目和逐步展开的详细解答。
Tutorial 难度总览
| 题目 | 所属部分 | 难度 | 复习建议 |
|---|---|---|---|
| Problem 1 | Warm-up | 需读讲义;median-of-means 证明梳理 | 必做:理解为什么要"均值的中位数" |
| Problem 2 | Warm-up | 需读讲义;"mean-of-medians" 对比 | 概念题:理解顺序不能互换 |
| Problem 3 | Warm-up | 需读讲义;BJKST 真随机 vs 强 universal | 概念题:理解强 universal 省空间的作用 |
| Problem 4 | Warm-up | 需读讲义;BJKST 用 |
概念题:理解两层哈希省空间 |
| Problem 5 | Problem Solving | 重要,必须检查是否理解 Morris Counter | 重点:逐步推导 careful variant 的期望、方差和空间 |
| Problem 6 | Problem Solving | 短但需要关键想法;若没思路可直接看解答 | 推荐:Heavy Hitters 如何从 Misra-Gries 修改得到 |
| Problem 7 | Problem Solving | 较复杂,但有价值;可以跳过但要看算法和解答 | 推荐:Bottom- |
| Problem 8 | Advanced | 了解即可 | 扩展:流式 JL 降维计算均值向量大小 |
Problem 1: Morris Counter 的 median-of-means 证明梳理
题目: 过一遍 Morris Counter 的"median-of-means"证明,理解为什么需要这个技巧。
题解:
已知 Morris Counter 的随机变量
为什么直接用 Chebyshev 不够
由 Chebyshev 不等式,对估计量
当
第一步:均值法降方差(means)
独立运行
现在 Chebyshev 给出:
取
第二步:中位数法升概率(medians)
对失败概率为常数(比如
若超过一半的运行都失败了,则中位数也会是坏估计,但这事件的概率以指数速度衰减(类似
Chernoff 界),最终失败概率降到
组合:总空间
每份均值组需
Problem 2: "mean-of-medians" 为什么不行
题目: 如果换成"先取中位数、再取均值"(mean-of-medians),会发生什么?
题解:
"均值的中位数"(median-of-means)有效是因为:先用均值法让每个副本的失败概率降到常数(比如
如果改成"中位数的均值"(mean-of-medians):先对
结论: 降概率的正确顺序是"先均值降方差,再中位数降尾概率",顺序不能互换。
Problem 3: BJKST 中用真随机 hash 会怎样
题目: 如果 BJKST 算法中用真随机 hash function 替代强 universal hash family,空间复杂度变成多少?
题解:
强 universal hash family
而一个真随机 hash function
BJKST 中的空间代价里,存
Problem 4: BJKST
中为什么存 而不是
题目: 理解 BJKST 算法为什么使用哈希函数
题解:
BJKST 里维护一个集合
如果改为直接存
而存
Problem 5: Morris Counter 的"careful variant"分析
题目: 分析 Morris Counter 的"careful variant"——将
(a) 计算算法末尾
题解:
(a) 计算期望
设
条件期望:
由全期望律:
以
因此
(b) 计算方差
计算
(展开
由
方差:
等价地,
由 Chebyshev:
为让失败概率
(c) 带中位数技巧的参数设置
设
空间分析: 算法存储变量
(利用
总空间(
(d) 不用中位数技巧
直接让单次成功概率
此时
总空间(单份):
与 Theorem 42 一致:doubly logarithmic in
(e) 如何实现增量步骤
需要以概率
关键障碍:
解决方案: 先把
此时
Problem 6: -Heavy
Hitters(频繁元素集合)
题目: 设
题解:
用参数
输出
包含性
所以
包含性
空间:
Problem 7:
Bottom- 算法的 Distinct Elements
分析
题目: 考虑以下"Bottom-
(a) 证明对
(b) 空间复杂度是多少?
题解:
(a) 正确性分析
设
关键转化: 定义指示随机变量
期望: 由
方差: 由 pairwise independence(强 universal family
保证),
Chebyshev: 取
(最后一步取
即
对称地(定义
Union bound:
实际上对
(b) 空间复杂度
需存: - hash function
总空间:
Part 2: 讲义知识点详解
按讲义(Week 8 - Streaming and Sketching I)结构整理,涵盖所有 Algorithm、Theorem、Lemma 及其完整证明。
§0 名词与符号速查
| 符号 | 含义 |
|---|---|
| 流的长度(stream length) | |
| universe 大小( |
|
| 算法使用的空间(bits) | |
| 元素 |
|
| distinct elements 的数目( |
|
| distinct elements 数: |
|
| 流长度: |
|
§1 流式算法的基本设定
设定: 输入
允许随机算法和近似算法,近似参数
Quiz 知识点:Canvas 原题问 "流式设定中,输入以____顺序到达",答案是 Arbitrary(任意顺序)。这与上面的设定一致——streaming 算法不假设输入顺序。
Quiz 知识点:原题问 "大多数 streaming 问题可用随机化算法以
空间精确求解"(True/False),答案是 False。许多 streaming 问题需要 空间才能精确求解,这是 streaming 理论的核心下界。
§2 Majority 问题
问题: 流中是否存在某个元素
为什么这个问题在 streaming 中不 trivial:
在普通(非
streaming)设置中,这个问题很简单:遍历一次数组,用哈希表或数组记录每个元素的出现次数,然后找最大值。这需要
但在 streaming 设置中,universe 大小
关键观察:如果某个元素
Majority 的特殊性: - 最多只有 2
个元素可以出现
§3 Misra-Gries 算法(Algorithm 15)
历史背景:由 Jayadev Misra 和 David Gries (1982) 提出。算法也称为 "Frequent" 或 "Heavy Hitters" 算法。是 Boyer-Moore Majority Vote 算法的推广。
算法描述(用 "配对抵消" 直观理解)
参数
每个计数器
- 元素
出现:若 已在 中,计数加 ( "多了一次自由出现") - 新元素加入:若
不在 中但 ,加入 且计数为 - 配对抵消(关键步骤):若
不在 中且 (已满),则将 中所有计数器减 (到 则删除)。这相当于:新来的 和 中每个已有的元素各"配对"一次,然后全部删除。
直观:把
个元素(新来的 加上 中 个已有元素)各取一次组成一组,全部抵消。这 个元素各减少一次出现,相当于"消耗"了 个流中的元素。
Theorem 40: Misra-Gries 算法保证
定理: Misra-Gries 算法是确定性的一趟算法,对参数
空间复杂度
证明:
空间复杂度分析:
上界
下界
考虑
等价视角:每次执行 Line 11,相当于从流中选取了
个元素( 个已在 中的元素,加上新来的元素 ),把这 个元素各取一次配对,然后全部删除。因此每次 Line 11 "消耗"了 个流中的元素。
整个流共有
由于
Majority 问题的两趟解法(详细说明)
第一趟:用
- 得到候选集合
- 若存在 majority 元素
(即 ),则:
所以
- 集合大小
(至多 个候选)。实际上因为 中每个元素满足 ,而 (每个计数器的值不超过其真实频率),所以 。
第二趟:重新遍历流(或保留流的数据),精确计数
- 第二趟只需记录最多
个计数器,每个 bits - 总空间:
(第一趟存 ) (第二趟)
Quiz 知识点:Canvas 原题问 "Misra-Gries 算法是____的"(Randomised/Deterministic),答案是 Deterministic。MG 的确定性源于它不依赖任何随机比特——计数器更新规则完全由输入决定。
Quiz 高频混淆点:原题问 "Misra-Gries 可用单次遍历、空间
解决 MAJORITY 问题"(Yes/No),答案是 No。MG 解决的是 Frequent Elements(Heavy Hitters),不是 MAJORITY 问题本身。虽然可以用 MG 配合第二趟验证来解决 MAJORITY,但单次遍历只能给出频率估计,不能直接判断是否存在 。
为什么不能一趟解决 Majority?
如果要求一趟算法,且
§4 近似计数问题(Approximate Counting)
问题: 流中有
§5 Morris Counter(Algorithm 16)
算法描述
维护整数
- 每次事件
时,以概率 令 (用 Bernoulli )。 - 输出
。
空间
Lemma 40.1: Morris Counter 的期望与方差
引理: 设
证明(期望):
对任意
其中
由全期望律(Law of Total Expectation),
同时得到更一般的公式(式 58):
证明(方差,计算
计算条件期望:
展开平方:
由于
取期望:
所以:
由全期望律:
代入式 (58):
关键化简(讲义中称为 "magical" step):由于
因此:
累加求和:
对双求和进行化简:
其中用到
故:
Quiz 知识点: - 原题问 "Morris Counter 用_空间近似统计流中非零元素个数",答案是
。Vanilla Morris Counter 只存一个计数器 ,而 whp,所以只需 bits。 - 原题问 "Vanilla Morris Counter 的估计方差为_",答案是 。由 Lemma 40.1, (因为 是 的个数,最坏情况 )。这意味着标准差与估计值同阶,误差很大。 - 原题问 "Morris Counter 可通过____提供 -factor 近似",答案是 Median-of-means trick。Vanilla 版本方差太大,需要先用 个副本取均值降低方差,再用 组取中位数提升概率。注意顺序不能反(Tutorial 8 Problem 2)。
定理: median-of-means 版 Morris Counter
是随机一趟算法,对参数
空间复杂度:
分析思路: 取
§6 Morris Counter 的 careful variant
算法
将
Theorem 42: careful Morris Counter
定理: careful Morris Counter 的一趟算法,对参数
空间复杂度:
这是双对数于
参数设置: 取
§7 Distinct Elements 问题
问题: 估计流中 distinct elements 的数目
§8 Tidemark(AMS)算法(Algorithm 17)
算法描述
选强 universal hash
空间
算法分析
定义:
注意:
期望: 由强 universal 保证
方差: 由 pairwise independence(强
universal),
双侧分析:
- 上界
(Markov 不等式)。 - 下界
(Chebyshev)。
取
结合中位数技巧:
Theorem 43: Tidemark 算法(median 版本)
定理: Tidemark(AMS)算法(加 median
trick)是随机一趟算法,对参数
空间复杂度:
限制: 这只给出常数倍(
Quiz 知识点:原题问 "Vanilla Tidemark(AMS)算法对 Distinct Elements 给出____近似",答案是 constant-factor。Tidemark 通过 median trick 只能达到常数倍近似(如
),而不是任意精度的 。
Quiz 高频混淆点:原题问 "Tidemark 算法解决 MAJORITY 问题"(True/False),答案是 False。Tidemark 解决的是 Distinct Elements(
估计),不是 MAJORITY 问题。这是完全不同的两个问题。
§9 BJKST 算法(Algorithm 18)
算法描述
参数
选两个强 universal hash:
维护阈值
- 若
,将 加入 ; - 当
时,令 ,并删除 中所有 的对。
输出
两个 hash 的分工: -
Theorem 44: BJKST 算法
定理: BJKST 算法(加 median
trick)是随机一趟算法,对参数
空间复杂度:
这比 Tidemark 更好:近似精度可以任意小(
Quiz 知识点:原题问 "Vanilla BJKST 算法对 Distinct Elements 给出____近似,空间
",答案是 -factor。BJKST 通过两层哈希( 做 zeros 过滤, 做压缩)将空间降至 ,同时提供任意精度的 近似。这是 BJKST 相比 Tidemark 的核心优势。
与 Tidemark 的对比:
| Tidemark | BJKST | |
|---|---|---|
| 近似比 | 常数 |
任意 |
| 空间 | ||
| 精度 | 固定常数 | 可调 |
§10 核心记忆卡片
| 算法/定理 | 问题 | 空间 | 误差/保证 |
|---|---|---|---|
| Misra-Gries(Theorem 40) | Frequency estimation(频率估计) | ||
| Morris Counter(Theorem 41) | Approximate counting(近似计数 |
||
| Careful Morris(Theorem 42) | Approximate counting | ||
| Tidemark/AMS(Theorem 43) | Distinct elements |
常数倍近似 | |
| BJKST(Theorem 44) | Distinct elements |
||
| Bottom- |
Distinct elements |
核心技巧汇总:
- Median-of-means: 先取
份均值降方差,再取 份的中位数升概率。顺序不能反(Problem 2)。 - 两层哈希: 第一层做功能哈希(如 LSH 中的
locality-sensitive,或
过滤);第二层做压缩(如 或普通 hash table),前者定性,后者省空间。 - 强 universal vs 真随机: 强 universal family 只需
bits 存储,且保证 pairwise independence,足以用 Chebyshev 分析;真随机需要 bits(Problem 3)。 的概率: (由 均匀分布),这是 Tidemark 和 BJKST 的核心随机结构。 - Morris Counter 的关键:
的期望递推 ,精确来自 Bernoulli 的期望恰好是 ——计数器在期望上是线性的。
Part 3: Week 8 Quiz 回顾
来源:Canvas Quiz,整理自
5270-questions-organized.md。每题含中英文题目、正确答案及知识点解析。
Question 1
[EN] The Misra-Gries algorithm allows us to solve
the MAJORITY problem in one pass, using space
[CN] Misra-Gries 算法可用单次遍历、空间
| 选项 | 答案 |
|---|---|
| No | ✅ |
| Yes | ❌ |
知识点:MG 解决的是 Frequent Elements(Heavy Hitters),不是 MAJORITY。虽然可用 MG 配合第二趟验证来解决 MAJORITY,但单次遍历只能给出频率估计。
Question 2
[EN] In the standard streaming streaming setting, the input comes one element at a time, in _________ order.
[CN] 标准数据流设定中,输入元素以____顺序到达。
| 选项 | 答案 |
|---|---|
| Uniformly random | ❌ |
| Arbitrary | ✅ |
| Sorted | ❌ |
| Best-case | ❌ |
知识点:Streaming 算法不假设输入顺序,必须在任意顺序下都能正确工作。
Question 3
[EN] Most streaming problems can be solved exactly
by a randomised algorithm using space
[CN] 大多数数据流问题可用随机化算法以
| 选项 | 答案 |
|---|---|
| True | ❌ |
| False | ✅ |
知识点:许多 streaming 问题需要
空间才能精确求解。因此必须允许近似算法和概率保证。
Question 4
[EN] The Misra-Gries algorithm is ________.
[CN] Misra-Gries 算法是____的。
| 选项 | 答案 |
|---|---|
| Randomised | ❌ |
| Deterministic | ✅ |
知识点:MG 的计数器更新完全由输入决定,不依赖任何随机比特。这是 streaming 中罕见的确定性算法。
Question 5
[EN] The Morris Counter algorithm provides an
approximate count of the number of non-zero elements in a stream of
length
[CN] Morris Counter 用____空间近似统计流中非零元素个数。
| 选项 | 答案 |
|---|---|
| ❌ | |
| ✅ | |
| ❌ | |
| ❌ |
知识点:Vanilla Morris Counter 只存一个计数器
,而 whp,所以只需 bits。对比直接存储需要 bits。
Question 6
[EN] The "vanilla" version of the Morris Counter
gives an estimate of
[CN] "Vanilla" Morris Counter 给出
| 选项 | 答案 |
|---|---|
| ❌ | |
| ❌ | |
| ✅ | |
| ❌ |
知识点:由 Lemma 40.1,
。最坏情况 ,方差为 。标准差与估计值同阶,误差很大,需要 Median-of-means 改进。
Question 7
[EN] The "vanilla" Tidemark (AMS) algorithm gives a
____ approximation for the Distinct Elements problem using space
[CN] "Vanilla" Tidemark(AMS)算法对 Distinct
Elements 给出____近似,空间
| 选项 | 答案 |
|---|---|
| additive |
❌ |
| constant-factor | ✅ |
| ❌ |
知识点:Tidemark 通过 median trick 只能达到常数倍近似(如
),不是任意精度的 。达到 需要 BJKST。
Question 8
[EN] The "vanilla" BJKST algorithm gives a ____
approximation for the Distinct Elements problem using space
[CN] "Vanilla" BJKST 算法对 Distinct Elements
给出____近似,空间
| 选项 | 答案 |
|---|---|
| additive |
❌ |
| ✅ | |
| constant-factor | ❌ |
知识点:BJKST 通过两层哈希(
做 zeros 过滤, 做压缩)将空间降至 ,同时提供任意精度的 近似。这是 BJKST 相比 Tidemark 的核心优势。
Question 9
[EN] The Morris Counter can be made to provide an
[CN] Morris Counter 可通过____提供
| 选项 | 答案 |
|---|---|
| Median trick | ❌ |
| Median-of-means trick | ✅ |
| Trick-or-treat strategy | ❌ |
| Mean trick | ❌ |
知识点:Median-of-means = 先取
份均值降方差,再取 份的中位数升概率。顺序不能反(Tutorial 8 Problem 2)。
Question 10
[EN] The Tidemark algorithm solves the MAJORITY problem in two passes.
[CN] Tidemark 算法用两次遍历解决 MAJORITY 问题。
| 选项 | 答案 |
|---|---|
| False | ✅ |
| True | ❌ |
知识点:Tidemark 解决的是 Distinct Elements(
估计),不是 MAJORITY。MAJORITY 是 Heavy Hitters 问题,应使用 Misra-Gries 或 CountMinSketch。
Week 8 Quiz 速查表
| 题号 | 核心概念 | 正确答案 |
|---|---|---|
| 1 | MG 解决 MAJORITY | No |
| 2 | 输入顺序 | Arbitrary |
| 3 | 精确求解可能性 | False |
| 4 | MG 确定性 | Deterministic |
| 5 | Morris Counter 空间 | |
| 6 | Morris Counter 方差 | |
| 7 | Tidemark 近似 | constant-factor |
| 8 | BJKST 近似 | |
| 9 | Morris 改进方法 | Median-of-means |
| 10 | Tidemark 解决 MAJORITY | False |
高频混淆点: - MG 解决的是 Heavy Hitters
不是 MAJORITY(Q1, Q10) - Morris Counter 空间