§1–3:讲义 PDF p1–30(页脚 1–29);教材 §1.10 末(QBF,书 p33–34)、§1.15(归约,书 p43–44)、§1.16–1.17(书 p45–51,PDF p58–64)、§1.18 前半(书 p52–53,PDF p65–66) §4–6:讲义 PDF p31–45(页脚 30–44);教材 §1.17 定理 1.14(书 p51)、§1.18 末(书 p54–55)、§1.19(书 p55–58,PDF p68–71)

第 1 讲研究时间。本讲换一种资源:空间,即计算时要用多少格草稿纸。空间和时间最大的不同是可以重复使用:时间一去不复返,草稿纸却可以擦掉重写。这一点让空间复杂性呈现出与时间很不一样的面貌:

  • 非确定性对时间的帮助至今说不清(),对空间的帮助却很有限(Savitch:最多平方)。
  • 非确定型时间类是否对补封闭不知道(),非确定型空间类却是封闭的(Immerman-Szelepcsényi)。

本讲的整体逻辑如下:

部分要回答的问题核心结论
1. Space Bounded Computation空间怎么计量?和时间什么关系?只计工作带;格局图;;空间谱系
2. Logspace Reduction怎样比较 以内问题的难度?对数空间归约:输出很长,但每一位都能在对数空间算出
3. PSPACE Completeness 中最难的问题是什么? 是 -完全的;多项式空间 ≈ 双人博弈
4. Savitch Theorem非确定性能节省多少空间?,故
5. NL Completeness 的代表问题是什么?有向图可达性 是 -完全的
6. Immerman-Szelepcsényi 对补封闭吗?是:

贯穿全讲的工具是格局图:把”机器是否接受 “变成”图中从起点能否走到终点”。第 3、4、5、6 部分都是在这张图上做文章。

1. Space Bounded Computation

1.1 空间的计量:SPACE 与 NSPACE

先要规定”用了多少空间”怎么算。若把输入本身也算进去,任何算法至少用 格,就无法讨论”比输入还小的空间”。可是很多有意义的算法只需几个指针或计数器,例如数一数输入里有几个 。所以约定:输入带只读、不计入空间,只数工作带上用过的格子。

定义: 与

设 ,。

  • :存在常数 和判定 的图灵机,在每个长度为 的输入上,访问过的工作带格子(非空白)不超过 个。
  • :存在常数 和接受 的非确定图灵机,无论做出怎样的非确定选择,访问过的工作带格子都不超过 个。

通常要求 。理由是机器至少要能”指向”输入的任意一位,例如记住输入读写头的位置,这需要一个 位的计数器。比 更小的空间几乎做不了有意义的事。

与线性加速类似,空间也有压缩定理: 空间可以压缩到 (把若干格编码成一个符号)。所以 的定义中允许常数倍。

与时间可构造类似,空间函数也要求可构造:

定义:空间可构造函数

设 。

  1. 若存在图灵机在 空间内计算 ,称 空间可构造。
  2. 若存在图灵机在输入 上恰好使用 格工作带后停机,称 完全空间可构造。

两种定义等价(不同于时间的情形)。

空间可构造性的主要用途是圈地:先在工作带上标出 个格子作为”领地”,之后的模拟一旦要越界就停下,这相当于时间的”时钟”。

对非确定型机器,若 空间可构造,可以放宽要求:只需成功的计算路径不超过 空间,失败的路径可以越界甚至不停机。理由是可以先圈出 格,越界的路径直接判为失败。

1.2 格局与格局图

时间的核心对象是”一串格局”。空间的核心对象是所有可能格局组成的图,因为空间有限,格局的总数也就有限。

定义:格局(空间版)

运行中的图灵机 在输入 上的格局由以下部分组成:

  • 当前状态;
  • 工作带内容(研究空间时总可以假设只有一条工作带);
  • 所有读写头的位置,包括输入带读写头的位置。

起始格局记为 。约定只有唯一的接受格局 (例如接受前先把工作带擦干净、读写头归位)。

输入内容固定,不放进格局;但输入读写头的位置要记,它需要 位。

格局有多少个? 设 使用 格工作带,状态集 、字母表 都是常数大小。一个格局要记录:状态( 种)、工作带内容( 种)、工作带读写头位置( 种)、输入读写头位置( 种)。总数至多

每个格局可以用 位描述。

的约定在这里又起了作用:它让输入读写头位置带来的 倍被 吸收。

定义:格局图(configuration graph)

在输入 上的格局图 是有向图:顶点是 的所有格局,若格局 一步可以变成 ,就连一条边 。

于是: 接受 中存在从 到 的路径。

确定型机器每个格局至多一条出边,格局图是一条(可能带圈的)链;非确定型机器每个格局可以有两条出边。无论哪种,“是否接受”都变成了图的可达性问题,而格局图有 个顶点。

还有一个推论:若 空间的确定型机器停机,它至多运行 步,否则某个格局会重复出现,机器陷入死循环。所以总可以假设空间受限的机器都会停机:给它装一个能数到 的计数器即可,这个计数器只占 空间。

怎样判断”一步可达”? 后面的构造都要反复检查” 是不是一条边”,所以需要知道这一检查本身有多便宜。

引理:一步关系是局部可检查的

存在大小为 的合取范式 ,使对任意两个格局 : 给定 ,求值 可在 时间、 空间内完成; 本身也能在 空间内构造出来。

直观:一步计算只改动读写头所在的格子及其旁边。所以检查 ,只需把两个格局逐格比较:远离读写头的格子必须不变,读写头附近的格子必须按迁移函数变化。每一格的检查是一个常数大小的小公式, 个小公式合取起来就是 。逐格扫描时只要记住”正在比较第几格”,所以只需 空间。

1.3 空间与时间的关系

定理

设 空间可构造,则

证明

  • 第一个: 步内读写头至多走过 个格子。
  • 第二个:确定型机器是非确定型机器的特例。
  • 第三个:设 NDTM 在 空间内接受 。确定型机器先在 时间内写出格局图 (逐对检查 ),再用广度优先搜索判断 能否到达 。图有 个顶点,BFS 的时间是其多项式,仍为 。

时间与空间的直观对比:时间 至多用掉 格空间;空间 至多”撑得住” 步,因为不同的格局只有这么多。更精细的结果是:

定理(Hopcroft-Paul-Valiant, 1975)

即 步的计算总能用比 略少的空间完成。这是目前已知的 与 之间唯一的非平凡关系,证明见教材 §1.20。

1.4 空间复杂性类

定义:常用空间类

对数空间 的直观: 位恰好够存常数个指向输入的指针或不超过 的计数器。 就是”只用常数个指针和计数器扫描输入”能解决的问题。

的代表问题:可达性。

定义:

命题

。

证明

设 有 个顶点。从 出发,每一步非确定地猜当前顶点的一个出邻居并走过去,同时计数;走到 就接受,走满 步还没到就拒绝。任何时刻只需记住”当前顶点”和”已走步数”,都是 位。

关键在于空间可以重用:走过的路不必记住,到了新顶点就把旧顶点擦掉。若真有路径,某条猜测序列会恰好沿它走到 。

:比 更大。

命题(Games are harder than puzzles)

证明: 问题的每条计算路径只用多项式空间。确定型机器逐一枚举所有选择序列,每试完一条就擦掉重来,空间可以重复使用,所以总空间仍是多项式(时间却是指数的)。

这个包含关系的直观意义是”谜题比博弈容易”。数独、哈密尔顿回路这类谜题的答案很短,猜出来就能检查,属于 。围棋、象棋这类双人博弈要找的是必胜策略,它要应对对手的所有应招,可能根本写不成多项式长,只能靠遍历博弈树来判断;而遍历博弈树恰好只需多项式空间(第 3 部分)。

综合 §1.3 的定理(取 与 ),得到下面的包含链:

其中 来自 。

1.5 通用机与空间谱系定理

时间谱系定理的条件里有 因子,因为通用机模拟要多花 倍时间。模拟的空间开销则小得多:

定理(无空间开销的通用机)

存在通用图灵机,模拟空间 的机器 时,只用 空间,常数 只依赖于 。

通用机把 的所有工作带内容存在自己的一条工作带上,用特殊符号标出各读写头的位置,再用常数大小的额外区域记录当前状态等簿记信息。数据搬来搬去只花时间,不多占空间。

定理(空间谱系定理,Hartmanis-Stearns 1965)

若 空间可构造且 ,则

证明

与时间谱系定理相同,用对角线构造机器 :

  1. 在工作带上圈出 格(用到 空间可构造);
  2. 模拟 ,一旦模拟需要越出圈定区域就停机并输出 ;同时用一个计数器数步数,超过 步(说明 已陷入循环)也停机输出 ;
  3. 若模拟正常结束,输出 。

判定的语言 。若 由某台空间 的机器 判定,由于模拟只多常数倍空间且 ,取 的一个足够长的编码 , 能在 空间内模拟完 ,于是 ;另一方面 与 判定同一语言,,矛盾。

与时间版本相比,这里只要求 ,没有 因子,正是因为通用机的空间开销只是常数倍。由此 。

2. Logspace Reduction

2.1 为什么需要更弱的归约

§2.6(第 1 讲)用归约证明了停机问题不可判定:把问题 的实例变成问题 的实例,从而”若 好解,则 也好解”。一般形式是:

定义:m-归约

若可计算全函数 满足:对所有 ,,称 是 到 的 m-归约,记 。

读作” 不比 难”。用它比较复杂度时,归约本身必须比所研究的类更便宜,否则归约函数自己就能把问题解掉,比较就失去了意义。

例如用多项式时间归约(第 3 讲的 Karp 归约)比较 中的问题:任何 都能归约到任何非平凡的问题 。归约函数先自己把 解掉,答”是”就输出 中一个固定的元素,答”否”就输出 外一个固定的元素。这样一来, 中所有非平凡问题都”一样难”,什么信息也得不到。

要研究 、 以及 内部的结构,就需要计算能力更弱的归约:对数空间归约。我们还希望它保持类:若 归约到 且 ,则 。

2.2 隐式对数空间可计算函数

困难在于,归约函数的输出 往往是多项式长的,根本放不进对数空间。解决办法是不要求把输出整个写出来,只要求能算出输出的任意一位。

定义:隐式对数空间可计算(implicitly logspace computable)

函数 称为隐式对数空间可计算的,如果:

  1. 输出长度多项式有界:;
  2. “第 位是否存在”在对数空间可判定:;
  3. “第 位是否为 “在对数空间可判定:。

定义:对数空间归约

若存在隐式对数空间可计算的 m-归约 把 归约到 ,称 对数空间可归约到 ,记 。

由于输出长度多项式有界,下标 只需 位,所以”给定 算第 位”确实能在对数空间内进行。

还有一个更直观的等价说法:

定义:对数空间可计算

若函数 能被一台图灵机计算:它的工作带只用 格,另有一条只写输出带(每写一个符号读写头就右移一格,不能回头读或改写),称 对数空间可计算。

引理

隐式对数空间可计算 对数空间可计算。

2.3 传递性:用重算代替存储

归约要能用来比较难度,必须可传递。对数空间归约的传递性并不显然: 太长,不能先算出来存好,再在上面运行 。

引理

若 且 ,则 。

证明

设 ()、()隐式对数空间可计算。要算 的第 位:运行计算 第 位的对数空间机器,假装它的输入 写在一条”虚拟带”上。每当它需要读虚拟带的第 位,就当场调用计算 的对数空间机器把这一位算出来,用完即扔。整个过程只需存: 机器的工作带()、虚拟读写头的位置 ()、计算 的工作带(),共 。输出长度 仍是多项式。

**“用重算代替存储”**是对数空间算法最核心的技巧:时间可以浪费,空间不行。某个中间结果需要第二次时,不去查表,而是再算一遍。同一思路可以证明 保持类:若 且 ,则 。

与 Karp 归约的关系。 对数空间可计算函数在多项式时间内可算(对数空间机器只有 个格局),所以对数空间归约一定是多项式时间归约;反过来是否成立不知道。已知的 NP-完全性证明,用对数空间归约也都成立。

3. PSPACE Completeness

3.1 完全性

归约给了比较难度的尺子,于是可以谈一个类中”最难”的问题。

定义: -难与 -完全

  • 若对每个 都有 ,称 是 -难的。
  • 若 还属于 ,称 是 -完全的。

完全问题是整个类的”代表”:它一个问题就承载了整个类的难度。例如若某个 -完全问题属于 ,则( 保持 )。类似地可以定义 -完全(第 5 部分)、-完全(第 3 讲)等。

3.2 量化布尔公式

的代表问题是量化布尔公式的求值。先回忆量词:(对所有 )和 (存在 )。在布尔域上, 只能取 或 ,所以

定义:量化布尔公式与

量化布尔公式(QBF)是形如 的公式,其中每个 , 取值于 , 是只含变量 的无量词布尔公式。所有变量都被量词约束,所以 QBF 要么真、要么假。

QBF 推广了可满足性:设 是合取范式,变量为 ,则

只用一种量词时是 或 问题;量词交替出现,难度就上升了。

QBF 即双人博弈。 把

看成两人轮流落子:玩家 I()先给 赋值,玩家 II()再给 赋值……最后若 为真则玩家 I 获胜。公式为真,当且仅当玩家 I 有必胜策略:存在一步走法,使对手无论怎么应对,自己都有一步走法……一直到赢。判断这类博弈谁有必胜策略也是 -完全的(Papadimitriou, Games Against Nature, 1983)。

3.3 Stockmeyer-Meyer 定理

定理(Stockmeyer-Meyer, 1973)

是 -完全的。

证明分两半:(求值不难),以及 是 -难的(任何多项式空间计算都能写成 QBF)。

(1) :深度优先遍历求值树。

把 展开成一棵高度为 的二叉树:第 层结点按 分叉,叶子是 在该赋值下的值。 结点的值是两个孩子的”或”, 结点的值是两个孩子的”与”,根的值就是 的真假。

证明( )

对这棵树做深度优先遍历。当前位置用一个长度至多 的 0-1 串表示(从根到当前结点的赋值),沿途每层只需记一位”左子树结果”。到达叶子时,在给定赋值下计算 ,用 空间。遍历完一个子树就擦掉它的中间结果。总空间 ,即线性空间。

树有 片叶子,时间是指数的;但任何时刻只需存一条从根到叶子的路径,这又是”空间可重用”的体现。

(2) 是 -难的:把”格局图中有路径”写成 QBF。

设 在 空间内判定 ,任取输入 。目标:在对数空间内构造一个 QBF ,使 为真。

由 §1.2, 当且仅当格局图中有从 到 的路径;格局图至多 个顶点,所以这条路径长度至多 。每个格局是 位,可以用 个布尔变量表示。对 构造公式 ,含义为:

  • 起点: 表示” 或 “,由 §1.2 的 加上相等判断得到,大小 。
  • 递推:长度 的路径,必有一个”中点”,把它分成两段长度 的路径。

朴素的写法是

但这里 出现了两次,每递推一层公式长度翻倍, 会有 长,没法在多项式时间写出来。

关键技巧:用 让一份 检查两段。

加上前提,相当于说”对 和 这两对都要满足 “;而 只写了一次。这就像程序里把”调用两次同一个函数”改写成”循环两次、每次调用一次”,代码只写一份。

证明( 是 -难的)

按上式递推,每层只增加常数个格局变量和常数个等式,即 取 ,其中 使 不小于格局总数,则 (若计入变量名的编码,每个变量名 位,总长 ),是多项式。所有量词前移即得标准形式的 QBF(各层变量互不相同,可以直接前移)。

由构造, 为真。输出 时只需记住”正在写第几层 “以及层内位置, 部分由 §1.2 的引理在 空间写出。因此 是对数空间归约。

4. Savitch Theorem

第 3 部分把”格局图中有路径”写成了一个不大的 QBF。本部分把同一个”二分中点”的想法搬到机器上执行,回答本讲的第一个核心问题:非确定性能节省多少空间?

先看直接的办法为什么不行。确定型机器模拟一台 空间的 NDTM,可以:

  • 枚举所有选择序列:一条计算路径可能长达 步,光是写下一条选择序列就要 格。
  • 在格局图上做 BFS(§1.3 的证明):要记住”已访问过的格局”,最多 个。

两种办法都要指数空间。Savitch 定理说,其实平方就够了。

4.1 Savitch 定理

定理(Savitch, 1970)

若 空间可构造,则

证明目标:给定 空间的 NDTM 和输入 ,用确定型机器在 空间内判断格局图 中 能否到达 。策略:与 §3.3 一样,用中点把”长度 的路径”拆成两段”长度 的路径”,递归地检查。§3.3 中” 中点”由公式的量词表达,这里改成逐一枚举所有可能的中点。

证明

定义确定型递归过程 ,它判断”从 到 是否有长度 的路径”:

  • :返回” 或 “,后者用 §1.2 的引理检查。
  • :按字典序逐一枚举所有 位的串 。若某个 使 与 都返回 ,就返回 ;全部试完仍不行,返回 。

取 使 不少于格局总数,确定型机器运行 ,返回 就接受。对 归纳即知 正确;格局图中的路径若存在,必有一条长度不超过格局总数 。

空间:递归深度为 。每一层只需记住自己的 和 ,共 位。两个子调用先后执行,第二个调用复用第一个调用用过的空间。所以任何时刻栈上至多 层、每层 位,总空间 。 空间可构造保证了机器能先算出格局的长度和 。

上图把递归过程画成一棵树。底部横轴是一条从 到 的候选路径;根 是整条路径的中点, 是左右两半各自的中点,依此类推,树高 。所有结点投影到横轴上,就得到这条路径上的格局。算法对这棵树做深度优先遍历,任何时刻只保存一条从根到当前结点的路径(图中左边或右边的粗线),即 个格局、每个 位。

代价是时间。 每一层要试 个中点,每个中点引起两次递归调用,总时间 ,比 BFS 的 慢得多。这又是”用时间换空间”。

与 §3.3 对照,两者是同一个想法的两种实现:

Stockmeyer-Meyer(§3.3)Savitch
找中点 量词 逐一枚举所有
两段都要检查 让一份 管两段两次递归调用先后执行,空间复用
每层的开销公式增加 栈帧占
总规模公式 空间

4.2 推论

推论

(,多项式的平方仍是多项式。)这个推论很实用:要证明某个问题属于 ,只需设计一个多项式空间的非确定算法,猜测往往比确定地搜索好写得多。

它还推出 对补封闭:

中间一步是因为确定型类对补封闭(第 1 讲 §4.4)。

对对数空间,Savitch 定理只给出 ,比 大,所以:

  • 仍是开放问题;平方是不是最优的,也不知道。
  • 上面求补的推导对 失效。 是否对补封闭要另想办法,这是第 6 部分的内容。

与时间对比:模拟非确定时间,已知最好的办法仍是指数级的 ;模拟非确定空间却只付出平方的代价。差别在于空间可以重复使用,而递归的”先查一半、擦掉、再查另一半”正是在重复使用空间。

5. NL Completeness

§1.4 证明了 ,§1.2 又说明任何空间受限的计算都是格局图上的可达性问题。两件事合起来就得到: 是 中最难的问题。

5.1 NL-完全

定义: -完全

若 ,且对每个 都有 ,称 是 -完全的。

这里必须用对数空间归约。,若用多项式时间归约,按 §2.1 的论证,几乎每个 中的问题都会是”完全”的,这个概念就没有意义了。

5.2 PATH 是 NL-完全的

定理

是 -完全的。

证明

已在 §1.4 证明。下证 -难。

设 NDTM 在 空间内判定 ,于是 的格局可以用 位表示,常数 只依赖于 。定义 取 的顶点为所有 位的串,共 个(不是合法格局的串从 出发永远到不了,不影响答案)。用邻接矩阵表示 :第 个元素为 当且仅当 。

  • 输出长度为 ,多项式有界。
  • 给定下标 ,用 §1.2 的引理检查 ,只需存 和检查过程的计数器,共 空间。
  • 、 是容易写出的固定格式的串。

所以这是对数空间归约。由 §1.2, 接受 图中 能到达 。

只看无圈图也够了。 由 §1.2,可以假设对数空间机器都会停机:给它装一个计数器,数到多项式步就停。把计数器的值放进格局,每走一步计数器加一,格局图中就不可能有圈。于是:

推论

有向无圈图的可达性问题也是 -完全的。

“NL 就是 PATH”。 对 封闭(与 §2.3 同样用重算代替存储),再加上完全性,得到

即 恰好是”能在对数空间内变成可达性问题”的那些问题。特别地, 当且仅当 : 与 的差别,全在于确定型机器能否只用常数个指针判断有向图的可达性。

Remark

对无向图,可达性问题在 中(Reingold, 2005),所以难点在于边有方向:在有向图里走进死胡同就退不回来。

6. Immerman-Szelepcsényi Theorem

本讲的最后一个问题是: 对补封闭吗?

回顾第 1 讲 §5.2 的不对称:NDTM 接受只需要一条成功路径,拒绝却要所有路径都失败。所以非确定机器擅长证明”存在”(例如指出一条路径),不擅长证明”不存在”。对 ,Savitch 定理让我们先变成确定型再取补(§4.2);对 ,这条路走不通。由 §5,问题归结为:

一台对数空间 NDTM 能否确认”从 不能到达 ”?

人们曾普遍以为不能,就像相信 一样。1987 年,Immerman 和 Szelepcsényi 各自独立地证明了:能。

定理(Immerman-Szelepcsényi, 1987)

6.1 核心想法:清点人数

把”不存在”转化为”存在”的关键是计数。假如事先知道从 能到达的顶点恰好有 个,那么” 不可达”就等价于:

存在 个不同于 的顶点,每个都附有一条从 出发的路径。

这是一个存在性命题,NDTM 可以去猜、去验证。就像点名:花名册上说今天到了 30 人,若点到了 30 个不是小明的人,小明就一定没来。

于是证明分成两步:

  • (A) 已知个数,确认不可达:已知可达顶点数 ,确认 不在其中。
  • (B) 求出个数:用非确定对数空间算出 。

先说清楚”非确定地算出一个数”是什么意思:每条计算路径要么放弃(拒绝),要么得出正确的值,并且至少有一条路径不放弃。

记号: 为从 出发 至多 步能到达的顶点集合,。于是 ,,,而 就是所有可达顶点( 是顶点数)。每个 只需 位,存得下;集合 本身可能有 个元素,存不下。

6.2 第一步:已知 ,判断任意 是否属于

过程:枚举 (已知 )

计数器 。按顺序对每个顶点 :

  1. 非确定地猜 是否属于 ;
  2. 若猜”是”,就非确定地猜一条从 出发、长度至多 的路径走到 (同 §1.4,只记当前顶点和步数)。走不到就放弃;走到了就 ,并对 做所需的检查(例如 是不是 );
  3. 若猜”否”,跳过 。

所有顶点处理完后,若 ,放弃。

关键观察:没有放弃的路径,一定恰好把 完整地列举了一遍。每个被计数的顶点都验证过路径,所以计数到的顶点都在 中;计数又恰好等于 ,所以 中一个也没漏。因此在列举过程中顺便检查” 是否出现过”,得到的就是""的正确答案,无论答案是”是”还是”否”。另外,猜得全对的那条路径不会放弃,所以总有路径给出答案。

空间:、、、路径上的当前顶点和步数,都是 位。

6.3 第二步:由 归纳地算出

顶点 属于 ,当且仅当 ,或者有某个 使 是一条边。所以:

过程:由 计算

。按顺序对每个顶点 :用 §6.2 的过程(以 为已知个数)列举一遍 ,列举时检查是否出现 或 。若出现,。

每处理一个 都要把 重新列举一遍,这又是”用重算代替存储”: 存不下,那就每次需要时重新猜一遍。由 §6.2,没放弃的路径对每个 都判断正确,所以算出的 正确。算完 就可以擦掉 。

6.4 完整证明

证明(Immerman-Szelepcsényi 定理)

构造对数空间 NDTM,输入 , 有 个顶点:

  1. 。
  2. 对 ,用 §6.3 由 算出 ,然后擦掉 。
  3. 用 §6.2 的过程(以 为已知个数)列举一遍 ,检查 是否出现。若列举成功且 未出现,接受;否则拒绝。

正确性:由 §6.2、§6.3,没有放弃的路径上,所有 都正确,第 3 步对""的判断也正确。所以若 从 可达,没有路径接受;若不可达,猜得全对的那条路径接受。

空间:任何时刻只需存 、、、正在处理的 ,以及 §6.2 过程中的 位,共 。

推论

证明

设 ,即 。由 §5,存在对数空间归约 使 ,即 。所以 ,又 对 封闭,得 。于是 ,由第 1 讲 §4.4 的引理即得相等。

同一个算法在格局图上运行,就得到一般形式:

推论

若 空间可构造,则 。

(对 空间的 NDTM 和输入 ,在格局图 上运行上述算法。格局图有 个顶点,顶点名和计数器都是 位;边不必存,需要时用 §1.2 的引理当场检查。)

Remark:为什么这个技巧对 不管用

清点人数需要把所有顶点逐一过一遍。在空间受限的世界里时间不受限,逐一枚举 个格局没有问题。对 而言,要清点的对象(例如所有候选证书)有指数多个,多项式时间内过不完。所以 仍然开放。

6.5 应用:2SAT 是 NL-完全的

作为 Immerman-Szelepcsényi 定理的应用,看一个逻辑问题。2-合取范式是每个子句至多含两个文字的合取范式,例如 。

第 3 讲会看到,每个子句允许三个文字的 是 -完全的;只差一个文字, 却落在 中。原因是两个文字的子句恰好是一条蕴含:

” 为假则 必须为真”,这种强制关系可以沿着链条传播,于是可满足性变成了图上的可达性。

定义:蕴含图

设 2-合取范式 的变量为 。它的蕴含图有 个顶点 ;对每个子句 ,加入两条边 和 (单文字子句 看作 )。

边的含义是”若起点为真,则终点必须为真”。沿路径传递,(零步或多步可达)意味着” 为真则 必须为真”。边是成对加入的,所以图有对称性: 当且仅当 (逆否命题)。

引理

不可满足 存在变量 ,使蕴含图中 且 。

定理

是 -完全的。

证明

:由引理,判断 不可满足,只需非确定地猜一个变量 ,再用 §1.4 的算法检查 和 。蕴含图的每条边都能从 当场读出,所以 ,即 。这里用到了 Immerman-Szelepcsényi 定理。

是 -难的:把 归约到 。给定 ,把每个顶点看成一个变量,每条边 变成子句 (即 ),再加上单文字子句 和 ,得到 。

  • 若 能到达 : 为真沿路径迫使 为真,与子句 矛盾, 不可满足。
  • 若 不能到达 :把从 可达的顶点设为真,其余设为假。可达集合沿边封闭,所以每个子句 都满足; 为真, 为假。 可满足。

所以 ,且每个子句只依赖一条边,这是对数空间归约。

最后, 是 -难的:对 ,,故 ,即 。由传递性,。

6.6 全景

本讲结束时,可以把已知的类排成一条链:

谱系定理告诉我们其中有些包含是严格的:

  • (Savitch 加空间谱系定理),所以 到 之间至少有一个包含是严格的;
  • (时间谱系定理),所以 到 之间至少有一个包含是严格的。

但具体是哪一个,一个也不知道。人们普遍相信 ; 是结构复杂性理论中的重要开放问题。

最后把本讲的结论和用到的技巧放在一起:

结论核心技巧
格局只有 个,在格局图上搜索
空间谱系定理(无 因子)对角线方法;通用机只有常数倍空间开销
可传递用重算代替存储
是 -完全的二分中点, 让一份子公式检查两段
Savitch:二分中点,递归调用先后执行、空间复用
是 -完全的格局图本身就是归约
Immerman-Szelepcsényi:归纳计数(清点人数),每次重新猜名单