DennyQi's Log

08 计数复杂性

离散概率本质是计数问题。所以如果想要进一步研究由概率图灵机定义的复杂性类(比如PP\text{PP}),一个很自然的角度是研究计数问题的复杂性类。

到目前为止,我们讨论的都是判定问题。判定问题的输出只能是0011,也就是说判定问题可以看作一类特殊的计数问题。然而直观上就可以接受,计数问题的难度可能远超判定问题的难度。下面我们通过有向图的简单环计数问题为例来说明这一点。

有向图的简单环计数(CYCLE\sharp\texttt{CYCLE})

有向图上一个不包含重复点的环称为简单环(simple cycle,这里不考虑自环)。有向图的简单环判定问题是多项式可解的(比如,我们只需要在DFS的过程中记录时间戳就可以求解强连通分量,从而通过强连通分量的大小判定是否存在简单环),然而有向图的简单环计数问题(CYCLE\sharp\texttt{CYCLE})是难的。我们证明,假设有向图的简单环计数问题(CYCLE\sharp\texttt{CYCLE})有多项式图灵机可解,那么P=NP\text{P}=\text{NP}

关键的观察是,哈密顿回路判定问题(一个NP\text{NP}-complete问题)可以归约到CYCLE\sharp\texttt{CYCLE}。对于一个给定的有向图GG,我们可以构造有向图GG',其中对GG的每条边uvu\to v做拆分使得单看uvu\to v恰好有2m2^m条不同路径(交叉构造,此过程是多项式的)。取m=nlognm=n\log n,我们可以做如下分析:如果GG存在哈密顿回路,那么GG'上简单环的个数至少为(2m)n=2n2logn=nn2(2^m)^n=2^{n^2\log n}=n^{n^2};如果GG不存在哈密顿回路,那么GG上简单环的个数至多nn1n^{n-1}个,所以GG'上简单环的个数至多nn1(2m)n1=nn21n^{n-1}\cdot (2^m)^{n-1}=n^{n^2-1}个。所以如果调用多项式的CYCLE\sharp\texttt{CYCLE}计数程序统计GG'上简单环的个数,就可以通过环的个数是否超过nn2n^{n^2}判定GG上是否存在哈密顿回路,整个过程是多项式的。那么我们就可以多项式解决NP\text{NP}-complete问题,所以P=NP\text{P}=\text{NP}

计数复杂性类

FP\text{FP}P\sharp\text{P}

多项式时间可解的计数问题类可以用确定性图灵机定义,记为FP\text{FP}(函数多项式时间复杂性类,Function Polynomial time complexity class)。具体的,如果存在一个确定性图灵机计算函数f:{0,1}Nf:\{0,1\}^*\to \N,就令fFPf\in \text{FP}

容易发现,如果我们承认PNP\text{P}\neq \text{NP},那么上一节中提到的CYCLE\sharp\texttt{CYCLE}并不在FP\text{FP}内。我们关心这样的计数问题,尽管它本身不是多项式可解的,但是它的解都是多项式可验证的。这类问题也应当构成一个复杂性类,这个类和FP\text{FP}的关系就好像NP\text{NP}P\text{P}的关系一样。我们把这个类称为P\sharp\text{P}。和NP\text{NP}类一样,这个复杂性类可以用确定性图灵机定义,也可以用非确定性图灵机定义。用确定性图灵机定义:fPf\in \sharp\text{P}当且仅当存在确定性图灵机M\mathbb{M}满足f(x)={y{0,1}p(x)M(x,y)=1}f(x)=|\{y\in \{0,1\}^{p(|x|)}\mid \mathbb{M}(x,y)=1\}|,这里的yy相当于一个用来验证的解;用非确定性图灵机定义:如果存在非确定性图灵机N\N判定某个LNPL\in \text{NP},并且在N\N上输入xx时(多项式时间内)恰好有f(x)f(x)条路径停机输出11,就称函数fPf\in \sharp\text{P}

自然地,有FPP\text{FP}\subseteq \sharp\text{P},并且P=FP    NP=P\sharp\text{P}=\text{FP}\implies \text{NP}=\text{P}。因为判定问题是一类特殊的计数问题,如果PFP\sharp \text{P}\subseteq \text{FP},也即一切非确定性图灵机多项式可计算的计数问题都存在确定性图灵机在多项式时间计算,那么一切非确定性图灵机多项式可判定的判定问题都存在确定性图灵机在多项式时间内判定,因此NPP\text{NP}\subseteq \text{P},所以NP=P\text{NP}=\text{P}

还可以证明,P=PSPACE    P=FP\text{P}=\text{PSPACE}\implies \sharp\text{P}=\text{FP}。对于任何fPf\in \sharp\text{P},我们要证明fFPf\in \text{FP}。因为fPf\in \sharp\text{P},存在一台确定性图灵机M\mathbb{M}使得f(x)={y{0,1}p(x)M(x,y)=1}f(x)=|\{y\in\{0,1\}^{p(|x|)}\mid \mathbb{M}(x,y)=1\}|。于是我们可以构造一台确定性图灵机枚举yy,这样就能以多项式空间求出f(x)f(x)。具体的,由于PSPACE\text{PSPACE}是定义在判定问题上的,我们可以构造一系列PSPACE\text{PSPACE}的图灵机用来判定f(x)f(x)的各个二进制位是否为11。既然P=PSPACE\text{P}=\text{PSPACE},这一系列图灵机都是P\text{P}的。因此计算f(x)f(x)的图灵机自然是FP\text{FP}的。

注意到,PP\text{PP}类可以看作P\sharp\text{P}类的判定版本,后者是数满足某一性质的解的个数,前者是判定满足某一性质的解是否超过一半。那么如果FP=P\text{FP}=\sharp\text{P},也即如果计数是多项式时间的,那么PP\text{PP}也一定是多项式时间的。所以FP=P    P=PP\text{FP}=\sharp\text{P}\implies \text{P}=\text{PP}。能不能反过来证明,PP=P    FP=P\text{PP}=\text{P}\implies \text{FP}=\sharp\text{P}也成立呢?也就是证明PP=P    PFP\text{PP}=\text{P}\implies \sharp\text{P}\subseteq \text{FP}呢?答案是肯定的。这里的核心观察是,我们可以用二分法把计数问题转化为判定问题,二分的次数是多项式次(因为总数是指数的),而如果判定过程有多项式算法,那么整个二分也就是多项式算法了。具体证明如下:Pf. 设fPf\in \sharp\text{P},那么根据定义存在确定性图灵机M\mathbb{M}满足f(x)={y{0,1}p(x)M(x,y)=1}f(x)=|\{y\in \{0,1\}^{p(|x|)}\mid \mathbb{M}(x,y)=1\}|。基于M\mathbb{M},我们可以任取一{0,1}p(x)\ell\in\{0,1\}^{p(|x|)},定义一个图灵机M\mathbb{M}_\ell,它接受输入xx和一个p(x)+1|p(x)|+1位的二进制串byb\|y,若b=1b=1M(x,by)=M(x,y)\mathbb{M}_\ell(x,b\|y)=\mathbb{M}(x,y),若b=0b=0M(x,by)=1[y<]\mathbb{M}_\ell(x,b\|y)=\mathbb{1}[y<\ell]。把byb\| y看作随机串,M\mathbb{M}_\ell就对应着一台接受输入xx的概率图灵机P\mathbb{P}_\ellP(x)=1\mathbb{P}_\ell(x)=1当且仅当f(x)+>2p(x)+12=2p(x)f(x)+\ell>\dfrac{2^{p(|x|)+1}}{2}=2^{p(|x|)}。设P\mathbb{P}_\ell判定预言LL,则LPPL\in\text{PP}。由前提PP=P\text{PP}=\text{P}LPL\in\text{P}。所以,{0,1}p(x)\forall \ell\in\{0,1\}^{p(|x|)},我们能够多项式时间判定是否成立f(x)>2p(x)f(x)>2^{p(|x|)}-\ell。注意到2p(x)2^{p(|x|)}-\ell的取值范围恰好也是{0,1}p(x)\{0,1\}^{p(|x|)},所以我们可以在整个值域上二分。Qed. 所以最终我们得到PP=P    FP=P\text{PP}=\text{P}\iff \text{FP}=\sharp\text{P}

P\sharp\text{P}-completeness

一个自然的问题是,如何定义P\sharp\text{P}中最难的问题?也就是问,如何定义计数问题之间的(多项式)归约?我们依然可以通过oracle来定义:函数ff能多项式归约到gg的含义是,通过带有oracle gg的确定性图灵机计算多项式时间能够计算ff。也即fFPgf\in \text{FP}^g。由此,ffP\sharp\text{P}-hard问题当且仅当gP\forall g\in \sharp\text{P}gFPfg \in \text{FP}^f。如果进一步满足fPf\in\sharp\text{P},则称ffP\sharp\text{P}-complete问题。

SAT\sharp\texttt{SAT}问题是P\sharp\text{P}-complete的。顾名思义,SAT\sharp\texttt{SAT}问题中这样一个函数,输入一个CNF(对应的二进制串),输出满足这个CNF的可满足赋值个数。(和证明SAT\texttt{SAT}NP\text{NP}-complete的过程很相似)

01矩阵的permanant(积和式)计算是P\sharp\text{P}-complete的。这是为Valiant定理。矩阵AA的permanant定义为perm(A)=σPni=1nAi,σ(i)\texttt{perm}(A)=\sum\limits_{\sigma\in P_n}\prod\limits_{i=1}^n A_{i,\sigma(i)}。注意到矩阵的行列式定义为det(A)=σPn(1)sw(σ)i=1nAi,σ(i)\det(A)=\sum\limits_{\sigma\in P_n}(-1)^{sw(\sigma)}\prod\limits_{i=1}^n A_{i,\sigma(i)} ,sw(σ),sw(\sigma)表示permutation σ\sigma的逆序对个数。行列式可以在高斯消元的过程中顺带算出,因此由多项式时间算法。而Valiant定理告诉我们,作为计数问题的permanant问题尽管和行列式相比只差了一个逆序对的系数,却没有多项式时间算法(在PNP\text{P}\neq\text{NP}的假设下)。

同样用二分法把计数问题转化为判定问题的思想,可以证明PPP=PP\text{P}^\text{PP}=\text{P}^{\sharp\text{P}}。这意味着PP\text{PP}P\sharp\text{P}在作为oracle的复杂性类意义下是等价的。因为SAT\natural \texttt{SAT}PP\text{PP}-complete的,SAT\sharp\texttt{SAT}P\sharp\text{P}-complete的,因此只需证明PSAT=PSAT\text{P}^{\natural \texttt{SAT}}=\text{P}^{\sharp\texttt{SAT}}。下证PSATPSAT\text{P}^{\natural \texttt{SAT}}\subseteq \text{P}^{\sharp\texttt{SAT}}LPSAT\forall L\in \text{P}^{\natural \texttt{SAT}},设图灵机MSAT\mathbb{M}^{\natural\texttt{SAT}}判定LL,我们可以基于此设计MSAT\mathbb{M}^{\sharp\texttt{SAT}},在前者调用SAT\natural\texttt{SAT} oracle时,我们只需调用SAT\sharp\texttt{SAT}判断结果是否超过总赋值个数的一半,也可以得到相同的结果,因此LPSATL\in\text{P}^{\sharp \texttt{SAT}}。下证PSATPSAT\text{P}^{\sharp\texttt{SAT}}\subseteq \text{P}^{\natural \texttt{SAT}}LPSAT\forall L\in \text{P}^{\sharp \texttt{SAT}},判定LL的图灵机M\mathbb{M}至多调用多项式次SAT\sharp\texttt{SAT} oracle,对于每一次调用我们只需用SAT\natural\texttt{SAT}二分也可以得到相同的结果,而二分的次数是多项式次的,因此LPSATL\in\text{P}^{\natural \texttt{SAT}}