N & NP
![](/assets/src/polynomial-hierarchy-memo/dtm.png)
P问题
对于该问题的所有输入,都可以在多项式时间内得到结果。从语言(language)的角度,使用确定性图灵机(deterministic turing machine)可做如下定义
\[A\subseteq\{0,1\}^\ast\in P:\] \[\exists M\in\text{polynomial time TM}. \forall x\in\{0,1\}^\ast. x\in A\iff M(x)=1\]NP问题
对于该问题的所有输入,无法保证在多项式时间内一定能得到结果,但可以在多项式时间内完成对某一结果的验证。从语言的的角度,使用非确定性图灵机(NTM)(即每一次状态的迁移由输入以及一比特随机数决定)可做如下定义
\[A\subseteq\{0,1\}^\ast\in NP:\] \[\exists M\in\text{polynomial time NTM}. \forall x\in\{0,1\}^\ast. x\in A\iff\exists r\in\{0,1\}^{p(\vert x\vert)}.M(x,r)=1\]此外如果将定义中使用的NTM视为一个属于$P$的语言,则可改写定义为如下形式
\[A\subseteq\{0,1\}^\ast\in NP:\] \[\exists B\in P. \forall x\in\{0,1\}^\ast. x\in A\iff\exists r\in\{0,1\}^{p(\vert x\vert)}.(x,r)\in B\]coNP问题
从语言的角度来讲,coNP问题属于NP问题的补集,即
\[A\subseteq\{0,1\}^\ast\in coNP\iff \{0,1\}^\ast\backslash A\in NP\]仿照NP的定义,完整形式可写为
\[A\subseteq\{0,1\}^\ast\in coNP:\] \[\exists B\in P. \forall x\in\{0,1\}^\ast. x\in A\iff{\color{red}\forall}r\in\{0,1\}^{p(\vert x\vert)}.(x,r)\not\in B\]若将B的补集重新命名为B,则可将不属于改写为属于,使得coNP与NP的定义只有量化子不同,即
\[A\subseteq\{0,1\}^\ast\in coNP:\] \[\exists B\in P. \forall x\in\{0,1\}^\ast. x\in A\iff\forall r\in\{0,1\}^{p(\vert x\vert)}.(x,r){\color{red}\in}B\]Polynomial Hierarchy
在以上的定义过程中,借由P的定义,使得NP以及coNP的定义不在依存于某一特定多项式时间机器,仅由命题的量化子$\exists$和$\forall$加以区别。将此种定义方式泛化后则可做如下定义
\[\Gamma=\{0,1\}^{p(\vert x\vert)},A\subseteq\{0,1\}^\ast\in\Sigma_k^P:\] \[\exists B\in P. \forall x\in\{0,1\}^\ast.x\in A\iff {\color{red}\exists}r_k\in\Gamma. {\color{red}\forall}r_{k-1}\in\Gamma. \dots ?r_1\in\Gamma. (x,r_k,\dots,r_1)\in B\]其中存在量化子和全称量化子交替出现,即如果k为偶数$?=\forall$,k为奇数$?=\exists$。那么,与$\Sigma_k^p$相对的其补集$\Pi_k^p$可以根据命题逻辑做如下定义
\[\Gamma=\{0,1\}^{p(\vert x\vert)},A\subseteq\{0,1\}^\ast\in\Pi_k^P:\] \[\exists B\in P. \forall x\in\{0,1\}^\ast.x\in A\iff {\color{red}\forall} r_k\in\Gamma. {\color{red}\exists} r_{k-1}\in\Gamma. \dots ?r_1\in\Gamma. (x,r_k,\dots,r_1)\in B\]如此一来,P、NP以及coNP则可划入统一定义内了。
- $P=\Sigma_0^p=\Pi_0^p$
- $NP=\Sigma_1^p$
- $coNp=\Pi_1^p$
最后将所有的$\Sigma_k^P$统称为多项式谱系PH。
\[PH=\bigcup_{k\in N}\Sigma_k^P\]![](/assets/src/polynomial-hierarchy-memo/PH.png)
Collapse
当给出适当的假定,那么多项式谱系就会出现坍缩的现象,即某一层级以上的问题均等价。常见的假定有
- $P=NP\implies PH=P$
- $NP=coNP\implies PH=NP$
将这两个命题推广后可得
- $\Sigma_k^P=\Sigma_{k+1}^P\implies PH=\Sigma_k^P$
- $\Sigma_k^P=\Pi_k^P\implies PH=\Sigma_k^P$
在此简单证明推广后的第一个命题。
- Step1: prove $\Sigma_k^P=\Pi_k^P$
- Step2: prove $\Sigma_i^P,\Pi_i^P\subseteq\Sigma_k^P=\Pi_k^P\implies\Sigma_{i+1}^P,\Pi_{i+1}^P\subseteq\Sigma_k^P=\Pi_k^P$ by induction
- Step3: now $\Sigma_k^P=\Sigma_{k+1}^P=\Sigma_{k+2}^P=\dots$ holds, then there is $PH=\bigcup_{i\in N}\Sigma_i^P=\Sigma_k^P$