TCS初心者
首发于TCS初心者

一个最坏复杂度到平均复杂度的规约

本文是ECCC TR18-138(FOCS2018最佳学生论文奖之一)的一个笔记。由于(笔者个人观点)论文写得比较晦涩,而idea本身比较简洁,所以我在这里会试着讲得更加科普向(>_>),可能会为了直观性而一定程度地放弃严谨性。另外,笔者也只是刚刚理解了论文的大致思路,因此可能会有错误之处,烦请各位批评指正。

本文假设读者有本科计算理论的背景,例如知道 \mathsf{P},\mathsf{NP} 的定义,知道规约的概念。

本文的目录如下:

  • 背景:里面扯了相当多东西,希望能讲清楚这篇paper的motivation和contribution;(这一节写了其他节长度的两倍。)
  • 定义:定义了文中主要的概念,即Kolmogorov复杂度与文中研究的几个问题( \mathrm{MINKT} 的变种);
  • Nisan-Wigderson Pseudorandom Generator
  • Natural Proof
  • (上面两节是主要用到的工具)
  • 规约:其实这个规约非常简单(虽然论文中算一些具体数值算了很长篇幅),就是用Natural Proof去破掉NW PRG。
  • 后记:也是随便扯了扯淡。

背景

在计算理论中,我们一般关注算法的最坏情况(worst-case):算法 A 解决了问题 L ,当且仅当对于所有输入串 x ,我们有 A(x)=1 当且仅当 x\in L 。然而也有一些研究着眼于算法的平均情况(average-case)。此时在研究一个问题的时候,我们不仅要研究问题本身,也要研究输入的分布:即,我们研究的“问题”可以被写成一个有序对 (L,\mathcal{D}) ,其中 L\subseteq\{0,1\}^* 为该问题接受的输入串的集合,而 \mathcal{D}=(\mathcal{D}_m)_{m\in\mathbb{N}} 为每个输入长度 m 指定了一个 \{0,1\}^m 上的分布 \mathcal{D}_m ,表示该问题的长度为 m 的输入来源于这个分布。例如 L 可能是 \mathrm{SAT}\mathrm{Matching} 或者任何你能想到的问题,而 \mathcal{D}_m 可能是所有长度为 m 的SAT instance上的一个分布。

在平均情况复杂度(average-case complexity)中,我们感兴趣的两个复杂度类分别是 \mathsf{DistNP}\mathsf{AvgP} ,分别对应着平均复杂度意义下的 \mathsf{NP}\mathsf{P} 。( \mathsf{P} 还有一个对应的复杂度类是 \mathsf{HeurP} ,后面会讲。)其中,

  • \mathsf{DistNP}=\{(L,\mathcal{D}):L\in\mathsf{NP},\mathcal{D}\text{可以高效采样(efficiently samplable)}\} 。这里 \mathcal{D} 可以高效采样的意思是,存在一个多项式时间的随机算法,在输入串 0^mm0 )后输出一个按照 \mathcal{D}_m 分布的串。换句话说,就是一个 \mathsf{NP} 问题配备上一个“正常”的输入分布。
  • \mathsf{AvgP} 的定义是能够以任意多项式小的错误率解决的问题的集合。设 \delta(n) 是一个表示错误率的函数(如 \delta(n)=1/n ),算法 A 以错误率 \delta 解决了问题 (L,\mathcal{D}) 当且仅当:
    • 输入 x 的时候, A(x) 要么等于 L(x) ,要么等于 \bot (即“不知道”);
    • x 取自分布 \mathcal{D}_m 时, A 说不知道的概率至多是 \delta(m),即\Pr_{x\sim\mathsf{D}_m}[A(x)=\bot]\le\delta(m)
  • 具体地, (L,\mathcal{D})\in\mathsf{AvgP} 当且仅当对任意大的多项式 p(n) ,存在以错误率 1/p(n) 解决 (L,\mathcal{D}) 的多项式时间算法。

计算复杂性理论中一个著名的open problem是: \mathsf{NP} 在最坏情况下的复杂性能不能推出其在平均意义下的复杂性?换句话说,如果 \mathsf{DistNP}\subseteq\mathsf{AvgP} ,能不能证明类似于 \mathsf{NP}\subseteq\mathsf{BPP} 的代表最坏复杂性的结论?一个解决该问题的方法是:说明一类 \mathsf{NP} 问题存在最坏情况平均情况的规约,例如:

  • 离散对数问题,如果能解决其平均情况,那么就能以很高的概率解决最坏情况。设我们要找一个数 r 使得 g^r\equiv a\pmod p (记为 \mathrm{dlog}(a) ),则我们找一个 [1,p-1] 内的均匀随机数 b ,有 ab^{-1} 也是均匀随机分布的,且 \mathrm{dlog}(a)\equiv\mathrm{dlog}(b)+\mathrm{dlog}(ab^{-1})\pmod{p-1}。也就是说,如果我们能够解决均匀随机分布( bab^{-1} )的离散对数问题,那么我们就可以在最坏情况下用随机算法解决离散对数问题。

很多问题都有这样的规约:例如离散对数问题、积和式(Permanent)、格(lattice)上的一些问题等等。但是这些问题不是在 \mathsf{NP}\cap\mathsf{coNP} 中(离散对数等),就是(极有可能)不在 \mathsf{NP} 中(积和式是 \#\mathsf{P} 完全的)。很多研究表明这种现象是必然的:如果问题 L 可以被黑盒规约到一个 \mathsf{DistNP} 中的“平均情况问题” (L',\mathcal{D}') ,那么 L\in\mathsf{NP}/\mathrm{poly}\cap\mathsf{coNP}/\mathrm{poly} (换句话说就是 L 极不可能是 \mathsf{NP} 完全的)。而大多数这样的规约都是黑盒规约:上述离散对数的例子中,我们可以假设有一个黑盒子能够解决平均情况下的离散对数问题,然后以这个黑盒子为oracle构建了离散对数问题的oracle Turing machine(OTM)。

这篇paper中则不是黑盒规约:这篇paper中定义了一个叫 (\mathrm{MINKT}[r],\mathcal{D}^u)\mathsf{DistNP} 问题,并证明了如果 (\mathrm{MINKT}[r],\mathcal{D}^u)\in\mathsf{AvgP} ,则一个叫 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT}\mathrm{Promise}\text{-}\mathsf{NP} 问题存在(最坏情况)多项式算法。(具体地, (\mathrm{MINKT}[r],\mathcal{D}^u)\in\mathsf{AvgP}\implies\mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT}\in\mathrm{Promise}\text{-}\mathsf{ZPP} 。)与前面的规约不同:

  1. 上述规约的确不是黑盒规约:给定一个解决 (\mathrm{MINKT}[r],\mathcal{D}^u) 的oracle,我们并不知道如何解决 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} ,而最终的 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} 依赖于解决 (\mathrm{MINKT}[r],\mathcal{D}^u) 的oracle有一个很短的源代码
  2. 有很强的证据支持 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT}\not\in\mathsf{coNP}/\mathrm{poly} ,因此我们不太可能找到对应的黑盒规约。

定义

我们现在着眼于定义 \mathrm{MINKT} ,以及上述提到的它的变种。 \mathrm{MINKT} 是一个与(time-bounded) Kolmogorov复杂度相关的问题,于是我们先定义Kolmogorov复杂度。

x\in\{0,1\}^*t\in\mathbb{N} ,则 \text{K}_t(x) 表示最短的在 t 步之内输出 x 的程序的长度。(严格定义的时候,我们会先指定一个通用图灵机(universal Turing machine ) U ,然后 \text{K}_t(x)=\min\{|d|:U(d)\text{在}t\text{步之内输出}x\} 。)相应地我们定义 K^A_t(x) ,表示最短的在 t 步之内输出 x 的带有oracle A 的程序(OTM)的长度。

我们复习一下本科计算理论中关于Kolmogorov复杂度的一些知识:(这些知识对于各种Kolmogorov复杂度的各种变种,如time-bounded、space-bounded、Levin's都成立。)

  • 对任意长为 n 的串 x\text{K}_t(x)\le n+O(1) :写一个“输出 x ”的程序即可;
  • 随机串的Kolmogorov复杂度接近于它的长度,即 \Pr_{x\sim\{0,1\}^n}[\text{K}_t(x)\le |x|-\Omega(1)]\le 1/2 。(证明是用的counting argument;Kolmogorov因此用这种复杂度来定义“随机”。)

接下来是关于 \mathrm{MINKT} 的问题:

  • 给定函数 r:\mathbb{N}\to\mathbb{N} ,定义\mathrm{MINKT}[r]=\{(x,1^t):K_t(x)<r(|x|)\} 。(即: x 是不是 r -随机串?)
  • 定义 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} 为一个promise problem,其Yes instance的集合为 \{(x,1^t,1^s):\text{K}_t(x)\le s\} ,而No instance的集合为 \{(x,1^t,1^s):\text{K}_{\tau(|x|,t)}(x)>\sigma(|x|,s)\} 。事实上,论文中常用的函数为 \sigma(n,s)=s+O(\sqrt{s}\log n+\log^2 n)\tau(n,t)=\mathrm{poly}(n,t) ,因此这个问题问的是:我是能在 s 的代码长度限制、 t 的时间限制内输出 x ,还是再多加一点点代码长度限制和比较多(多项式)时间限制也做不到?

显然我们上述定义的问题都是 \mathsf{NP} 的:例如为了解决 \mathrm{MINKT}[r] ,猜一个长度不超过 r(|x|) 的程序并运行其 t 步就行了。

另外: \mathcal{D}^u (在长度为 m 上)的定义是这样的:随机选择 t\in\{1,2,\dots,m\}x\in\{0,1\}^{m-t} 并输出 (x,1^t) 。这个定义比较technical,不是重点。

Nisan-Wigderson Pseudorandom Generator

考虑一个伪随机数发生器(Pseudorandom Generator,下文记作PRG):即一个函数 G:\{0,1\}^d\to\{0,1\}^m ,给定比较短(长为 d )的随机种子 seed ,输出一个比较长(长为 m )的“伪随机数” G(seed) 。我们有一些对手(adversary),假设他们的计算能力局限于一个集合 \mathcal{C} (例如 \mathcal{C} 可能是所有大小为 size 的电路,意味着对手能够计算的函数的电路复杂度不超过 size )。我们说 G 能够 \epsilon -愚弄(fool) \mathcal{C} ,如果当种子 seed 是随机的时候,任意 \mathcal{C} 中的对手都无法分辨 G\{0,1\}^m 的随机分布。形式化地讲就是

\forall C\in\mathcal{C}, \left|\Pr_{seed\sim\{0,1\}^d}[C(G(seed))=1]-\Pr_{x\sim\{0,1\}^m}[C(x)=1]\right|\le\epsilon

Nisan和Wigderson发明了一种PRG:给定一个“困难”的函数 f (例如:不能被大小为 s 的电路近似),我们可以在 f 的基础上构造一个能够愚弄 大小不超过 s' 的电路 的PRG,其中 s' 是一个略小于 s 的数。非常重要的一点是,他们的证明是构造性的,即给定一个分辨该PRG与真随机数的电路,设该电路的大小为 s' ,则我们可以构造出一个大小为 s 的电路来计算 f 。“不能被较小的电路近似”这个条件有点苛刻,但可以利用一些list-decodable error-correcting code之类的技术来变成“较小的电路不能精确计算 f ”。(这里省掉了不少technical details。)

相关地,我们有如下引理:

简单地讲,这个Lemma说的就是,我们可以基于 x 构建一个Nisan-Wigderson PRG,如果oracle T 破掉了PRG(即以 \delta 的概率区分PRG和真随机串),则借助这个oracle我们可以又短又快地算出 x

稍微精确一点的表述是 \text{K}_t^T(x)\le \exp(\ell^2/d)\cdot m+d+O(\log(nmd/\delta)) ,即存在一个长度为 \text{K}_t^T(x)的OTM,当给出 T 为oracle时在 t=\mathrm{poly}(n,m,d,1/\delta) 时间内输出 x 。其中 \ell\delta 是两个参数, d,m 分别是PRG输入、输出长度, n=|x| 。我们构造出的这个OTM有多大呢?最终在Corollary 27中计算的时候,这个数会比 m 只大一点点。

我们能够用oracle T来破解 【用x构造的PRG】,那么我们就能用T来计算x。

Natural Proof

有一个概念叫Natural Proof(或Natural Property,以下简称NaP),是Razborov和Rudich用来说明证明电路下界(circuit lower bound)的困难程度的,后来人们发现这个概念与 \mathrm{MINKT} (或者说MCSP及各种长得像MCSP的问题)有关。NaP原来的定义是用circuit complexity定义的,这里我们用time-bounded Kolmogorov complexity定义。给定常数 \delta (density)与函数 r:\mathbb{N}\to\mathbb{N} (randomness threshold),我们说 L\subseteq\{0,1\}^* 是一个NaP,当且仅当

  1. (large): 随机选一个串,有一定几率在 L 中,即 \forall m\in\mathbb{N},\Pr_{x\sim\{0,1\}^m}[x\in L]\ge \delta
  2. (constructive): L\in\mathsf{P}
  3. (useful): L 中只有Kolmogorov复杂度较大的串,即 \forall x\in L,\text{K}_t(x)\ge r(|x|)
一个NaP的示意图

NaP存在吗?如果NaP存在,那么我们就可以用来证明一些Kolmogorov复杂度的下界(或者在Razborov-Rudich原文中的,circuit lower bound)。但是NaP还可以用来识别伪随机数发生器:输入 x ,如果 x 是真随机的,那么有很大几率在 L 中;而如果 x 是伪随机的,则 \text{K}_t(x)\le r(|x|)x 不可能在 L 中。如果存在密码学上的伪随机数发生器,那么就不存在NaP。(这差不多就是Razborov-Rudich的论证了。)

NaP和 \mathrm{MINKT} 的联系挺显然的:如果 (\mathrm{MINKT}[r],\mathcal{D}^u)\in\mathsf{AvgP} ,则NaP是存在的。事实上,对于从平均意义上解决 (\mathrm{MINKT}[r],\mathcal{D}^u) 的算法 A ,设 \Pr_{x\sim\mathcal{D}^u}[A(x)=\bot]\le 1/6m ,则 \{x\in\{0,1\}^n:A(x,1^t)=0\} 是一个NaP。(见下图)

经过计算(Lemma 33;会用到 \mathcal{D}^u 的定义),这个NaP的density为 \delta=1/3

规约

我们现在可以给出这个规约大概的样子了。如果 (\mathrm{MINKT}[r],\mathcal{D}^u)\in\mathsf{AvgP} ,那么我们能够得到一个长度为常数的程序实现一个NaP(这里的长度不算输入/输出的长度)。我们考虑 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} 的一个输入 (x,1^t,1^s) ,假设 \text{K}_t(x)\le s ,我们试着在多项式时间内构造出一个在 \tau(|x|,t) 时间内输出 x ,且长度不超过 \sigma(|x|,s) 的程序。(注意:如果我们能做到这个任务,那么我们就解决了 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} 。)我们令 m 为一个略大于 \text{K}_t(x) 的数,并做如下的事情:

  1. x 来构造一个NW PRG,该PRG的输出长度为 m
  2. 用NaP来破掉这个PRG,通过Lemma 24获得一个长度只比 m 大一点的程序,这个程序能用来计算 x ,但需要用到NaP作为oracle;
  3. 由于NaP可以用常数长度的程序来实现,所以我们获得了一个长度略大于 \text{K}_t(x) 的(没有oracle的)程序,它可以在 \tau(|x|,t)=\mathrm{poly}(|x|,t) 的时间内输出 x 。经过计算,这个长度可以控制在 \sigma(|x|,s)\approx s+\text{比较小的数} 内。

注意第3步:这里用到了不仅仅是“我们能解决 (\mathrm{MINKT}[r],\mathcal{D}^u) ”,用到的条件是 (\mathrm{MINKT}[r],\mathcal{D}^u) 能被一个程序解决。这是这篇paper的规约不是黑盒规约的直接原因。如果 (\mathrm{MINKT}[r],\mathcal{D}^u) 是被一个oracle T 解决的,那么我们只能说 \text{K}_t^T(x) 有一个上界,而不能推出 \text{K}_t(x) 有相应的上界。

有一个问题:如何找到 m ?事实上由于 \text{K}_t(x)\le |x|+O(1) ,我们暴力枚举 m 即可。如果 m 太小了,那么NW PRG的输出相当于是真随机的输出(对应于Theorem 26中的 K_t(x)+d+O(\log(nmd/\delta))\ge r(m) ),NaP无法破掉PRG,我们找到的程序就是错的,我们可以验证它不满足条件并忽略它;在剩下的程序中,找一个满足 \sigma\tau 的条件的就行了。

事实上证明比上述要复杂一些,但是思路大概是这样的。具体的证明可以见Corollary 27。

后记

在看了这篇paper后,可能会提出的问题是: \mathrm{MINKT} 是不是 \mathsf{NP} 完全的?这篇paper猜想 \mathrm{Gap}_{\sigma,\tau}\mathrm{MINKT} 在非常弱的意义下是 \mathsf{NP} 完全的(Conjecture 5),如果这个猜想成立,则我们能从最坏情况假设( \mathsf{NP}\not\subseteq\mathsf{coNP}/\mathrm{poly} )中推导出平均情况假设 \mathsf{DistNP}\not\subseteq\mathsf{AvgP} ,接近于Heuristica不存在(即 \mathsf{P}\ne\mathsf{NP}\implies\mathsf{DistNP}\not\subseteq\mathsf{AvgP} )了。这将是average-case complexity中的很大的成就。

可惜, \mathrm{MINKT} (还有MCSP的各种变种)的 \mathsf{NP} 完全性是一个非常大的坑,关于这个问题我们知道的还太少(只有类似于“如果MCSP在Karp reduction下是 \mathsf{NP} 完全的,那么 \mathsf{EXP}\ne\mathsf{ZPP} ”这样的结论:我们需要较强类型的规约,或者我们需要解决 \mathsf{EXP}\ne\mathsf{ZPP} 这样的大问题)。见这篇这篇,可能还有一些其他reference。

还有一个问题:能否将这篇paper中的讨论搬到 \mathsf{HeurP} 上去?想要解决 \mathsf{HeurP} 中的问题,只要给出一个可以犯错(而不是只能说“不知道”)的程序就行了。例如为了解决 \mathrm{MINKT} ,我们只要说“所有字符串都是随机串”就行了,毕竟大部分字符串都是随机串。

以及,NW PRG还有不少用法:这篇这篇。(这是一个巨大的坑。

彩蛋:并不是只有我一个人管Natural Proof叫NaP。。。

编辑于 2019-02-27

文章被以下专栏收录