TCS Lec11总结

1. 随机算法案例

1.1 随机搜索算法

  • 问题定义
    输入:长度为 nn 的二进制串 xx,其中恰有 n/4n/4 个位置为 1。
    输出:一个满足 xi=1x_i = 1 的位置 ii
  • 确定性算法
    • 顺序扫描:最坏情况(如 x=03n/41n/4x = 0^{3n/4}1^{n/4}) 时间复杂度 Ω(n)\Omega(n)
  • 随机算法
    • 重复采样随机位置 iUnif([n])i \sim \text{Unif}([n]),直到找到 1。
    • 分析
      • 单次成功概率 p=1/4p = 1/4
      • 运行时间服从几何分布,期望值 E[T]=1/p=4=O(1)\mathbb{E}[T] = 1/p = 4 = O(1)
    • 关键结论:对任意输入,期望时间复杂度为 O(1)O(1)

1.2 矩阵乘法验证(Freivalds 算法)

  • 问题定义
    给定 n×nn \times n 矩阵 A,B,CA, B, C,验证 AB=?CAB \overset{?}{=} C
  • 算法
    重复 kk 次:
    1. 生成随机向量 v{0,1}nv \in \{0,1\}^n(均匀分布)。
    2. 计算 d=A(Bv)Cvd = A(Bv) - Cv
    3. d0d \neq \vec{0},输出 “No”。
      若所有迭代通过,输出 “Yes”。
  • 正确性证明
    • AB=CAB = C:恒输出 “Yes”(错误率 00)。
    • ABCAB \neq C:设 D=ABC0D = AB - C \neq 0,存在非零元素 Di,jD_{i,j}
      • 分析分量 di=kDi,kvk=Di,jvj+sd_i = \sum_k D_{i,k}v_k = D_{i,j}v_j + sss 为其他项和)。
      • 错误条件:di=0d_i = 0

        Pr(di=0)=Pr(vj=0)1/2Pr(s=0)+Pr(Di,jvj=s)1/2Pr(s0)12.\Pr(d_i = 0) = \underbrace{\Pr(v_j = 0)}_{1/2} \cdot \Pr(s=0) + \underbrace{\Pr(D_{i,j}v_j = -s)}_{\leq 1/2} \cdot \Pr(s \neq 0) \leq \frac{1}{2}.

      • Pr(输出 "Yes")(1/2)k=2k\Pr(\text{输出 "Yes"}) \leq (1/2)^k = 2^{-k}
  • 复杂度O(kn2)O(kn^2)(优于直接计算 O(nω)O(n^\omega)ω2.37\omega \geq 2.37)。

1.3 MAX-CUT 近似算法

  • 问题定义
    给定图 G=(V,E)G=(V,E),求最大割(NP-难问题)。
  • 随机算法
    • 为每个顶点随机分配 0011(均匀分布),割边为 xuxvx_u \neq x_v 的边。
    • 期望割大小

      E[size]={u,v}EPr(xuxv)=E212OPT.\mathbb{E}[\text{size}] = \sum_{\{u,v\} \in E} \Pr(x_u \neq x_v) = \frac{|E|}{2} \geq \frac{1}{2} \text{OPT}.

  • 去随机化
    • 成对独立哈希函数
      在随机算法去随机化(Derandomization)中,成对独立哈希函数族(Pairwise Independent Hash Family)是关键工具。
  1. 完全独立性的计算代价过高
  • MAX-CUT 随机算法中,为每个顶点独立随机分配比特(0/1)需要 nn 个独立随机比特。
  • 可能赋值方案共 2n2^n 种(指数级),无法在多项式时间内枚举所有解。
  • 算法只需保证每条边被割的概率为 1/21/2(即 Pr[xuxv]=12\Pr[x_u \neq x_v] = \frac{1}{2})。
  • 但完全独立性要求所有顶点赋值全局独立,计算代价过高。
  1. 成对独立性的充分性

    • 定义
      • 函数族 H={h:UR}\mathcal{H} = \{ h: U \to R \} 是成对独立的,若对任意不同输入 x1x2Ux_1 \neq x_2 \in U 和任意输出 y1,y2Ry_1, y_2 \in R

        PrhH[h(x1)=y1h(x2)=y2]=1R2.\Pr_{h \in \mathcal{H}} \left[ h(x_1) = y_1 \land h(x_2) = y_2 \right] = \frac{1}{|R|^2}.

      • 性质:对任意 x1x2x_1 \neq x_2,事件 h(x1)=y1h(x_1) = y_1h(x2)=y2h(x_2) = y_2 相互独立。
    • 关键观察
      • MAX-CUT 的割大小仅依赖边端点的比特差异:

        size={u,v}E1[h(u)h(v)].\text{size} = \sum_{\{u,v\} \in E} \mathbf{1}_{[h(u) \neq h(v)]}.

      • 只需保证每条边的割事件(即 h(u)h(v)h(u) \neq h(v))概率为 1/21/2,且边间两两独立(无需全局独立)。
  2. 高效构造与多项式大小

    • 构造方法(以顶点集 VV 为例):
      • 设顶点用 k=lognk = \log n 位编码(U={0,1}kU = \{0,1\}^k),输出 R={0,1}R = \{0,1\}
      • 定义哈希函数:

        ha,b(x)=ax+bmod2(a{0,1}k,b{0,1}).h_{a,b}(x) = a \cdot x + b \mod 2 \quad (a \in \{0,1\}^k, b \in \{0,1\}).

      • 函数族大小H=2k+1=2n=O(n)|\mathcal{H}| = 2^{k+1} = 2n = O(n)(多项式级)。
    • 成对独立性证明
      • 固定 x1x2x_1 \neq x_2,需证 y1,y2{0,1}\forall y_1, y_2 \in \{0,1\}

        Pra,b[ax1+b=y1ax2+b=y2]=14.\Pr_{a,b} \left[ a \cdot x_1 + b = y_1 \land a \cdot x_2 + b = y_2 \right] = \frac{1}{4}.

      • 方程组:

        {ax1+b=y1ax2+b=y2    a(x1x2)=y1y2(mod2).\begin{cases} a \cdot x_1 + b = y_1 \\ a \cdot x_2 + b = y_2 \end{cases} \implies a \cdot (x_1 - x_2) = y_1 - y_2 \pmod{2}.

      • x1x2x_1 \neq x_2,存在坐标 ii 使得 x1,ix2,ix_{1,i} \neq x_{2,i}
        对固定 aa 的其他分量,aia_i 有唯一解满足方程(概率 1/21/2),且 bbaa 唯一确定(概率 11)。
        故联合概率为 12×12=14\frac{1}{2} \times \frac{1}{2} = \frac{1}{4}
  3. 去随机化的实现

    • 算法步骤
      1. 枚举所有 ha,bHh_{a,b} \in \mathcal{H}(共 2n2n 个函数)。
      2. 对每个 ha,bh_{a,b},计算割大小 sizea,b={u,v}E1[ha,b(u)ha,b(v)]\text{size}_{a,b} = \sum_{\{u,v\} \in E} \mathbf{1}_{[h_{a,b}(u) \neq h_{a,b}(v)]}
      3. 输出最大割。
    • 正确性保证
      • 对每条边 {u,v}\{u,v\}

        PrhH[h(u)h(v)]=12(由成对独立性导出).\Pr_{h \in \mathcal{H}} \left[ h(u) \neq h(v) \right] = \frac{1}{2} \quad (\text{由成对独立性导出}).

      • 期望割大小:

        E[size]={u,v}E12=E2.\mathbb{E}[\text{size}] = \sum_{\{u,v\} \in E} \frac{1}{2} = \frac{|E|}{2}.

      • 存在性:期望为 E/2|E|/2 → 必存在某个 ha,bh_{a,b} 满足 sizea,bE2\text{size}_{a,b} \geq \frac{|E|}{2}
    • 复杂度优势
      • 时间:O(n)×O(E)=O(n3)O(n) \times O(|E|) = O(n^3)(多项式时间)。
      • 空间:每个顶点赋值仅依赖 a,ba, b 和自身标签,可并行计算
  • 为什么更弱独立性足够?——本质原因
    随机算法的去随机化常依赖以下事实:
  1. 目标函数为线性(如割大小是边割事件的线性组合)。
  2. 期望的线性性(Linearity of Expectation):

    E[{u,v}E1cut]={u,v}EE[1cut].\mathbb{E}\left[\sum_{\{u,v\} \in E} \mathbf{1}_{\text{cut}}\right] = \sum_{\{u,v\} \in E} \mathbb{E}[\mathbf{1}_{\text{cut}}].

  3. 期望计算仅需边缘概率
    • 对每条边 ee,只需 Pr[割 e]=12\Pr[\text{割 } e] = \frac{1}{2}
    • 无需高阶联合事件概率(如三条边同时被割的概率)。

成对独立性已足够保证边缘概率正确,且能高效构造。

1.4 素性测试

  • Fermat 测试
    • 依据:若 nn 质数,则 a:ana(modn)\forall a: a^n \equiv a \pmod{n}
    • 缺陷:Carmichael 数(如 561561) 满足条件但为合数。
  • Rabin-Miller 算法
    • 步骤:对 n=2kq+1n=2^k q+1,检查序列 aq,a2q,,a2kq(modn)a^q, a^{2q}, \dots, a^{2^k q} \pmod{n} 是否以 11 结尾且前驱为 1-1
    • 错误率:若 nn 合数,Pr(通过)1/4\Pr(\text{通过}) \leq 1/4(Rabin 证明)。
  • AKS 算法 (2002)
    确定性多项式时间算法(但随机算法更高效)。

2. BPP 类:定义与性质

2.1 基本定义

  • 概率图灵机
    非确定性图灵机,每步有两个随机选择(概率 1/21/2),路径概率为 2随机步数2^{-\text{随机步数}}
  • BPP 类
    语言 LBPPL \in \text{BPP} 当且仅当存在多项式时间概率图灵机 MM 满足:

    {xL    Pr[M accepts x]2/3,xL    Pr[M accepts x]1/3.\begin{cases} x \in L & \implies \Pr[M \text{ accepts } x] \geq 2/3, \\ x \notin L & \implies \Pr[M \text{ accepts } x] \leq 1/3. \end{cases}

  • 等价定义:存在多项式时间验证器 VV 使得

    xL    Prr{0,1}p(x)[V(x,r)=1]2/3.x \in L \iff \Pr_{r \in \{0,1\}^{p(|x|)}} [V(x,r) = 1] \geq 2/3.

2.2 误差缩减

  • 定理:对任意 LBPPL \in \text{BPP} 和多项式 qq,存在概率机 MM' 在时间 poly(n)\text{poly}(n) 内以错误率 2q(n)\leq 2^{-q(n)} 判定 LL
  • 证明
    • 独立运行原算法 k=O(q(n))k = O(q(n)) 次,取多数结果。
    • 由 Chernoff 界,错误概率 eck2q(n)\leq e^{-c k} \leq 2^{-q(n)}c>0c>0 为常数)。

2.3 BPP 与电路复杂性(P/poly)

BPP与电路复杂性:详细展开

1. 非均匀计算模型:P/poly类

1.1 电路模型基础

  • 电路定义

    • 由布尔门(AND, OR, NOT)组成的有向无环图
    • 输入:n个布尔变量
    • 输出:1个布尔值
    • 大小:电路中门的数量
  • 有限函数计算

    • 对每个输入长度n,函数 fn:{0,1}n{0,1}f_n: \{0,1\}^n \to \{0,1\}
    • fnSIZEn(s)f_n \in \text{SIZE}_n(s) 当存在大小≤s的电路计算 fnf_n

1.2 扩展到无限语言

  • 语言 L{0,1}L \subseteq \{0,1\}^*

    • 对应函数序列 {fn}\{f_n\},其中 fn(x)=L(x)f_n(x) = L(x)x=n|x| = n
  • 非均匀复杂度类

    • LSIZE(T(n))L \in \text{SIZE}(T(n)) 当存在电路族 {Cn}\{C_n\} 满足:

      {n,Cn 计算 fnn0,nn0,CnT(n)\begin{cases} \forall n, C_n \text{ 计算 } f_n \\ \exists n_0, \forall n \geq n_0, |C_n| \leq T(n) \end{cases}

  • P/poly定义

    P/poly=cNSIZE(nc)\text{P/poly} = \bigcup_{c \in \mathbb{N}} \text{SIZE}(n^c)

    多项式大小电路族计算的语言类

1.3 P与P/poly的关系

特性 P类 P/poly类
计算模型 单一图灵机 电路族(每个输入长度不同电路)
均匀性 是(同一机器处理所有输入) 否(不同尺寸输入用不同电路)
包含关系 PP/poly\text{P} \subseteq \text{P/poly} PP/poly\text{P} \subsetneq \text{P/poly}
非可计算问题 不包含 包含(如硬编码不可判定问题的答案)

反例说明严格包含
定义语言:

L={1n第 n 个图灵机在空输入上停机}L = \{ 1^n \mid \text{第 } n \text{ 个图灵机在空输入上停机} \}

  • LP/polyL \in \text{P/poly}:对每个n,电路硬编码答案(0或1)
  • LREL \notin \text{RE}:图灵停机问题不可判定 → LPL \notin \text{P}

2. BPP ⊆ P/poly 的证明

2.1 定理核心思想

LBPPL \in \text{BPP},则存在多项式大小电路族计算 LL,证明分三步:

步骤1:误差缩减

  • 设原始BPP算法错误概率 ϵ=1/3\epsilon = 1/3
  • 通过k次独立重复并取多数结果,错误概率降至 ϵeck\epsilon' \leq e^{-ck} (Chernoff界)
  • 特别取 k=n+1k = n+1,则:

    ϵec(n+1)<1102n(对足够大c)\epsilon' \leq e^{-c(n+1)} < \frac{1}{10} \cdot 2^{-n} \quad (\text{对足够大c})

步骤2:并集界与存在性

  • 固定输入长度n,记输入空间 {0,1}n=2n|\{0,1\}^n| = 2^n
  • 对每个输入x,错误概率:

    Prr[M(x,r)L(x)]<δ=1102n\Pr_r[M'(x,r) \neq L(x)] < \delta = \frac{1}{10} \cdot 2^{-n}

  • 存在性论证:

    Prr[x:M(x,r)L(x)]xPrr[M(x,r)L(x)]<2nδ=110<1\Pr_r[\exists x: M'(x,r) \neq L(x)] \leq \sum_x \Pr_r[M'(x,r) \neq L(x)] < 2^n \cdot \delta = \frac{1}{10} < 1

    ⇒ 存在固定随机串 rr^* 使得:

    x{0,1}n:M(x,r)=L(x)\forall x \in \{0,1\}^n: M'(x, r^*) = L(x)

步骤3:电路构造

  1. 对每个n,硬编码 rr^*(长度 m=poly(n)m = \text{poly}(n))
  2. 构造电路 CnC_n 模拟 M(,r)M'(\cdot, r^*)
    • MM' 是确定性多项式时间算法
    • 标准电路模拟:时间 T(n)T(n) → 电路大小 O(T(n)2)O(T(n)^2)

3. BPP 与复杂性理论

3.1 Sipser-Gács 定理:P = NP ⇒ P = BPP

  • 目标:证明若 P=NP\text{P} = \text{NP},则 BPP=P\text{BPP} = \text{P}
  • 证明概要
    1. 误差缩减:设 LBPPL \in \text{BPP},有验证器 VV,错误率 2m2\leq 2^{-m-2}m=rm = |r|)。
      • 定义集合 Sx={rV(x,r)=1}S_x = \{ r \mid V(x,r) = 1 \}

        {xL    Sx(12m2)2m>2m1,xL    Sx22=1/4.\begin{cases} x \in L & \implies |S_x| \geq (1 - 2^{-m-2}) \cdot 2^m > 2^{m-1}, \\ x \notin L & \implies |S_x| \leq 2^{-2} = 1/4. \end{cases}

    2. 覆盖引理:若 S2m1|S| \geq 2^{m-1},则 s1,,s2m\exists s_1, \dots, s_{2m} 使得 i=12m(Ssi)={0,1}m\bigcup_{i=1}^{2m} (S \oplus s_i) = \{0,1\}^m
      • 证明(概率法):
        • 随机选取 sis_i,对固定 z{0,1}mz \in \{0,1\}^m

          Pr[zSsi]=1S2m12.\Pr[z \notin S \oplus s_i] = 1 - \frac{|S|}{2^m} \leq \frac{1}{2}.

        • Pr[z 未被覆盖](1/2)2m=22m\Pr[z \text{ 未被覆盖}] \leq (1/2)^{2m} = 2^{-2m}
        • 并集界:Pr[z 未被覆盖]2m22m=2m<1\Pr[\exists z \text{ 未被覆盖}] \leq 2^m \cdot 2^{-2m} = 2^{-m} < 1
    3. 量词消去
      • 定义谓词 ϕ(x;s1,,s2m):=ri:V(x,rsi)=1\phi(x; s_1, \dots, s_{2m}) := \forall r\, \exists i: V(x, r \oplus s_i) = 1
      • xLx \in L,则 s1,,s2m\exists s_1, \dots, s_{2m} 使 ϕ\phi 真。
      • xLx \notin L,则 s1,,s2m\forall s_1, \dots, s_{2m}ϕ\phi 假。
      • ϕ\phiΠ2\Pi_2 公式,且 P=NP\text{P} = \text{NP} 可推出多项式时间判定 ϕ\phi,故 LPL \in \text{P}

3.2 硬度与随机性(Impagliazzo-Wigderson 定理)

  • 定理
    若存在 LE=DTIME(2O(n))L \in \text{E} = \text{DTIME}(2^{O(n)})δ>0\delta > 0,使得对充分大 nnLLnn 位输入的电路复杂度 2δn\geq 2^{\delta n},则 P=BPP\text{P} = \text{BPP}
  • 内涵:指数时间问题的电路下界可推导出去随机化。

3.3 BPP 在复杂性谱中的位置

  • 已知包含关系

    PBPP{P/poly,EXP=DTIME(2poly(n)).\text{P} \subseteq \text{BPP} \subseteq \begin{cases} \text{P/poly}, \\ \text{EXP} = \text{DTIME}(2^{\text{poly}(n)}). \end{cases}

  • 开放问题
    1. BPP=?P\text{BPP} \overset{?}{=} \text{P}(广泛认为成立)。
    2. BPP=?NEXP\text{BPP} \overset{?}{=} \text{NEXP}(认为不成立,但未证明)。
  • 与 NP 的关系
    • 若 NP-难问题 BPP\in \text{BPP},则 NPBPP\text{NP} \subseteq \text{BPP}
    • P=NP\text{P} = \text{NP},则 P=BPP\text{P} = \text{BPP}(Sipser-Gács 定理)。
  • 可能的世界观
    情形 关系
    预期 P=BPPNPEXP\text{P} = \text{BPP} \subsetneq \text{NP} \subseteq \text{EXP}
    BPP 极大 PNPBPP=EXP\text{P} \subsetneq \text{NP} \subseteq \text{BPP} = \text{EXP}
    P 极大 P=NP=BPPEXP\text{P} = \text{NP} = \text{BPP} \subsetneq \text{EXP}

TCS Lec11总结
https://xiao-ao-jiang-hu.github.io/2025/05/28/tcs/tcs-11/
作者
wst
发布于
2025年5月28日
许可协议