一、coNP的定义
有关图灵机、语言等术语的定义请参见布尔表达式可满足性问题(SAT)与库克-列文定理(上)。
语言的补集:若 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗是一个语言,则用 L ‾ \overline L L表示 L L L的补集,即 L ‾ = { 0 , 1 } ∗ − L \overline L=\{0,1\}^*-L L={0,1}∗−L。 x ∈ L ⟺ x ∉ L ‾ x\in L\iff x\notin\overline L x∈L⟺x∈/L。
N P \bold{NP} NP的两种等价定义:
(1) 语言
L
⊆
{
0
,
1
}
∗
L\subseteq\{0,1\}^*
L⊆{0,1}∗属于
N
P
⟺
\bold{NP}\iff
NP⟺存在多项式
p
:
N
→
N
p:\mathbb N\to\mathbb N
p:N→N和一个多项式时间的图灵机
M
M
M(称为
L
L
L的验证器),使得
∀
x
∈
{
0
,
1
}
∗
,
x
∈
L
⟺
∃
u
∈
{
0
,
1
}
p
(
∣
x
∣
)
满足
M
(
x
,
u
)
=
1
\forall x\in\{0,1\}^*,x\in L\iff\exists u\in\{0,1\}^{p(|x|)}\text{满足}M(x,u)=1
∀x∈{0,1}∗,x∈L⟺∃u∈{0,1}p(∣x∣)满足M(x,u)=1如果
x
∈
L
x\in L
x∈L和
u
∈
{
0
,
1
}
p
(
∣
x
∣
)
u\in\{0,1\}^{p(|x|)}
u∈{0,1}p(∣x∣)满足
M
(
x
,
u
)
=
1
M(x,u)=1
M(x,u)=1,则称
u
u
u是
x
x
x关于语言
L
L
L和图灵机
M
M
M的证明(certificate/witness)。
换言之,
N
P
\bold{NP}
NP包含了可在多项式时间内验证的语言。
(2) 语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗属于 N P ⟺ \bold{NP}\iff NP⟺存在非确定型图灵机 M M M,使得 M M M能在多项式时间内判断任意字符串 x ∈ { 0 , 1 } ∗ x\in\{0,1\}^* x∈{0,1}∗属于 L L L。
c o N P \bold{coNP} coNP的第一种定义: c o N P = { L ∣ L ‾ ∈ N P } \bold{coNP}=\{L|\overline L\in\bold{NP}\} coNP={L∣L∈NP}。
也就是说,如果一个语言的补集属于 N P \bold{NP} NP,那么这个语言就属于 c o N P \bold{coNP} coNP。根据 N P \bold{NP} NP的第一种定义,一个语言属于 N P \bold{NP} NP就是说可以在多项式时间内验证一个字符串属于这个语言。那么 c o N P \bold{coNP} coNP就代表可以在多项式时间内验证一个字符串不属于这个语言。例如布尔表达式可满足性问题 SAT = { ϕ ∣ ϕ 是可满足的布尔公式 } \text{SAT}=\{\phi|\phi\text{是可满足的布尔公式}\} SAT={ϕ∣ϕ是可满足的布尔公式},它属于 N P \bold{NP} NP,因为给定公式中变量的一组满足性赋值可以很轻松地验证这个公式是可满足的。这个问题的补集 SAT ‾ = { ϕ ∣ ϕ 是不可满足的布尔公式,即 ϕ 是矛盾式、永假式 } \overline{\text{SAT}}=\{\phi|\phi\text{是不可满足的布尔公式,即}\phi\text{是矛盾式、永假式}\} SAT={ϕ∣ϕ是不可满足的布尔公式,即ϕ是矛盾式、永假式}是属于 c o N P \bold{coNP} coNP的,因为给定公式中变量的一组满足性赋值就可以知道该公式是可满足的,于是可知该公式不属于 SAT ‾ \overline{\text{SAT}} SAT。
c o N P \bold{coNP} coNP的第二种定义:语言 L ∈ { 0 , 1 } ∗ L\in\{0,1\}^* L∈{0,1}∗属于 c o N P ⟺ \bold{coNP}\iff coNP⟺存在多项式 p : N → N p:\mathbb N\to\mathbb N p:N→N和一个多项式时间的图灵机 M M M,使得 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L ⟺ ∀ u ∈ { 0 , 1 } p ( ∣ x ∣ ) 满足 M ( x , u ) = 1 \forall x\in\{0,1\}^*,x\in L\iff\forall u\in\{0,1\}^{p(|x|)}\text{满足}M(x,u)=1 ∀x∈{0,1}∗,x∈L⟺∀u∈{0,1}p(∣x∣)满足M(x,u)=1注意,这和 N P \bold{NP} NP的定义的区别是 ∃ u \exists u ∃u变成了 ∀ u \forall u ∀u。对于 SAT ∈ N P \text{SAT}\in\bold{NP} SAT∈NP而言, u u u是一组赋值, M ( x , u ) M(x,u) M(x,u)检查 u u u是不是布尔公式 x x x的可满足性赋值。只要有一个可满足性赋值,那么 x x x就是可满足的,所以用 ∃ u \exists u ∃u。对于 SAT ‾ ∈ c o N P \overline{\text{SAT}}\in\bold{coNP} SAT∈coNP, u u u也是一组赋值,而 M ( x , u ) M(x,u) M(x,u)检查 u u u是不是不满足 x x x。只有所有赋值都不满足 x x x,才能得出 x x x是不可满足的,这就是为什么用 ∀ u \forall u ∀u。
定理1 c o N P \bold{coNP} coNP的两种定义是等价的。
证明:对于语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗, L ‾ ∈ N P ⟺ [ ∃ 多项式 p : N → N 和图灵机 M 使得 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L ‾ ⟺ ∃ u ∈ { 0 , 1 } p ( ∣ x ∣ ) 满足 M ( x , u ) = 1 ] ⟺ [ ∃ 多项式 p : N → N 和图灵机 M 使得 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L ⟺ ∀ u ∈ { 0 , 1 } p ( ∣ x ∣ ) 都有 M ( x , u ) = 0 ] \begin{aligned}&\overline L\in\bold{NP}\\\iff&\left[\exists\text{多项式}p:\mathbb N\to\mathbb N\text{和图灵机}M\text{使得}\forall x\in\{0,1\}^*,x\in\overline L\iff\exists u\in\{0,1\}^{p(|x|)}\text{满足}M(x,u)=1\right]\\\iff&\left[\exists\text{多项式}p:\mathbb N\to\mathbb N\text{和图灵机}M\text{使得}\forall x\in\{0,1\}^*,x\in L\iff\forall u\in\{0,1\}^{p(|x|)}\text{都有}M(x,u)=0\right]\end{aligned} ⟺⟺L∈NP[∃多项式p:N→N和图灵机M使得∀x∈{0,1}∗,x∈L⟺∃u∈{0,1}p(∣x∣)满足M(x,u)=1][∃多项式p:N→N和图灵机M使得∀x∈{0,1}∗,x∈L⟺∀u∈{0,1}p(∣x∣)都有M(x,u)=0]注意,中间取否命题时 ∃ \exists ∃要变成 ∀ \forall ∀。最后,令 M ′ ( x , u ) = ¬ M ( x , u ) M'(x,u)=\neg M(x,u) M′(x,u)=¬M(x,u),就得到了 ∃ 多项式 p : N → N 和图灵机 M 使得 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L ⟺ ∀ u ∈ { 0 , 1 } p ( ∣ x ∣ ) 都有 M ′ ( x , u ) = 1 \exists\text{多项式}p:\mathbb N\to\mathbb N\text{和图灵机}M\text{使得}\forall x\in\{0,1\}^*,x\in L\iff\forall u\in\{0,1\}^{p(|x|)}\text{都有}M'(x,u)=1 ∃多项式p:N→N和图灵机M使得∀x∈{0,1}∗,x∈L⟺∀u∈{0,1}p(∣x∣)都有M′(x,u)=1。∎
二、coNP完全性
归约:语言 L 1 L_1 L1可在多项式时间内归约到 L 2 L_2 L2,记作 L 1 ≤ p L 2 L_1\le_pL_2 L1≤pL2,如果存在多项式时间可计算的函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^*\to\{0,1\}^* f:{0,1}∗→{0,1}∗,满足 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L 1 ⟺ f ( x ) ∈ L 2 \forall x\in\{0,1\}^*,x\in L_1\iff f(x)\in L_2 ∀x∈{0,1}∗,x∈L1⟺f(x)∈L2。
如果 L 1 L_1 L1可在多项式时间内归约到 L 2 L_2 L2,那么 L 2 L_2 L2有多项式时间的算法后 L 1 L_1 L1也就有多项式时间的算法了。换言之, L 1 L_1 L1可以“依赖” L 2 L_2 L2解决。这表明 L 2 L_2 L2的难度“大于等于” L 1 L_1 L1。
完全性:设有语言类 C C C,语言 L ∈ C L\in C L∈C,若 ∀ L ′ ∈ C \forall L'\in C ∀L′∈C, L ′ ≤ p L L'\le_p L L′≤pL,则相对于多项式时间的归约来说 L L L对 C C C是完全的。
例如所有 N P \bold{NP} NP中的问题可归约到 SAT \text{SAT} SAT,所以 SAT \text{SAT} SAT对于语言类 N P \bold{NP} NP是完全的,即 SAT \text{SAT} SAT是 N P \bold{NP} NP完全的。
引理1 L 1 ≤ p L 2 ⟹ L 1 ‾ ≤ p L 2 ‾ L_1\le_p L_2\implies \overline{L_1}\le_p\overline{L_2} L1≤pL2⟹L1≤pL2。
证明: L 1 ≤ p L 2 L_1\le_p L_2 L1≤pL2表明存在多项式时间可计算的函数 f f f使得 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L 1 ⟺ f ( x ) ∈ L 2 \forall x\in\{0,1\}^*,x\in L_1\iff f(x)\in L_2 ∀x∈{0,1}∗,x∈L1⟺f(x)∈L2。这等价于 ∀ x ∈ { 0 , 1 } ∗ , x ∈ L 1 ‾ ⟺ f ( x ) ∈ L 2 ‾ \forall x\in\{0,1\}^*,x\in\overline{L_1}\iff f(x)\in\overline{L_2} ∀x∈{0,1}∗,x∈L1⟺f(x)∈L2。于是 f f f也是从 L 1 ‾ \overline{L_1} L1到 L 2 ‾ \overline{L_2} L2的多项式时间规约函数,因此我们得到 L 1 ‾ ≤ p L 2 ‾ \overline{L_1}\le_p\overline{L_2} L1≤pL2。∎
推论 L 1 ≤ p L 2 ⟺ L 1 ‾ ≤ p L 2 ‾ L_1\le_p L_2\iff \overline{L_1}\le_p\overline{L_2} L1≤pL2⟺L1≤pL2。
引理2 对于多项式时间归约来说, L L L是 N P \bold{NP} NP完全的 ⟺ \iff ⟺ L ‾ \overline{L} L是 c o N P \bold{coNP} coNP完全的。
证明: L L L是 N P \bold{NP} NP完全的 ⟺ \iff ⟺ ∀ L ′ ∈ N P \forall L'\in\bold{NP} ∀L′∈NP, L ′ ≤ p L L'\le_p L L′≤pL ⟺ 引理 1 \overset{引理1}{\iff} ⟺引理1 ∀ L ′ ∈ N P \forall L'\in\bold{NP} ∀L′∈NP, L ′ ‾ ≤ p L ‾ \overline{L'}\le_p\overline{L} L′≤pL ⟺ \iff ⟺ ∀ L ∗ ∈ c o N P \forall L^*\in\bold{coNP} ∀L∗∈coNP, L ∗ ≤ p L ‾ L^*\le_p\overline{L} L∗≤pL ⟺ \iff ⟺ L ‾ \overline L L是 c o N P \bold{coNP} coNP完全的。∎
因为 SAT \text{SAT} SAT是 N P \bold{NP} NP完全的,所以 SAT ‾ \overline{\text{SAT}} SAT是 c o N P \bold{coNP} coNP完全的。由此我们还可以得到
定理2 TAUTOLOGY = { ϕ ∣ ϕ 是永真式 } \text{TAUTOLOGY}=\{\phi|\phi\text{是永真式}\} TAUTOLOGY={ϕ∣ϕ是永真式}是 c o N P \bold{coNP} coNP完全的。
证明提要:因为 ϕ \phi ϕ是永真式 ⟺ \iff ⟺ ¬ ϕ \neg\phi ¬ϕ是永假式,所以 TAUTOLOGY \text{TAUTOLOGY} TAUTOLOGY和 SAT ‾ \overline{\text{SAT}} SAT之间存在很简单的规约。∎
三、coNP和其他复杂性类的关系
类 P \bold P P:语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗属于 P ⟺ \bold{P}\iff P⟺存在确定型图灵机 M M M,使得 M M M能在多项式时间内判断任意字符串 x ∈ { 0 , 1 } ∗ x\in\{0,1\}^* x∈{0,1}∗属于 L L L。
引理3(类 P \bold{P} P对补运算的封闭性) 语言 L ∈ P ⟹ L ‾ ∈ P L\in\bold P\implies\overline L\in\bold{P} L∈P⟹L∈P。
证明:对于 L ∈ P L\in\bold P L∈P,设 M M M是能够在多项式时间内判定某字符串属于 L L L的图灵机,则 ∀ x ∈ { 0 , 1 } ∗ , M ( x ) = 1 ⟺ x ∈ L \forall x\in\{0,1\}^*,M(x)=1\iff x\in L ∀x∈{0,1}∗,M(x)=1⟺x∈L。那么令 M ′ ( x ) = ¬ M ( x ) M'(x)=\neg M(x) M′(x)=¬M(x),有 M ′ ( x ) = 1 ⟺ x ∈ L ‾ M'(x)=1\iff x\in\overline L M′(x)=1⟺x∈L。所以 M ′ M' M′是能够在多项式时间内判定某字符串属于 L ‾ \overline L L的图灵机(只需要在 M M M的基础上进行一次非运算),故 L ‾ ∈ P \overline L\in\bold P L∈P。∎
为什么 N P \bold{NP} NP对补运算不封闭呢?你可能认为,对于判定某个 N P \bold{NP} NP问题的非确定型图灵机 M M M,只要对 M M M的结果取反就能判定这个问题的补集了。但是,对结果取反是只有确定型图灵机才能干的事情,在非确定性图灵机中引入这个操作会违背它的定义。所以证明引理3所用的思想不能用于 N P \bold{NP} NP。
定理3 P ⊆ N P ∩ c o N P \bold P\subseteq\bold{NP}\cap\bold{coNP} P⊆NP∩coNP。
证明:
P ⊆ N P \bold P\subseteq\bold{NP} P⊆NP:设语言 L ∈ P L\in\bold P L∈P, M M M是在多项式时间内判定 L L L的图灵机。则在 N P \bold{NP} NP的第一个定义中,令 u u u为空串,则 M M M也可以作为 L L L的验证器。故 L ∈ N P L\in\bold{NP} L∈NP。
P ⊆ c o N P \bold{P}\subseteq\bold{coNP} P⊆coNP: ∀ L ∈ P \forall L\in\bold P ∀L∈P, L ‾ ∈ P \overline L\in\bold P L∈P(引理3),则 L ‾ ∈ N P \overline L\in\bold{NP} L∈NP(因为 P ⊆ N P \bold P\subseteq\bold{NP} P⊆NP),故 L ∈ c o N P L\in\bold{coNP} L∈coNP(根据 c o N P \bold{coNP} coNP的定义)。∎
定理4 P = N P ⟹ N P = c o N P \bold P=\bold{NP}\implies\bold{NP}=\bold{coNP} P=NP⟹NP=coNP。
证明:
∵ ∀ L ∈ c o N P , L ‾ ∈ N P \because\forall L\in\bold{coNP},\overline L\in\bold{NP} ∵∀L∈coNP,L∈NP,且 P = N P \bold{P}=\bold{NP} P=NP,
∴ ∀ L ∈ c o N P , L ‾ ∈ P \therefore\forall L\in\bold{coNP},\overline L\in\bold P ∴∀L∈coNP,L∈P。
∵ L ‾ ∈ P ⟹ L ∈ P \because\overline L\in\bold P\implies L\in\bold P ∵L∈P⟹L∈P,
∴ ∀ L ∈ c o N P , L ∈ P \therefore\forall L\in\bold{coNP},L\in\bold P ∴∀L∈coNP,L∈P。
∴ c o N P ⊆ P \therefore\bold{coNP}\subseteq\bold P ∴coNP⊆P。
又 ∵ P ⊆ c o N P \because\bold P\subseteq\bold{coNP} ∵P⊆coNP,
∴ P = c o N P = N P \therefore\bold P=\bold{coNP}=\bold{NP} ∴P=coNP=NP。∎
推论 N P ≠ c o N P ⟹ P ≠ N P \bold{NP}\ne\bold{coNP}\implies\bold P\ne\bold{NP} NP=coNP⟹P=NP。
那么 N P = c o N P \bold{NP}=\bold{coNP} NP=coNP能不能推出 P = N P \bold P=\bold{NP} P=NP呢?目前来说并不能,因为 P ⫋ N P = c o N P \bold P\subsetneqq\bold{NP}=\bold{coNP} P⫋NP=coNP也是可能的。