Probability Amplification Using Pairwise Independence
两两独立 (Pairwise Independence) 的概念
与完全独立 (Mutual Independence) 不同,两两独立的要求更宽松:在一组随机变量中,任意取出两个变量,它们之间是相互独立的即可。
例子:掷两次硬币得到 $X_1$ 和 $X_2$ 。令 $X_3 = X_1 \oplus X_2$(异或)。
- $X_1$ 和 $X_2$ 显然独立。
- $X_1$ 和 $X_3$ 也是独立的(因为不知道 $X_2$ ,由 $X_1$ 无法推测 $X_3$ )。
- 但是 $X_1, X_2, X_3$ 三个放在一起并不完全独立(知道前两个必然能确定第三个)。
动机:节约随机比特 (Randomness Reduction)
对于具有单边错误的随机算法(RP类,如素性测试):
- 原型算法需要 $m$ 个随机比特。
- 为了将错误率降低到 $1/2^T$ ,常规做法是独立重复运行 $T$ 次,这需要消耗 $m \times T$ 个随机比特。 由于纯随机比特在理论计算机科学中是非常昂贵的资源,我们希望能用更少的随机比特达到类似的概率放大效果。
形式化补充(来自同学笔记): 假设已有一个随机算法 $A$,依赖 $m$ 个随机 bits,用来判断 $x \in L \subseteq \{0,1 \}^n$ 是否成立,满足
$$ x \in L \Rightarrow \Pr[A \text{ output Yes}] \ge \frac{1}{2} $$
$$ x \notin L \Rightarrow \Pr[A \text{ output Yes}] = 0 $$
如果独立重复 $t$ 次,可以做到错误率 $\Pr[\mathcal{E}] \le 2^{-t}$ 。从而如果我们需要达到 $1/r$ 的正确率(即容错率为 $1/r$ ),则需要生成 $m \log r$ 个随机 bits。
Theorem: 对于 $r \le 2^m$ ,可以利用后续的构造,只生成 $2m$ 个随机 bits,在 $O(rm)$ 的时间复杂度内即可达到 $\Pr[\mathcal{E}] \le \frac{1}{r}$ (或推导出的 $2^{-t}$ 对应上限)的效果。
构造:利用两两独立节约随机性
我们可以利用有限域 $\mathbb{Z}_q$( $q$ 为稍微比 $2^m$ 大一点的素数)来构造两两独立的伪随机串序列:
- 只需要提供 2 个真正的独立随机串 $a$ 和 $b$(长度为 $m$,共消耗 $2m$ 个随机比特)。
- 构造 $q$ 个随机串序列,第 $x$ 个随机串为: $a \cdot x + b \pmod q$ 。
通过这种构造,即使起步只用了 $2m$ 个随机比特,生成的这 $q$ 个长串序列也是两两独立的。将它们作为随机源喂给算法,也能有效降低整体的错误率,而随机比特的消耗被死死压在了 $O(m)$ 级别。
具体采样的机制补充: 形式化地说,生成的每组随机 bits 可以看作从 $U(\{0,1 \}^m) \cong U(\mathbb{Z}_{2^m})$ 中采样的均匀分布变量。为了能够足够覆盖,可以取质数 $2^m \le q \le 2^{m+1}$ ,通过拒绝采样 (rejection sampling) 的方式,期望只需生成 $O(m)$ 个纯随机 bits,便能得到完全服从 $U(\mathbb{Z}_q)$ 分布的 $r$ 组两两独立的比特串序列。
证明:为什么 $ax+b$ 构造出的序列是两两独立的?
要证明两两独立,即证明对于任意选取的两个不同位置 $x$ 和 $x’$( $x \neq x’$ ),以及它们可能的取值 $c$ 和 $c’$,满足统计独立的定义:
$$ \Pr[ax+b = c \text{ 且 } ax’+b = c’] = \Pr[ax+b = c] \times \Pr[ax’+b = c’] $$
1. 等式右边(各自单独发生的概率): 在有限域 $\mathbb{Z}_q$ 中,无论随机选的 $a$ 是什么数,总有且仅有唯一的 $b \pmod q$ 能够让等式 $ax+b = c$ 成立。由于 $(a,b)$ 的组合共有 $q^2$ 种,能让等式成立的组合有 $q$ 种(对应 $q$ 个不同的 $a$)。
因此,单独某个等式成立的概率为:
$$ \Pr[ax+b = c] = \frac{q}{q^2} = \frac{1}{q} $$
同理, $\Pr[ax’+b = c’] = \frac{1}{q}$ 。所以等式右边为 $\frac{1}{q} \times \frac{1}{q} = \frac{1}{q^2}$ 。
2. 等式左边(同时发生的概率): 考虑 $ax+b=c$ 和 $ax’+b=c’$ 同时成立,这构成了关于未知变量 $a$ 和 $b$ 的二元一次方程组:
$$ \begin{cases} ax + b = c \\ ax’ + b = c’ \end{cases} $$
两式相减得到 $a(x - x’) = c - c’$。
因为我们选的是两个不同的位置 $x \neq x’$ ,所以在模素数 $q$ 下 $x - x’$ 存在乘法逆元。
代数推导可得方程组存在唯一解:
$$ a = (c - c’)(x - x’)^{-1} \pmod q $$
$$ b = c - ax \pmod q $$
这意味着在所有 $q^2$ 种 $(a,b)$ 取值组合中,有且仅有一组 $(a,b)$ 能够让这两个等式同时成立!
因此,同时发生的概率为 $\frac{1}{q^2}$ 。
结论: 由于等式左、右两边均等于 $\frac{1}{q^2}$ ,正好符合两两独立成立的定义条件,证明完毕。
The Trade-off and Derandomization
这后续的几张 PPT 将前面的内容推向了高潮:节约随机性的代价是什么?我们又该如何利用这一点实现彻底的“去随机化”?
节约随机性的代价:正确的概率下降变缓
如果在算法中把完全独立的 $T$ 次重复运行,替换成前面构造的两两独立的 $T$ 次运行,会发生什么?
- 完全独立时:所有 $T$ 次运行都错(即 $I_t = 0$ )的概率是 $\frac{1}{2} \times \frac{1}{2} \dots = \frac{1}{2^T}$ (指数级下降)。
- 两两独立时:由于事件不再完全独立,我们不能再直接将概率相乘了!
为了分析它的错误率,我们需要使用基于期望和方差的切比雪夫不等式 (Chebyshev’s Inequality)。
令 $X = \sum I_t$ (所有运行中输出 Yes 的次数),我们希望 $X>0$ 。
- 期望 $\mathbb{E}[X] = \frac{T}{2}$ (因为期望的线性性质不需要独立性)。
- 因为 $I_t$ 是两两独立的,所以和的方差等于方差的和(协方差为 0)。 $\text{Var}[X] = \sum \text{Var}[I_t] \le \frac{T}{4}$。
根据切比雪夫不等式:
$$ \Pr[\sum I_t = 0] \le \Pr[|X - \mathbb{E}[X]| \ge \mathbb{E}[X]] \le \frac{\text{Var}[X]}{(\mathbb{E}[X])^2} \le \frac{T/4}{(T/2)^2} = O\left(\frac{1}{T}\right) $$
结论: 使用两两独立的序列,我们将随机比特的开销从 $O(T)$ 极大地降到了 $O(\log T)$ (因为只需要 2 个种子),但是代价是:错误率只能以 多项式级 ( $O(1/T)$ ) 下降,而不再是指数级下降。
同学笔记推导细节(等价代换):
在笔记公式中,令总成功次数 $X = \sum_{i=1}^r X_i$ ,且发生错误的概率即为 $\Pr[\mathcal{E}] = \Pr[X=0]$ 。
根据切比雪夫不等式具体化简: $\Pr[\mathcal{E}] \le \frac{r/4}{(r/2)^2} = \frac{1}{r}$。由此可得,为了达到 $\frac{1}{r}$ 的错误率,如果用两两独立去跑,只需要重复 $r$ 次,耗费 $O(rm)$ 的时间复杂度和 $2m$ 个随机 bits(对应前面结论中的定理)。
从“节约随机性”到“去随机化 (Derandomization)”
去随机化的核心思想:如果一个随机算法需要的随机种子空间足够小,小到我们完全可以暴力枚举所有的可能性,那么这个概率算法也就变成了一个确定的 (Deterministic) 算法。
经典案例:寻找没有单色 $k$-完全子图的图着色方案
- 问题:对于一个顶点数 $n \le 2^{k/2}$ 的完全图,给每条边染红色或蓝色,要求不存在任何一个纯色的 $k$-完全子图(即边全是一种颜色)。
- 概率法(存在性证明):如果我们完全随机地给每条边染色,期望出现的单色 $k$ -完全子图的数量为 $\binom{n}{k} 2^{1-\binom{k}{2}} \lt 1$ 。因为期望值小于 1,说明(至少在一个样例中)单色子图数量必定为 0,这就证明了这种染色方案一定存在。
- 存在的问题:这种期望计算隐含地使用了概率,如果用条件期望方法(顺次每条边染色并使得期望变小)虽然可以转化为明确的构造算法,但它是一个串行算法,很难并行化。
同学笔记对照补充: 如果要求出一种方案,单纯暴力的策略是枚举 $2^{\binom{n}{2}}$ 种染色方案。
回顾概率证法,设 $X$ 为同色 $k$ -clique 数量
$$ \mathbb{E}[X] = \binom{n}{k}\frac{2}{2^{\binom{k}{2}}} < 1 $$
这里的期望计算并不要求所有边的染色全部独立,事实上,只要每 $\binom{k}{2}$ 条边的染色是相互独立的即可。通过枚举多项式生成的 $q^{\binom{k}{2}} \simeq n^{O(k^2)}$ 种可能性,我们将复杂度降到了多项式级别。
用 $d$-wise 独立性实现并行“去随机化”
有没有办法构造一个可并行的确定性算法呢?
关键洞察:在计算单色 $k$-完全子图的期望时,整个图的所有边需要是完全独立的吗?
不需要!一个 $k$-完全子图只有 $d = \binom{k}{2}$ 条边。根据期望的线性性质,要想刚才的“存在性证明”和计算依然成立,我们只需要这 $d$ 条边是互相独立的(即 $d$ -wise 独立)即可!
为什么只需要 $d$ 条边独立?
- 全局期望拆解:我们要求的总期望是所有可能的 $k$-完全子图变成单色的期望之和: $E[\text{总单色子图我们数量}] = E[X_1 + X_2 + \dots + X_{\binom{n}{k}}]$ 。
- 线性性质无视依赖:概率论中,期望的线性性质(Linearity of Expectation)永远成立,即 $E[\sum X_i] = \sum E[X_i]$ 。即使这些子图相互重叠、边互相影响,总体期望依然等于各个子图期望的简单加和,我们不需要考虑子图与子图之间的关联。
- 局部概率计算:既然拆分成了单算每一个子图 $E[X_i]$ ,我们把目光聚焦到某一个特定的 $k$-完全子图上。它内部只有 $d = \binom{k}{2}$ 条边。要让它变成单色,只取决于这 $d$ 条边的状态。
- 结论:为了让 $E[X_i] = 2 \times (1/2)^d = 2^{1-d}$ 这个算式成立,我们仅仅需要这挑出来的 $d$ 条边之间互相独立就可以了,根本不需要管大图外面那成千上万条边的死活。只要图里任意 $d$ 条边都是独立的(即 $d$-wise independence),局部期望的计算就和完全随机一模一样,从而全局总期望的计算也就一模一样!
为什么只需要用有限域上 $d-1$ 次的多项式来构造?
这与之前“两两独立使用 $1$ 次多项式( $ax+b$ )”的原理是一脉相承的。它的核心在于代数插值定理(Lagrange Interpolation,拉格朗日插值法)。
-
回顾两两独立 (2-wise independence): 我们使用了 $f(x) = ax+b$。这是一个 $1$ 次多项式,它有 $2$ 个未知的随机系数 $a$ 和 $b$。
初等代数告诉我们:两点确定一条直线。所以在有限域 $\mathbb{Z}_q$ 里,只要你给出任意 $2$ 个不同的横坐标 $x_1, x_2$ ,以及你希望它俩取到的目标值 $y_1, y_2$ ,这就构成了一个关于 $a, b$ 的二元一次方程组,且这个方程组永远有唯一解。这就证明了选出任意 $2$ 个位置,它们的值必然是独立的(每种组合出现的概率都是精准的 $1/q^2$ )。
-
推广到 $d$-wise 独立: 为了生成能够覆盖大图里所有 $N = \binom{n}{2}$ 条边的伪随机序列,我们选择一个稍微比 $N$ 大一点的素数 $q$ ,从而在一个大小为 $q$ 的有限域 $\mathbb{Z}_q$ 上进行运算。(在这个语境下, $q$ 就是我们可用作横坐标的“位置/编号”总数)。
现在我们要保证选出任意 $d$ 条边(对应随机串序列里的任意 $d$ 个位置),它们被染成的颜色看起来是完全独立的。
自然地,我们就构造一个 $d-1$ 次 的多项式
$$ f(x) = a_{d-1}x^{d-1} + a_{d-2}x^{d-2} + \dots + a_1x + a_0 \pmod q $$
注意,一个 $d-1$ 次的多项式,恰好有 $d$ 个系数!
我们将这 $d$ 个系数作为我们抛硬币生成的真正随机的种子,每个系数都可以从 $\mathbb{Z}_q$ 中随便挑。
因为我们有 $d$ 个种子,每个有 $q$ 种可能,所以整个随机分布的空间大小是 $q^d$ 。
根据代数基本定理 / 拉格朗日插值多项式:给定平面上任意 $d$ 个横坐标不同的点 $x_1, x_2, \dots, x_d$(比如代表这 $d$ 条边的编号),以及任意给定的 $d$ 个目标纵坐标 $y_1, y_2, \dots, y_d$ (比如我们希望这 $d$ 条边的目标哈希值),必定存在唯一的一个次数最高为 $d-1$ 的多项式穿过这 $d$ 个点。
-
概率巧合的完美闭环: 既然有“唯一的一个”方程解对应你任意指定的那 $d$ 的纵坐标组合,说明在总共 $q^d$ 种可能生成出来的多项式曲线中,有且仅有 $1$ 条曲线能同时完美路过这 $d$ 个目标值点!
所以对于任意指定的 $d$ 个位置
$$ \Pr[\text{这 } d \text{ 个位置分别等于特定的 } d \text{ 个值}] = \frac{1}{q^d} $$
这与它们各自互不相干、每次完全随机生成时的概率连乘 $(1/q \times 1/q \dots = 1/q^d)$ 完美相等!这就保证了即使我们用映射出来的结果去决定边的颜色,也是严格满足 $d$-wise 独立性的。
总结:因为 $d-1$ 次多项式拥有 $d$ 个独立的系数(自由度为 $d$ ),它正好能在任意挑选出来的 $d$ 个考察点(边)上,表现得像完全独立抛了 $d$ 次硬币一样。所以只需要 $d$ 个纯随机的系数种子,就能为全图所有 $\binom{n}{2}$ 条边生成一个整体的染色序列,且该序列满足 $d$ -wise 独立。
并行去随机化算法
- 完全独立需要: $m = \binom{n}{2}$ 个纯随机数表示每条边的颜色。搜索空间是 $2^{\binom{n}{2}}$ ,没法枚举。
- $d$-wise 独立需要:选定素数 $q \ge \binom{n}{2}$ 以保证有足够多的横坐标对应图中的每一条边。使用有限域 $\mathbb{Z}_q$ 上 $d-1$ 次的多项式,它只需要挑 $d$ 个系数作为真正的随机种子。每个种子有 $q$ 种可能。我们只需 $O(d \log q) = O(d \log n)$ 长度的纯随机比特。
释义:如何估阶 $q$ 和 $d$?
关于 $q$: 因为全图有 $\binom{n}{2}$ 条边,我们需要为每条边分配一个不同的横坐标 $x$ 用于多项式求值,要求 $q \ge \binom{n}{2}$ 。根据数论“伯特兰-切比雪夫定理”,在 $\binom{n}{2}$ 和 $2\binom{n}{2}$ 之间必有素数,所以我们总能找到一个素数使得 $q \approx \binom{n}{2} = \Theta(n^2)$ 。
关于 $d$ : 我们之所以要用 $d$-wise 独立,是为了给图中任意一个 $k$-完全子图的所有边独立上色。一个 $k$-完全子图包含多少条边?答案是 $d = \binom{k}{2}$ 。所以 $d = \frac{k(k-1)}{2} = \Theta(k^2)$ 。
- 降维打击:现在的纯随机种子空间(也就是我们要遍历的不同的多项式数量)是 $q^d$ 。
代入上面的估阶:
$$ q^d \approx \left( n^2 \right)^{\Theta(k^2)} = n^{\Theta(k^2)} = n^{O(k^2)} $$
如果 $k$ 是一个小常数(甚至是 $O(\log n)$ 内的项),这就把原本 $2^{O(n^2)}$ 的指数级搜索空间,硬生生压缩到了 $n^{O(k^2)}$ 的多项式级 (Polynomial) 搜索空间!
终极并行去随机化算法: 既然能够唯一决定全图染色的“种子(即那 $d$ 个系数)”的总体组合数被压缩到了 $O(n^{O(k^2)})$ 这个多项式级别,我们就不再需要使用任何随机数或概率法了。由于先前的数学证明告诉我们:“只要在 $d$-wise 独立的掩护下,期望出现单色子图的数量依然严格小于 1 ”。而当期望小于 1 时,这 $O(n^{O(k^2)})$ 种具体的染色方案中,绝对至少存在一个让单色子图数量为 0 的成功方案。
于是,我们可以设计如下的确定性并行算法:
-
启动多线程/处理器:开辟 $q^d$ 个并行的计算线程。
-
分配任务:将有限域 $\mathbb{Z}_ {q}$ 下所有可能的 $d$ 个系数的组合序列 $(a_ {d-1}, a_ {d-2}, \dots, a_ 0)$ —— 也就是那 $q^d$ 种可能 —— 挨个分配给这 $q^d$ 个处理器。
-
独立局部生成染色:每个处理器拿到属于自己的一组系数组合后,利用多项式 $f(x) = \sum a_i x^i \pmod q$ ,把全图所有的边(记为 $x=1, 2, \dots, \binom{n}{2}$ )代入方程计算。如果算出结果是偶数(或者某种约定的二进制提取方式),这条边染红色,否则染蓝色。这样每个处理器都自己确定性地生成出了一张染好色的完整图。
-
独立局部检测:每个处理器各自在其生成的图中,简单地遍历检查是否存在任何一个纯色的 $k$-完全子图。
关于局部检测的复杂度:
单个处理器拿到一张染好色的图后,需要检查其中是否有单色的 $k$-完全子图。最简单的暴力检查方法就是枚举图中的所有大小为 $k$ 的顶点子集。
顶点总数为 $n$,大小为 $k$ 的子集有 $\binom{n}{k}$ 个。对于每一个子集,检查其内部的 $\binom{k}{2} = d$ 条边是否同色,这需要 $O(k^2)$ 的时间。
因此,单个处理器进行检测的局部时间复杂度为 $O\left(\binom{n}{k} \cdot k^2\right) \le O(n^k \cdot k^2) = O(n^k)$(当 $k$ 较小时)。
回顾前文,我们用来并行的处理器总数(总组合数)是 $q^d = n^{O(k^2)}$ 。
综合起来:总的计算工作量(如果是单线程跑完)是 $n^{O(k^2)} \times O(n^k) = n^{O(k^2)}$ (因为指数上的 $k^2$ 占据了主导地位,吸收了 $k$ )。只要 $k$ 依然是一个常数(例如 $k=5$ ),这就是一个多项式时间 (Polynomial time) 复杂度!这意味着它确确实实成为了一个在理论上高效(属于 P 类或 NC 类)的确定性算法。
- 汇总输出:所有线程检测完毕后,必然至少有一个线程会汇报:“我构建的这张图里没有任何单色 $k$-完全子图!” 我们直接将它构造得到的染色方案输出即可。
在这一系列操作中,由于 $q^d$ 这个规模在我们关切的范围内(当 $k$ 较小时)属于可以接受的多项式复杂度。算法的每一个步骤都是完全确定的(Deterministic),不抛任何硬币,却圆满地构造出了原本由纯概率理论保证存在的东西。这就是利用 $d$-wise 独立性实现“去随机化”并将其巧妙转化为高效并行算法的全貌。