COMP5270 Week 4 总结:Derandomisation(题解 + 知识点)
课程: COMP5270 - Randomness, Probability, and Algorithms 学期: S1 2026 来源: Week 4 - Derandomisation, Week 4 - Tutorial 4 (Solutions)
Part 1: Tutorial 4 详细题解
Warm-up
Problem 1: 需要多少随机 bit?
题目: 生成
题解:
课程 solution 的口径是:从大小为
个随机 bit。
为什么?
一个独立随机 bit 有 2 种等概率结果(0 或 1),所以
信息论直觉:均匀分布的熵是
,而每个独立 bit 最多提供 1 的熵,所以至少需要 个 bit 才能"装下"这个随机性。
举例: - 生成
如果 bit 数少于这个值,
所以:
而
所以生成一个均匀随机子集需要:
个随机 bit。
更直观地说:每个元素都有"选 / 不选"两个选择,
知识点总结:
- 随机 bit 数量:从大小为
的域中生成一个均匀随机元素,需要 个独立随机 bit。 随机子集:生成
的均匀随机子集,需要 个随机 bit(每个元素选/不选)。
Problem 2: 两两独立但不完全独立
题目: 令
证明
是什么? 是 XOR(异或)运算符。两个 bit 做 XOR,结果当且仅当两个 bit 不同时为 1,相同时为 0:
0 0 0 0 1 1 1 0 1 1 1 0 等价于 模 2 加法:
。也等价于 (当 时)。
题解:
先看
所以:
为什么两两独立?
对任意
当
所以:
由于
而:
所以
为什么不是整体独立?
因为
例如:
但如果三者整体独立,应该有:
两者不相等,所以
知识点总结:
- XOR 构造:
是构造两两独立随机变量的经典技巧。 - 两两独立 vs 整体独立:两两独立(pairwise
independent)
整体独立(mutually independent),要验证所有对的联合分布相等,但整体联合分布不等。 检查方法:检查两两独立只需验证
对所有对成立。
Problem 3: Strongly Universal 推出 Universal
题目: 已知 strongly universal hash family 满足:
证明它一定是 universal hash family,即:
题解:
固定
事件
其中
所以:
由 strongly universal:
因此 strongly universal 一定 universal。
注意:universal 只要求 collision probability 小;strongly universal 要求两个输入的输出值像两个独立均匀随机变量一样。
知识点总结:
- Strongly Universal 定义:要求 1 均匀(输出 uniform);2 两两独立(不同输入的哈希值独立)。
- Strongly Universal ⇒
Universal:因为碰撞概率被两两独立性严格控制为
。 - Universal 更弱:只要求碰撞概率
,不要求独立性或均匀性。
Problem Solving
Problem 4: 让随机 Max-Cut 以 0.99 概率成功
题目: 给一个随机算法,在输入图
题解思路:
课堂上只证明了:
这说明:
但"正概率"可能非常小,不足以直接重复固定次数。
所以 tutorial 先证明一个更强的下界:
然后重复随机算法
为什么重复能放大成功概率?
假设单次成功概率至少是
重复
使用不等式:
得到:
如果取:
那么:
所以至少一次成功的概率大于
为什么
令:
对非负整数随机变量用 tail-sum idea:
把求和分成两段:
的部分,每项最多是 1; 的部分,每项最多是 。
因为左边等于
因此重复:
次即可。
每次生成 cut 需要
知识点总结:
- Max-Cut 期望:随机 Max-Cut 的期望是
,由 Markov 的反向用法可得 的反面。 - 重复放大:重复随机算法
次可将成功概率放大到 。 两两独立 derandomise:用两两独立哈希族 + 枚举所有种子可以 derandomise,代价是多项式时间而非指数时间。
Problem 5: 构造两两独立哈希族
题目: 证明 lecture 中的 Fact 22.2。简单情况:设:
把
对每个
即取
令:
证明
(a) family 大小
个,所以:
因为
这和 lecture 里的:
一致。
(b) 需要多少随机 bit?
随机选一个
其中:
所以需要:
个随机 bit。
计算时:
也就是先做 bitwise AND,再取 parity。
(c) 为什么 pairwise independent?
要证明:对任意不同的非零
核心直觉:
,所以至少有一个 bit 位置上两者不同; - 随机选
等价于每个位置独立选择是否进入 ; 是若干独立随机 bit 的 XOR; - 只要 XOR 中至少包含一个真正随机 bit,它就是均匀随机的。
更具体地,把位置分成三类:
由于
则:
因为
这说明
知识点总结:
- 奇偶性构造:用随机子集
的奇偶性 可以构造 pairwise independent 的哈希族。 - Strongly Universal 关键:让任意两个不同输入的哈希值像一对独立均匀随机变量。
随机 bit 数:只需要
个随机 bit 来描述一个 hash 函数。
Problem 6: 随机定向与有向三角形
题目: 给无向图
Oriented triangle 指长度为 3 的有向环:
(a) 随机算法
对每条边独立随机选择一个方向。
设
一个三角形有 3 条边,每条边有 2 个方向,共:
种方向组合。
其中只有 2 种形成有向环:
或反方向:
所以:
总 oriented triangles 数量是:
由期望线性性:
而最优解不可能超过原图三角形总数:
所以:
这是随机的
(b) Derandomise
有两种方法。
方法 1:3-wise independence + 枚举 seed
分析每个三角形时,只需要三条边的方向彼此独立,所以不需要所有
要生成
个真正随机 bit。
然后枚举所有 seed,数量是:
每次检查 oriented triangles 数量最多用
方法 2:Conditional Expectations
按顺序处理边:
每一步选择当前边方向,使得:
不下降,其中
对当前边
- 还没有其他边确定:当前选择后,剩下两条边要配合,期望贡献
; - 已有一条边确定:如果当前方向仍可能形成环,期望贡献
,否则为 0; - 已有两条边确定:如果当前方向刚好完成有向环,贡献 1,否则为 0;
- 如果已经不可能形成有向环,贡献 0。
分别计算当前边两个方向对应的条件期望,选较大的那个。
最终得到确定性
知识点总结:
- 随机定向期望:每条无向边随机定向,期望有向三角形数是
。 - 存在性证明:因此存在一种定向使得有向三角形数
。 Conditional Expectation Derandomise:逐个决定每条边的方向,保持期望不下降,最终得到确定性
-approximation。
Problem 7: 少量单色三角形染色
题目: 证明对每个
并给出多项式时间确定性算法。
题解:
随机给每条边独立染 red 或 blue。
固定一个三角形,它有 3 条边。它是 monochromatic 的情况有两种:
- 三条边全 red;
- 三条边全 blue。
概率是:
所以期望 monochromatic triangles 数量是:
因此存在某种染色使数量不超过
确定性算法可以用和 Problem 6 类似的 derandomisation:
- 用 3-wise independent hash / seed 枚举;
- 或者用 conditional expectations,逐条边决定颜色。
知识点总结:
- 随机 2-colouring
期望:每条边独立随机染色,期望单色三角形数是
。 - 存在性:由期望原理,存在一种边染色使得单色三角形数严格小于
(对大的 )。 Probabilistic Method:证明"存在好解"只需要算随机解的期望。
Advanced
Problem 8: Universal 但非 Strongly Universal 的哈希族
题目: 令
其中:
令:
(a) 需要多少 bit 描述函数?
描述一个
bits。
任意函数:
需要为每个输入指定一个输出。输入数量是:
每个输出需要
bits。
(b) 为什么 universal?
要证明对
等价于:
因为
设非零向量为
至少存在一个
对
而
因此
(c) 是否 strongly universal?
不是。
因为:
对所有
所以例如要求:
概率是 0,而 strongly universal 要求对任意输出值都有:
的联合概率。
因此它不是 strongly universal。
如果改成 affine form:
并随机选择
知识点总结:
- Universal 定义:只要求碰撞概率
,不要求输出均匀或独立。 - 充分非必要:Strongly universal 是 universal 的充分条件,但不是必要条件。
存在性构造:存在 universal 但非 strongly universal 的构造,例如固定某些输出的映射。
Part 2: Week 4 知识点
这周在讲什么
Week 4 的核心问题是:随机算法靠抛硬币,能不能不抛硬币也做出一样好的结果?
答案是可以——这就是 derandomisation(去随机化)。
打个比方: - 随机算法像一个赌徒,每碰到一个选择就掷骰子。 - Derandomisation 是把骰子藏起来,用推理代替运气,但最后结果不输给赌徒。
这周讲两种具体方法,都用一个经典问题当例子——Max-Cut。
Max-Cut 问题——看图说话
先搞懂每个字母在说什么
想象一个社交网络:
- 顶点(Vertex) = 人。一共有
个人。 - 边(Edge) =
两个人之间有一条连线,表示他们是朋友。一共有
条朋友关系。 - 图(Graph) = 全部人和全部朋友关系放在一起,记作
: 是所有人的集合(Vertex set), 是全部朋友关系的集合(Edge set),
一个具体的小例子
假设只有 4 个人,朋友关系长这样:
v₁ ─── v₂ |
(4 个顶点) (4 条边:v₁–v₂, v₂–v₄, v₄–v₃, v₃–v₁)
问题:把人分成两组,让 跨组的朋友对数 尽量多
把 4 个人分进两组:
组(比如"蓝队") 组(比如"红队")
一条边如果一头在蓝队、另一头在红队,就叫做"跨 cut 的边"(cross edge)。
目标:找到一种分组方式
试着分一下
| 分组方式 | v₁ | v₂ | v₃ | v₄ | 跨组边 | |
|---|---|---|---|---|---|---|
| 全放一组 | A | A | A | A | 全在同组,0 条跨 | 0 |
| 随便分 | A | A | B | B | v₁–v₃, v₁–v₄, v₂–v₃, v₂–v₄ | 4 |
| 另一种 | A | B | A | B | v₁–v₂, v₁–v₄, v₃–v₂, v₃–v₄ | 4 |
在这个 4 人例子里,最好的分法能把全部 4
条边都跨组,所以最优解
为什么这个叫 Max-Cut?
把顶点分成
Max-Cut 有多难?
Max-Cut 是 NP-hard
问题——对任意大的图,不存在已知的高效算法总是找到最优解。但 Week 4
要证明:哪怕我们找不到最优解,也能高效找到一个至少是最优解一半好的解。
这就是
随机 Max-Cut 算法——最简单的做法
算法:每人扔一枚硬币
- 对每个顶点
,独立扔一枚公平硬币(正面概率 = 反面概率 = 50%)。 - 如果正面 → 放进
组(蓝队)。 - 如果反面 → 放进
组(红队)。 - 输出分组
。
这个算法有多好?我们来算
关键思路:对每一条边,算它跨 cut 的概率,然后把所有边加起来。
拿一条边
:如果 和 被分到了不同组(这条边跨 cut 了 ✅) :如果 和 被分到了同一组(没跨 cut ❌)
两个人扔硬币是独立的,所以有 4 种等概率情况:
| 跨 cut 吗? | |||
|---|---|---|---|
| 正面 → A | 正面 → A | ❌ 都在 A,同组 | 0 |
| 正面 → A | 反面 → B | ✅ 跨组! | 1 |
| 反面 → B | 正面 → A | ✅ 跨组! | 1 |
| 反面 → B | 反面 → B | ❌ 都在 B,同组 | 0 |
4 种情况里 2 种跨 cut,所以每条边跨 cut 的概率 =
因此:
读作"
把全部边加起来
总跨 cut 边数 = 所有边的
读作"随机分组的期望 cut size 是
这算好吗?
最优解
随机算法平均输出至少是一半最优解!这叫 1/2-approximation。
通俗总结:随机扔硬币分人,不管你图长什么样,平均跨 cut 的边至少是一半。简单粗暴但好使。
Derandomisation 方法 1:扔掉骰子,穷举所有可能性
核心想法
随机算法的"随机性"来自随机 bit(扔硬币的结果)。如果我们只有很少的几个随机 bit,那可以把所有可能的扔硬币结果都试一遍,选最好的那个——这样就不再需要随机了!
形式化
把算法记作
如果: 1. 随机算法有一定概率输出好结果; 2. 只用了
那就这么做:
尝试所有可能的 r(从 00...0 到 11...1,共 2^R 种): |
为什么一定能找到好的?
随机算法有正概率(
代价是什么?
总共有
| 需要尝试的次数 | 可行吗? | |
|---|---|---|
| 3 | ✅ 很轻松 | |
| 10 | ✅ 还行 | |
| 20 | ⚠️ 勉强 | |
| ❌ 宇宙爆炸都算不完 |
所以关键问题是:Max-Cut 的随机算法到底用了几个随机 bit?
原始算法对每个顶点独立扔硬币,
Pairwise Independence——我们不需要完全独立!
关键观察
回头看随机 Max-Cut 的证明。对一条边
和 的硬币结果是独立的——即知道 的结果不能推测 的结果。
但我们不需要所有
任意一对顶点的硬币结果独立。
这就叫 pairwise independence(两两独立)。
完全独立 vs 两两独立
| 完全独立 | 两两独立 | |
|---|---|---|
| 任意两个独立? | ✅ | ✅ |
| 任意三个独立? | ✅ | ❌ 不一定 |
| 需要的随机 bit | 很多( |
很少(约 |
两两独立比完全独立弱很多,但节省了大量随机 bit。而在 Max-Cut 的证明里,两两独立就够用了——因为我们一次只看一条边(两个顶点)。
Strongly Universal Hash Family——一种"够用"的随机函数
等价描述
"两两独立"和"strongly universal hash family"在课程里是同一个概念,只是换了个说法。
通俗理解:有一族函数
- 顶点 1 →
= 0 或 1(随机决定) - 顶点 2 →
= 0 或 1(随机决定) - ...
任意两个不同顶点的输出必须像两个独立硬币一样——任何一对 (0,0), (0,1), (1,0), (1,1) 概率各 1/4。
用在 Max-Cut 上
取
存在一个 explicit(显式构造的)两两独立 hash family,大小只有:
所以随机选一个
个随机 bit!
为什么? 这是 Problem 1 的结论直接套用:要从
因为
对比:独立 vs 两两独立
| 原随机算法 | 用两两独立 hash | |
|---|---|---|
| 随机 bit 数 | ||
| 枚举 seed 代价 | ||
| 每条边跨 cut 概率 | 仍为 |
仍为 |
| 最终保证 |
注意:
和 在数值上几乎一样(差最多 1)。比如 , , 。所以有时候简写为 ,但严谨写法是 。
结论:用两两独立 hash 替换完全独立,随机 bit 从
为什么"期望 "能推出"存在 "?
这条用了一个简单但极其重要的原则:
一个数不能总低于自己的平均值。
全班考试平均分是 70 分,那一定至少有人考了
在 Max-Cut 里: - 随机分组的 cut size 平均是
这就是 probabilistic method(概率法) 的核心思想:
要证明"存在一个好对象",不需要费劲去构造它——只要随机生成,算期望,期望够了就说明至少有一个好的存在。
Derandomisation 方法 2:一步步贪心选
枚举 seed 需要
直觉
原始随机 Max-Cut 中每个顶点独立扔硬币。现在我们把这些硬币逐个"锁定":
- 先看顶点
:如果决定它去 A,对最终 cut size 会有什么影响?去 B 呢? - 选那个让预期 cut size 更高的选项。
- 锁定后,再看
:给定 已经定了,放 A 好还是放 B 好? - 继续,直到所有顶点都定下来。
为什么每一步都不会变差?
假设已经确定了前
- 如果选 A,条件期望 =
- 如果选 B,条件期望 =
当前的条件期望 =
两个数的平均值不会超过较大的那个数。
所以只要每次选
起点期望是
具体怎么做:Max-Cut 的贪心规则
当处理顶点
= " 和已处理顶点之间,如果 去 A 会跨 cut 的边数" = " 和已处理顶点之间,如果 去 B 会跨 cut 的边数"
通俗说: -
贪心规则:如果
,放 去 A;否则放 去 B。
一句话:每次让新顶点加入能让"已有边跨 cut"更多的那个组。
回到 4 人例子
v₁ ─── v₂ |
| 步骤 | 当前顶点 | 邻居状态 | 决策 | ||
|---|---|---|---|---|---|
| 1 | v₁ | 还没处理任何人 | 0 | 0 | 随便,放 A |
| 2 | v₂ | v₁ 在 A | 如果 v₂ 去 A:0 跨;去 B:v₁–v₂ 跨 | 0 | 1 |
| 3 | v₃ | v₁ 在 A,v₂ 在 B | 如果 v₃ 去 A:v₃–v₂ 跨 | 1 | 1 |
| 4 | v₄ | v₁ 在 A,v₂ 在 B,v₃ 在 A | 去 A:v₄–v₂ 跨 | 1 | 2 |
最终分组:A = {v₁, v₃},B = {v₂, v₄}。跨 cut 边:v₁–v₂, v₁–v₄, v₃–v₂, v₃–v₄ = 4 条 = 最大值!
运行时间:每个顶点数一遍邻居 =
终极总结:不扔任何硬币,按"哪个组让已有边跨 cut 更多就放哪个组"的贪心规则,保证输出
的 cut。这就是 Method of Conditional Expectations 在 Max-Cut 上的具体实现。
Probabilistic Method
Probabilistic method 用来证明"某个对象存在"。
套路是:
- 定义一个随机对象
。 - 证明它满足某个好性质
的概率大于 0:
- 因此一定存在至少一个对象满足性质
。
它不一定给出如何高效找到这个对象,但可以证明存在性。
课堂例子:边 2-colouring 避免 monochromatic set
对完全图
固定一个大小为
条边。
大小为
个。用 union bound:
如果:
那么右边小于 1,所以存在一种染色方式没有 monochromatic
核心方法总结
| 方法 | 什么时候用 | 关键句 |
|---|---|---|
| 期望线性性 | 随机算法的平均质量分析 | 把总贡献写成 indicator sum |
| Pairwise independence | 证明只依赖任意两个随机 bit | 不需要 full independence |
| k-wise independence | 每个局部事件只依赖 |
用少量 seed 生成足够的局部独立性 |
| 枚举 random seed | 随机 bit 数 |
代价是 |
| Conditional expectations | 可以高效计算给定部分选择后的期望 | 每一步选不降低条件期望的分支 |
| Probabilistic method | 证明存在性 | 正概率好对象意味着好对象存在 |
| Union bound | 证明坏事件概率小于 1 |
考试 / 作业写法模板
写随机近似算法
- 定义随机算法。
- 定义 indicator variable。
- 计算每个 indicator 的期望。
- 用期望线性性求总期望。
- 用
的上界转成 approximation guarantee。
例如 Max-Cut:
写 conditional expectation derandomisation
- 说明随机算法的选择序列
。 - 定义目标随机变量
。 - 说明每一步选:
- 说明平均值不超过最大值,所以条件期望不下降。
- 最终没有随机性,得到确定性解,且值至少为初始期望。
写 probabilistic method
- 随机生成对象。
- 定义坏事件或好事件。
- 计算固定对象坏的概率。
- 用 union bound 控制所有坏事件。
- 如果坏事件概率
,则存在没有坏事件的对象。
Written for COMP5270 S1 2026