【计算复杂性理论】证明复杂性(二):归结(Resolution)与扩展归结(Extended Resolution)证明系统

往期文章:

归结证明系统是一种非常简单、非常优雅的证明系统,它在SAT求解和自动定理证明中有广泛应用。

在这篇文章中,我们规定输入是子句集,也就是一些子句的集合,它们和合取范式是等价的。合取范式的子句组成的集合就是子句集;子句集可满足等价于对应的合取范式可满足。

一、基础定义

为了方便表示文字 l l l及其否定,我们定义 l ε = { l , ε = 1 ¬ l , ε = 0 l^{\varepsilon}=\begin{cases}l,&\varepsilon=1\\\neg l,&\varepsilon=0\end{cases} lε={ l,¬l,ε=1ε=0。当 l l l被赋值为 ε \varepsilon ε时, l ε = 1 l^\varepsilon=1 lε=1

在演算式证明系统中,证明是由证明步骤(proof steps)(也叫证明行,proof lines)组成的。证明的每个步骤可能是一个公式,一系列公式或具有某种形式的公式,具体取决于演算的规则。定义 k ( π ) \mathbf{k}(\pi) k(π)为证明 π \pi π的步骤数(行数);证明系统 P P P中永真式 α \alpha α最短证明的步骤数记作 k P ( α ) \mathbf{k}_P(\alpha) kP(α)

二、归结证明系统

归结证明系统的每一行是一个子句(即简单析取式) C : l 1 ∨ l 2 ∨ ⋯ ∨ l w C:l_1\lor l_2\lor\cdots\lor l_w C:l1l2lw,常写作集合 { l 1 , l 2 , ⋯   , l w } \{l_1,l_2,\cdots,l_w\} { l1,l2,,lw}。子句 C ∪ { l } C\cup\{l\} C{ l}简写作 C , l C,l C,l。归结证明系统只有一条规则,即归结规则: C , l D , ¬ l ‾ C ∪ D \underline{C,l\quad D,\neg l}\\C\cup D C,lD,¬lCD比如你有两个子句 a ∨ b ∨ l a\lor b\lor l abl b ∨ ¬ l ∨ c b\lor\neg l\lor c b¬lc,那么你就可以得到子句 a ∨ b ∨ c a\lor b\lor c abc

归结规则是可靠的,因为 ( C ∨ l ) ∧ ( D ∨ ¬ l ) ⊨ C ∨ D (C\lor l)\land(D\lor\neg l)\models C\lor D (Cl)(D¬l)CD。可以这么理解:若 C ∨ l C\lor l Cl成立,则 C ∨ D ∨ l C\lor D\lor l CDl成立;若 D ∨ ¬ l D\lor\neg l D¬l成立,则 C ∨ D ∨ ¬ l C\lor D\lor\neg l CD¬l成立;讲这两个推论结合得到 C ∨ D C\lor D CD成立。

归结是一个反驳证明系统(refutation proof system):它不是用来证明一个子句是永真式的,而是证明一个子句不可满足。归结从输入的几个子句开始,不断应用归结规则推出新的子句,最后得到空子句 ∅ \emptyset 就说明输入的合取范式是不可满足的(合取范式就是一些子句的合取)。

定义1 C \mathcal{C} C是一个子句集。 C \mathcal{C} C的一个归结反驳是一系列子句 D 1 , D 2 , ⋯   , D k D_1,D_2,\cdots,D_k D1,D2,,Dk,满足:

  • 对于任意 i ≤ k i\le k ik D i D_i Di要么属于 C \mathcal{C} C,要么是从 D u D_u Du D v D_v Dv通过归结规则推出来的;
  • D k = ∅ D_k=\emptyset Dk=

此时,归结反驳的步数就是 k k k

下面我们来证明归结证明系统的完备性(completeness),即每个不可满足的子句集都有一个归结反驳。

定理2 C \mathcal{C} C是一个不可满足的子句集(即合取范式的各个子句组成的集合),则存在对 C \mathcal{C} C的一个归结反驳。

证明:设 C \mathcal{C} C涉及 n n n个变量,令 p p p是其中任意一个变量。我们可以把 C \mathcal{C} C分成四部分:

  • C 0 , 0 = { D ∈ C ∣ D 不含 p 或 ¬ p } \mathcal{C}_{0,0}=\{D\in \mathcal{C}|D\text{不含}p\text{或}\neg p\} C0,0={ DCD不含p¬p}
  • C 1 , 0 = { D ∈ C ∣ D 含 p 但不含 ¬ p } \mathcal{C}_{1,0}=\{D\in \mathcal{C}|D\text{含}p\text{但不含}\neg p\} C1,0={ DCDp但不含¬p}
  • C 0 , 1 = { D ∈ C ∣ D 不含 p 但含 ¬ p } \mathcal{C}_{0,1}=\{D\in \mathcal{C}|D\text{不含}p\text{但含}\neg p\} C0,1={ DCD不含p但含¬p}
  • C 1 , 1 = { D ∈ C ∣ D 含 p 和 ¬ p } \mathcal{C}_{1,1}=\{D\in \mathcal{C}|D\text{含}p\text{和}\neg p\} C1,1={ DCDp¬p}(这种情况不用考虑,因为 p ∨ ¬ p ⇔ 1 p\lor\neg p\Leftrightarrow 1 p¬p1自动满足)

R ( u , v ) R(u,v) R(u,v)代表 u u u v v v归结所得的子句。令 H = { R ( u , v ) ∣ u ∈ C 1 , 0 , v ∈ C 0 , 1 } \mathcal{H}=\{R(u,v)|u\in\mathcal{C}_{1,0},v\in\mathcal{C}_{0,1}\} H={ R(u,v)uC1,0,vC0,1},也就是只含 p p p和只含 ¬ p \neg p ¬p的子句归结所得的所有子句的集合。那么 C 0 , 0 ∪ H \mathcal{C}_{0,0}\cup \mathcal{H} C0,0H是不可满足的。这是因为,倘若一个赋值满足了 C 0 , 0 ∪ H \mathcal{C}_{0,0}\cup \mathcal{H} C0,0H中的每个子句,那么它就会满足 C 0 , 1 \mathcal{C}_{0,1} C0,1的全部子句或者 C 1 , 0 \mathcal{C}_{1,0} C1,0的全部子句。否则的话,如果它不满足 C 0 , 1 \mathcal{C}_{0,1} C0,1的子句 u ∨ ¬ p u\lor\neg p u¬p也不满足 C 1 , 0 \mathcal{C}_{1,0} C1,0的子句 v ∨ p v\lor p vp,那么它也不会满足 R ( u , v ) = u ∨ v R(u,v)=u\lor v R(u,v)=uv。所以说 C 0 , 1 \mathcal{C}_{0,1} C0,1 C 1 , 0 \mathcal{C}_{1,0} C1,0中至少有一个是全部满足的。此时,我们在这个赋值的基础上设置 p p p的值,使得:如果 C 0 , 1 \mathcal{C}_{0,1} C0,1全部满足,则令 p = 1 p=1 p=1使得 C 1 , 0 \mathcal{C}_{1,0} C1,0也全部满足;如果 C 1 , 0 \mathcal{C}_{1,0} C1,0全部满足,则令 p = 0 p=0 p=0使得 C 0 , 1 \mathcal{C}_{0,1} C0,1也全部满足。这样, C 0 , 0 \mathcal{C}_{0,0} C0,0 C 0 , 1 \mathcal{C}_{0,1} C0,1 C 1 , 0 \mathcal{C}_{1,0} C1,0都全部满足,使得 C \mathcal{C} C全部满足,这与 C \mathcal{C} C不可满足矛盾。因此 C 0 , 0 ∪ H \mathcal{C}_{0,0}\cup \mathcal{H} C0,0H是不可满足的。

C 0 , 0 ∪ H \mathcal{C}_{0,0}\cup \mathcal{H} C0,0H的每个子句都是从 C \mathcal{C} C中直接或应用一次归结得到的,它相比 C \mathcal{C} C少了一个变量。重复进行消去变量的过程,总能消去所有变量并得到空子句 ∅ \emptyset 。这样我们就证明了归结的完备性。

三、宽度和大小

一个子句 D D D的大小, ∣ D ∣ |D| D,也被称为子句 D D D的宽度(width),记作 w ( D ) \mathbf{w}(D) w(D),它也就是 D D D中文字的个数。对于子句集 C \mathcal{C} C,定义其宽度 w ( C ) = max ⁡ D ∈ C w ( D ) \mathbf{w}(C)=\max\limits_{D\in\mathcal{C}}\mathbf{w}(D) w(C)=DCmaxw(D),即其中宽度最大的子句的宽度。一个归结证明 π \pi π的宽度 w ( π ) \mathbf{w}(\pi) w(π)定义为 π \pi π中出现的宽度最大的子句的宽度。定义 w R ( C ) \mathbf{w}_R(\mathcal{C}) wR(C)为子句集 C \mathcal{C} C宽度最小的证明的宽度,即 w R ( C ) = min ⁡ π w ( π ) \mathbf{w}_R(\mathcal{C})=\min\limits_{\pi}\mathbf{w}(\pi) wR(C)=πminw(π)

为什么要研究证明的宽度呢?这是因为,对于一个宽度为 w w w的证明,其行数(即步骤数)是有上界的:它不会超过所有宽度至多为 w w w的子句的个数。如果我们要求子句中 p p p ¬ p \neg p ¬p不得同时出现,则宽度为 w w w的子句的个数为 2 w C n w 2^w C_{n}^{w} 2wCnw,其中 n n n是变量个数。我们接下来将会看到,一个短的归结证明可以被转化为一个窄的归结证明(即宽度较小的归结证明)。如果我们能证明某个子句集的证明宽度有下界,那么就能证明其证明的行数也有下界。

我们称一个部分赋值为限制(restriction)。它是对某些变量的赋值。对于文字 l l l,布尔值 ε ∈ { 0 , 1 } \varepsilon\in\{0,1\} ε{ 0,1}和子句 C C C,我们定义 C C C在赋值 l = ε l=\varepsilon l=ε限制下的结果为子句 C ↾ l = ε : = { C , 若 l 和 ¬ l 都没有在 C 中出现 1 , 若 l 在 C 中出现 C ∖ { l ¬ ε } , 若 l ¬ ε 在 C 中出现(这就是 C 和 l ε 归结的结果 C\upharpoonright l=\varepsilon:=\begin{cases} C,&\text{若}l\text{和}\neg l\text{都没有在}C\text{中出现}\\ 1,&\text{若}l\text{在}C\text{中出现}\\ C\setminus\{l^{\neg\varepsilon}\},&\text{若}l^{\neg\varepsilon}\text{在}C\text{中出现(这就是}C\text{和}l^\varepsilon\text{归结的结果} \end{cases} Cl=ε:= C,1,C{ l¬ε},l¬l都没有在C中出现lC中出现l¬εC中出现(这就是Clε归结的结果比如,子句 C = a ∨ b ∨ c C=a\lor b\lor c C=abc在赋值 a = 1 a=1 a=1下变成 1 1 1(因为它直接被满足了),在赋值 a = 0 a=0 a=0下变成 b ∨ c b\lor c bc,在赋值 d = 0 d=0 d=0下不变。

对于子句集而言,定义 C ↾ l = ε : = { C ↾ l = ε ∣ C ∈ C } \mathcal{C}\upharpoonright l=\varepsilon:=\{C\upharpoonright l=\varepsilon|C\in\mathcal{C}\} Cl=ε:={ Cl=εCC}(也就是把每个子句应用赋值所得到的结果)。

定义 w R ( C ⊢ A ) \mathbf{w}_R(\mathcal{C}\vdash A) wR(CA)是从子句集 C \mathcal{C} C归结得到子句 A A A的归结证明的最小宽度;定义 C ⊢ k A \mathcal{C}\vdash_k A CkA代表 w R ( C ⊢ A ) ≤ k \mathbf{w}_R(\mathcal{C}\vdash A)\le k wR(CA)k

在下面的讨论中,我们允许归结证明系统使用除了归结规则外的另一条规则——弱化规则(weakening rule):设 Z 1 , Z 2 Z_1,Z_2 Z1,Z2是两个字句,若 Z 1 ⊆ Z 2 Z_1\subseteq Z_2 Z1Z2,则 Z 1 ⊢ Z 2 Z_1\vdash Z_2 Z1Z2。这条规则显然是可靠的。

引理3[2] C ↾ p = 0 ⊢ k A \mathcal{C}\upharpoonright p=0\vdash_k A Cp=0kA(即子句集 C \mathcal{C} C p = 0 p=0 p=0的限制下可以经历宽度至多为 k k k的归结过程得到 A A A),则 C ⊢ k + 1 A ∪ { p } \mathcal{C}\vdash_{k+1} A\cup\{p\} Ck+1A{ p}。若 C ↾ p = 1 ⊢ k A \mathcal{C}\upharpoonright p=1\vdash_k A Cp=1kA,则 C ⊢ k + 1 A ∪ { ¬ p } \mathcal{C}\vdash_{k+1} A\cup\{\neg p\} Ck+1A{ ¬p}

证明:只需证明第一句话,因为把第一句话中的 p p p换成 ¬ p \neg p ¬p就得到了第二句话。

假设 π = D 1 , D 2 , ⋯   , D t \pi=D_1,D_2,\cdots,D_t π=D1,D2,,Dt是一个从 C ↾ p = 0 \mathcal{C}\upharpoonright p=0 Cp=0推出 A A A的宽度至多为 k k k的归结过程。定义 E i = D i ∪ { p } , ∀ i ≤ t E_i=D_i\cup\{p\},\forall i\le t Ei=Di{ p},it。我们将要证明 π ′ = E 1 , E 2 , ⋯   , E t \pi'=E_1,E_2,\cdots,E_t π=E1,E2,,Et本质上是从 C C C推出 A ∪ { p } A\cup\{p\} A{ p}的宽度至多为 k + 1 k+1 k+1的归结过程。

假设 D i = C ↾ p = 0 D_i=C\upharpoonright p=0 Di=Cp=0,对于某个 C ∈ C C\in\mathcal{C} CC。考虑下列三种情况:

  • ¬ p ∈ C \neg p\in C ¬pC:则 D i = 1 D_i=1 Di=1 E i = p E_i=p Ei=p,则 E i E_i Ei可以由 D i D_i Di应用弱化规则得到。
  • p ∈ C p\in C pC ¬ p ∉ C \neg p\notin C ¬p/C:那么 D i = C ∖ { p } D_i=C\setminus\{p\} Di=C{ p} E i = C E_i=C Ei=C,所以 E i E_i Ei直接可以由原来就有的 C C C得到。
  • p ∉ C p\notin C p/C ¬ p ∉ C \neg p\notin C ¬p/C:那么 D i = C D_i=C Di=C E i = C ∪ { p } E_i=C\cup\{p\} Ei=C{ p},注意 a ⊢ a ∨ b a\vdash a\lor b aab一定成立,所以 E i E_i Ei可以由 D i D_i Di应用弱化规则推出。

现在考虑 D i D_i Di U ↾ p = 0 U\upharpoonright p=0 Up=0 V ↾ p = 0 V\upharpoonright p=0 Vp=0归结的结果。设 D i = [ ( U ↾ p = 0 ) ∖ { q } ] ∪ [ ( V ↾ p = 0 ) ∖ { ¬ q } ] D_i=[(U\upharpoonright p=0)\setminus\{q\}]\cup [(V\upharpoonright p=0)\setminus\{\neg q\}] Di=[(Up=0){ q}][(Vp=0){ ¬q}],则 π ′ \pi' π U U U V V V对应的子句 U ′ U' U V ′ V' V U U U V V V相比至多只多出一个文字 p p p,而 E i E_i Ei只比 D i D_i Di至多多出一个文字 p p p,所以 E i E_i Ei可以由 U ′ U' U V ′ V' V归结得到。

假设 D i D_i Di是由弱化规则得到的,那么 E i E_i Ei显然也可以从弱化规则得到。这样我们就证明了 π ′ \pi' π是从 C C C推出 A ∪ { p } A\cup\{p\} A{ p}的宽度至多为 k + 1 k+1 k+1的归结过程。

对于引理3,我们举一个例子来理解:设 C = { a ∨ b ∨ c , ¬ a ∨ b ∨ p , a ∨ ¬ c ∨ p } \mathcal{C}=\{a\lor b\lor c,\neg a\lor b\lor p,a\lor\neg c\lor p\} C={ abc,¬abp,a¬cp}。在 C \mathcal{C} C中令 p = 0 p=0 p=0,得到 C ↾ p = 0 = { a ∨ b ∨ c , ¬ a ∨ b , a ∨ ¬ c } C\upharpoonright p=0=\{a\lor b\lor c,\neg a\lor b,a\lor\neg c\} Cp=0={ abc,¬ab,a¬c}。推出 a ∨ b a\lor b ab的证明 π \pi π如下: a ∨ b ∨ c a\lor b\lor c abc ¬ a ∨ b \neg a\lor b ¬ab归结得到 b ∨ c b\lor c bc,再和 a ∨ ¬ c a\lor\neg c a¬c归结得到 a ∨ b a\lor b ab π \pi π的宽度为 3 3 3。根据引理3的证明过程,给 π \pi π的每个子句并上一个 { p } \{p\} { p},得到: a ∨ b ∨ c ∨ p , ¬ a ∨ b ∨ p , b ∨ c ∨ p , a ∨ ¬ c ∨ p , a ∨ b ∨ p a\lor b\lor c\lor p,\neg a\lor b\lor p,b\lor c\lor p,a\lor\neg c\lor p,a\lor b\lor p abcp,¬abp,bcp,a¬cp,abp。这样就说明了 C ⊢ 4 a ∨ b ∨ p \mathcal{C}\vdash_4 a\lor b\lor p C4abp

引理4[2] 对于 ε ∈ { 0 , 1 } \varepsilon\in\{0,1\} ε{ 0,1},设 C ↾ p = ε ⊢ k − 1 ∅ \mathcal{C}\upharpoonright p=\varepsilon\vdash_{k-1}\emptyset Cp=εk1,且 C ↾ p = ¬ ε ⊢ k ∅ \mathcal{C}\upharpoonright p=\neg\varepsilon\vdash_k \emptyset Cp=¬εk。则 w R ( C ⊢ ∅ ) ≤ max ⁡ ( k , w ( C ) ) \mathbf{w}_R(\mathcal{C}\vdash\emptyset)\le\max(k,\mathbf{w}(\mathcal{C})) wR(C)max(k,w(C))

证明:根据引理3和第一条假设,我们有 C ⊢ k { p ¬ ε } C\vdash_k\{p^{\neg\varepsilon}\} Ck{ p¬ε}也就是说, C \mathcal{C} C p = ε p=\varepsilon p=ε的情况下是不可满足的,所以我们知道 p = ¬ ε p=\neg\varepsilon p=¬ε成立,这对应子句 p ¬ ε p^{\neg\varepsilon} p¬ε再把子句 { p ¬ ε } \{p^{\neg\varepsilon}\} { p¬ε} C \mathcal{C} C中每个包含 p ε p^\varepsilon pε的子句归结,得到 C ↾ p = ¬ ε \mathcal{C}\upharpoonright p=\neg\varepsilon Cp=¬ε。这个归结过程的宽度不超过 w ( C ) \mathbf{w}(\mathcal{C}) w(C)。这也就是说,每个 D ∈ C ↾ p = ¬ ε D\in\mathcal{C}\upharpoonright p=\neg\varepsilon DCp=¬ε都有一个从 C \mathcal{C} C出发的宽度不超过 max ⁡ ( k , w ( C ) ) \max(k,\mathbf{w}(\mathcal{C})) max(k,w(C))的归结推导过程。再结合 C ↾ p = ¬ ε ⊢ k ∅ \mathcal{C}\upharpoonright p=\neg\varepsilon\vdash_k \emptyset Cp=¬εk,我们就知道从 C \mathcal{C} C推出矛盾有一个宽度不大于 max ⁡ ( k , w ( C ) ) \max(k,\mathbf{w}(\mathcal{C})) max(k,w(C))的归结推导过程。

定理5(Ben-Sasson and Wigderson[2]) 设 C \mathcal{C} C是一个不可满足的子句集,它涉及到 n n n个变量。则它的任何(含弱化规则的)归结证明的行数至少为 2 Ω ( [ w R ( C ⊢ ∅ ) − w ( C ) ] 2 n ) \LARGE{ {2}^{\Omega\left(\frac{ {[\mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})]}^2}{n}\right)}} 2Ω(n[wR(C)w(C)]2)证明:设 π \pi π C \mathcal{C} C的一个(含弱化规则的)归结证明, k k k π \pi π中子句个数(即行数/步骤数)。我们将要证明 w R ( C ⊢ ∅ ) ≤ w ( C ) + O ( n log ⁡ k ) \mathbf{w}_R(C\vdash\emptyset)\le\mathbf{w}(\mathcal{C})+O(\sqrt{n\log k}) wR(C)w(C)+O(nlogk )

假设 n > 0 n>0 n>0 n = 0 n=0 n=0的话就没什么好证的了)。令 h h h是一个参数,我们先不规定它的值。说 π \pi π中的一个子句 C C C是宽的,就是说 w ( C ) > h \mathbf{w}(C)>h w(C)>h。令 s = 1 1 − h 2 n s=\cfrac{1}{1-\frac{h}{2n}} s=12nh1。令 r r r π \pi π中宽子句的个数。通过对 n n n t t t的双重归纳法,我们将要证明:如果 r < s t r<s^t r<st,则 w R ( C ⊢ ∅ ) ≤ w ( C ) + h + t \mathbf{w}_R(\mathcal{C}\vdash\emptyset)\le\mathbf{w}(\mathcal{C})+h+t wR(C)w(C)+h+t

  • t = 0 t=0 t=0时, r < s 0 = 1 r<s^0=1 r<s0=1,即没有宽子句。那么 w R ( C ⊢ ∅ ) ≤ h ≤ w ( C ) + h \mathbf{w}_R(\mathcal{C}\vdash\emptyset)\le h\le\mathbf{w}(\mathcal{C})+h wR(C)hw(C)+h

  • 现在假设 t > 0 t>0 t>0 r r r个宽子句中每个宽子句至少含有 h h h个文字,所以共含有至少 r h rh rh个文字。而文字总共有 2 n 2n 2n种,因此有某个文字 l l l至少出现了 h 2 n r \cfrac{h}{2n}r 2nhr次。下面,

    • 限制 l = 1 l=1 l=1,则含有 l l l的子句都变成 1 1 1了,此时剩下的宽子句个数至多为 r − h 2 n r = ( 1 − h 2 n ) r = r s r-\cfrac{h}{2n}r=\left(1-\cfrac{h}{2n}\right)r=\cfrac{r}{s} r2nhr=(12nh)r=sr。注意 r < s t r<s^t r<st,所以剩下宽子句的个数至多为 s t − 1 s^{t-1} st1。也就是说, t − 1 t-1 t1时的归纳假设的条件是满足的,根据 t − 1 t-1 t1时的归纳假设, w R ( C ↾ l = 1 ⊢ ∅ ) ≤ w ( C ↾ l = 1 ) + h + t − 1 \mathbf{w}_R(C\upharpoonright l=1\vdash\emptyset)\le\mathbf{w}(C\upharpoonright l=1)+h+t-1 wR(Cl=1)w(Cl=1)+h+t1
    • 限制 l = 0 l=0 l=0,则宽子句的个数上限仍然为 s t s^t st,但是变量减少了一个。根据 n − 1 n-1 n1时的归纳假设, w R ( C ↾ l = 0 ⊢ ∅ ) ≤ w ( C ↾ l = 0 ) + h + t \mathbf{w}_R(C\upharpoonright l=0\vdash\emptyset)\le\mathbf{w}(C\upharpoonright l=0)+h+t wR(Cl=0)w(Cl=0)+h+t

结合上面得到的两个结果,应用引理4,得到 w R ( C ⊢ ∅ ) ≤ w ( C ) + h + t \mathbf{w}_R(C\vdash\emptyset)\le\mathbf{w}(C)+h+t wR(C)w(C)+h+t。现在令 h = ⌈ 2 n log ⁡ k ⌉ h=\lceil\sqrt{2n\log k}\rceil h=2nlogk t = log ⁡ s k t=\log_s k t=logsk,那么 r < s t = k r<s^t=k r<st=k一定是满足的。这样我们就证明了 w R ( C ⊢ ∅ ) ≤ w ( C ) + O ( n log ⁡ k ) \mathbf{w}_R(C\vdash\emptyset)\le\mathbf{w}(C)+O(\sqrt{n\log k}) wR(C)w(C)+O(nlogk )

对这个式子进行变形: w R ( C ⊢ ∅ ) − w ( C ) ≤ O ( n log ⁡ k ) [ w R ( C ⊢ ∅ ) − w ( C ) ] 2 ≤ O ( n log ⁡ k ) [ w R ( C ⊢ ∅ ) − w ( C ) ] 2 n ≤ O ( log ⁡ k ) 2 Ω ( [ w R ( C ⊢ ∅ ) − w ( C ) ] 2 n ) ≤ O ( k ) k ≥ 2 Ω ( [ w R ( C ⊢ ∅ ) − w ( C ) ] 2 n ) \mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})\le O(\sqrt{n\log k})\\ {\left[\mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})\right]}^2\le O(n\log k)\\ \frac{ {\left[\mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})\right]}^2}{n}\le O(\log k)\\ \LARGE{2}^{\Omega\left(\frac{ {[\mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})]}^2}{n}\right)}\le O(k)\\ \LARGE{k\ge{2}^{\Omega\left(\frac{ {[\mathbf{w}_R(\mathcal{C}\vdash\emptyset)-\mathbf{w}(\mathcal{C})]}^2}{n}\right)}} wR(C)w(C)O(nlogk )[wR(C)w(C)]2O(nlogk)n[wR(C)w(C)]2O(logk)2Ω(n[wR(C)w(C)]2)O(k)k2Ω(n[wR(C)w(C)]2)定理5除了说明了证明行数有一个关于证明最小宽度的指数级下界以外,还说明了短证明一定可以转化为窄证明(因为 w R ( C ⊢ ∅ ) ≤ w ( C ) + O ( n log ⁡ k ) \mathbf{w}_R(C\vdash\emptyset)\le\mathbf{w}(\mathcal{C})+O(\sqrt{n\log k}) wR(C)w(C)+O(nlogk ))。不过是否能转化为又窄又短的证明还是一个开放问题。

四、扩展归结证明系统

扩展归结证明系统是一种非常强的证明系统,目前我们没有发现它的指数级下界。它的特点是允许引入新变量,从而简化证明的过程。

扩展归结(extended resolution, ER)允许我们按照下面的方式对初始子句集进行扩充:

  1. 选择两个文字 l 1 , l 2 l_1,l_2 l1,l2,引入新变量 q q q(称为扩展变量,extension variable),并将下列三个子句加入初始子句集: { ¬ l 1 , q } , { ¬ l 2 , q } , { l 1 , l 2 , ¬ q } \{\neg l_1,q\},\{\neg l_2,q\},\{l_1,l_2,\neg q\} { ¬l1,q},{ ¬l2,q},{ l1,l2,¬q}。这三个子句称为扩展公理(extension axioms)。如果扩展公理被满足,则一定有 q ≡ l 1 ∨ l 2 q\equiv l_1\lor l_2 ql1l2成立。
  2. 将1重复任意次,每次选取已经存在的文字作为 l 1 l_1 l1 l 2 l_2 l2,选取新变量作为 q q q(注意 q q q不能是已经存在的变量)。

子句集的一个扩展归结反驳(ER-refutation)就是用扩展归结对其不可满足性的一个证明。

命题6[1] 扩展归结是可靠的:用扩展归结可以反驳的子句集一定是不可满足的。

证明:若 b 1 , b 2 b_1,b_2 b1,b2 l 1 , l 2 l_1,l_2 l1,l2的赋值,那么只要令 q = b 1 ∨ b 2 q=b_1\lor b_2 q=b1b2就可以满足扩展公理。所以,如果 C \mathcal{C} C本来就是可满足的,那么加入扩展公理不会影响它的可满足性;如果它是不可满足的,那加入扩展公理后它仍然是不可满足的(因为这是增加了限制条件)。

定理7[1] C \mathcal{C} C是一个涉及 n n n个变量的初始子句集,且 w ( C ) ≤ w 0 \mathbf{w}(\mathcal{C})\le w_0 w(C)w0。设 π \pi π C \mathcal{C} C的一个扩展归结反驳,且 k ( π ) = k \mathbf{k}(\pi)=k k(π)=k(即 π \pi π的证明步数为 k k k), w ( π ) = w \mathbf{w}(\pi)=w w(π)=w。那么一定存在一个 C \mathcal{C} C的扩展归结反驳 σ \sigma σ,使得:

  • k ( σ ) = O ( k w ) \mathbf{k}(\sigma)=O(kw) k(σ)=O(kw)
  • w ( σ ) ≤ max ⁡ ( 3 , w 0 ) \mathbf{w}(\sigma)\le \max(3,w_0) w(σ)max(3,w0)

这也就是说,任何扩展归结证明都可以在长度没有增加变化的情况下转化为窄证明。

证明:我们构造 σ \sigma σ的方式就是把 π \pi π中宽度超过 3 3 3的非初始子句替换为宽度至多为 3 3 3的子句。设 π = D 1 , D 2 , ⋯   , D k \pi=D_1,D_2,\cdots,D_k π=D1,D2,,Dk,按下面的方法构造 σ \sigma σ:对于 π \pi π中的子句 D i ( 1 ≤ i ≤ k ) D_i(1\le i\le k) Di(1ik),我们通过归结得到它在 σ \sigma σ中的宽度不超过 3 3 3的等价子句 E i E_i Ei。具体过程如下:

  • D i ∈ C D_i\in\mathcal{C} DiC

    • w ( D i ) ≤ 3 \mathbf{w}(D_i)\le 3 w(Di)3,则直接令 E i = D i E_i=D_i Ei=Di然后加入 σ \sigma σ
    • w ( D i ) > 3 \mathbf{w}(D_i)>3 w(Di)>3,设 z = w ( D i ) z=\mathbf{w}(D_i) z=w(Di)并设 D i = l 1 ∨ l 2 ∨ ⋯ ∨ l z D_i=l_1\lor l_2\lor\cdots\lor l_z Di=l1l2lz,则引入 z − 3 z-3 z3个新变量 q 1 , q 2 , ⋯   , q z − 3 q_1,q_2,\cdots,q_{z-3} q1,q2,,qz3,使得 q 1 ≡ l 1 ∨ l 2 q_1\equiv l_1\lor l_2 q1l1l2 q 2 ≡ q 1 ∨ l 3 q_2\equiv q_1\lor l_3 q2q1l3 q 3 ≡ q 2 ∨ l 4 q_3\equiv q_2\lor l_4 q3q2l4,……, q z − 3 ≡ q z − 4 ∨ l z − 2 q_{z-3}\equiv q_{z-4}\lor l_{z-2} qz3qz4lz2,再把 D i D_i Di与各个新变量的扩展公理相归结,最终得到宽度为 3 3 3的子句 E i = q z − 3 ∨ l z − 1 ∨ l z E_i=q_{z-3}\lor l_{z-1}\lor l_z Ei=qz3lz1lz。把得到 E i E_i Ei的整个过程加入 σ \sigma σ中。
  • D i ∉ C D_i\notin\mathcal{C} Di/C,即 D i D_i Di是由 D u D_u Du D v D_v Dv归结得到的,那么我们从 E u E_u Eu E v E_v Ev得到 E i E_i Ei。假设 D u = F u ∪ { l } D_u=F_u\cup\{l\} Du=Fu{ l} D v = F v ∪ { ¬ l } D_v=F_v\cup\{\neg l\} Dv=Fv{ ¬l},那么 D u D_u Du D v D_v Dv通过消去文字 l l l归结到得到 D i = F u ∪ F v D_i=F_u\cup F_v Di=FuFv。但是 l l l不一定出现在 E u E_u Eu中, ¬ l \neg l ¬l不一定出现在 E v E_v Ev中,因为它们可能已经被带换掉了。注意,每个新变量都等价于初始变量的一个简单析取式,那么 D u D_u Du中含有 l l l意味着 E u E_u Eu中要么直接含有 l l l,要么有一个新变量 q q q,使得其对应的简单析取式中含有 l l l。在第二种情况下,设 E u = G u ∪ { q } E_u=G_u\cup\{q\} Eu=Gu{ q},如果 G u G_u Gu含有两个文字的话就引入一个新变量 r r r代表 G u G_u Gu,现在 E u = r ∨ q E_u=r\lor q Eu=rq,再和扩展公理 ¬ q ∨ s ∨ t \neg q\lor s\lor t ¬qst归结得到 r ∨ s ∨ t r\lor s\lor t rst,其中 q ≡ s ∨ t q\equiv s\lor t qst。下面,假设 s s s对应的简单析取式含有 l l l,并设 s ≡ ρ ∨ μ s\equiv\rho\lor\mu sρμ,引入新变量 ω ≡ r ∨ t \omega\equiv r\lor t ωrt,再和扩展公理 ¬ s ∨ ρ ∨ μ \neg s\lor\rho\lor\mu ¬sρμ归结得到 ω ∨ ρ ∨ μ \omega\lor\rho\lor\mu ωρμ。重复这个过程直到出现 l l l为止。处理 E v E_v Ev的方式同理。现在再把含 l l l和含 ¬ l \neg l ¬l的两个子句归结,注意如果其中一个子句的某个变量所对应的简单析取式包含于另一个子句中某个变量所对应的简单析取式,那么需要应用扩展公理将它们合并。如果归结的结果宽度为 4 4 4,则再引入一个新变量换掉其中的两个文字,得到 E i E_i Ei,其宽度不超过 3 3 3。把上面的一整个过程加入 σ \sigma σ中。

不论如何, E i E_i Ei D i D_i Di都是等价的,而且着 E i E_i Ei中的每个扩展变量都对应一个简单析取式。所以,生成 E i E_i Ei引入的扩展变量个数不超过 O ( w ( D i ) ) O(\mathbf{w}(D_i)) O(w(Di)),而引入新变量添加的字句个数为常数,所以 σ \sigma σ的行数不超过 O ( k w ) O(kw) O(kw)。我们构造 E i E_i Ei的过程保证了 w ( σ ) ≤ max ⁡ ( 3 , w 0 ) \mathbf{w}(\sigma)\le \max(3,w_0) w(σ)max(3,w0)

举个例子: C = { a ∨ b ∨ c , ¬ c ∨ d ∨ e , ¬ b ∨ e ∨ f } \mathcal{C}=\{a\lor b\lor c,\neg c\lor d\lor e,\neg b\lor e\lor f\} C={ abc,¬cde,¬bef} π \pi π的步骤如下:首先用 a ∨ b ∨ c , ¬ c ∨ d ∨ e a\lor b\lor c,\neg c\lor d\lor e abc,¬cde归结得到 a ∨ b ∨ d ∨ e a\lor b\lor d\lor e abde,再和 ¬ b ∨ e ∨ f \neg b\lor e\lor f ¬bef归结得到 a ∨ d ∨ e ∨ f a\lor d\lor e\lor f adef。因为 a ∨ b ∨ d ∨ e a\lor b\lor d\lor e abde宽度为 4 4 4,所以我们引入新变量 p ≡ a ∨ b p\equiv a\lor b pab,加入扩展公理 ¬ a ∨ p , ¬ b ∨ p , a ∨ b ∨ ¬ p \neg a\lor p,\neg b\lor p,a\lor b\lor\neg p ¬ap,¬bp,ab¬p。用 ¬ a ∨ p , ¬ b ∨ p \neg a\lor p,\neg b\lor p ¬ap,¬bp分别与 a ∨ b ∨ c a\lor b\lor c abc归结得到 p ∨ c p\lor c pc,再和 ¬ c ∨ d ∨ e \neg c\lor d\lor e ¬cde归结得到 p ∨ d ∨ e p\lor d\lor e pde,这和 a ∨ b ∨ d ∨ e a\lor b\lor d\lor e abde是等价的,但归结过程中不会出现宽度超过 3 3 3的子句。现在试图把 p ∨ d ∨ e p\lor d\lor e pde ¬ b ∨ e ∨ f \neg b\lor e\lor f ¬bef归结,但是前者不含 b b b,此时我们引入新变量 q ≡ d ∨ e q\equiv d\lor e qde并使前者变成 p ∨ q p\lor q pq,再和 p p p的扩展公理 ¬ p ∨ a ∨ b \neg p\lor a\lor b ¬pab归结得到 a ∨ b ∨ q a\lor b\lor q abq。但是 e e e包含于 q q q对应的简单析取式 { d , e } \{d,e\} { d,e},所以将 ¬ b ∨ e ∨ f \neg b\lor e\lor f ¬bef与扩展公理 ¬ e ∨ q \neg e\lor q ¬eq归结得到 ¬ b ∨ q ∨ f \neg b\lor q\lor f ¬bqf。再和 a ∨ b ∨ q a\lor b\lor q abq归结得到 a ∨ q ∨ f a\lor q\lor f aqf,它与 a ∨ d ∨ e ∨ f a\lor d\lor e\lor f adef是等价的。虽然这个例子的子句集不是不可满足的,但是可以大概说明引入新变量的作用。

参考文献

[1] Krajícek, Jan. “Proof complexity.” Mathematics and Computation (2019). 这是这篇文章主要的参考文献。这本书可在这里下载。
[2] Ben-Sasson, Eli and Avi Wigderson. “Short proofs are narrow-resolution made simple.” Proceedings. Fourteenth Annual IEEE Conference on Computational Complexity (Formerly: Structure in Complexity Theory Conference) (Cat.No.99CB36317) (1999).

猜你喜欢

转载自blog.csdn.net/qaqwqaqwq/article/details/131505112
今日推荐