Skip to content

Savitch 定理

Savitch's theorem

对适当空间函数 s,NSPACE(s) 包含于 DSPACE(s²)。

条目类型
定理

形式陈述

s:NN 是空间可构造函数且 s(n)logn,则

NSPACE(s(n))DSPACE(s(n)2).

也就是说,每个可由非确定性 $O(s(n))$ 空间判定的语言,都可由确定性 $O(s(n)^2)$ 空间判定。常见函数 logn,n,nk 都满足可构造性;该假设让模拟机在所给空间内识别预算并枚举相应长度的配置。

固定输入 x 和一台 O(s(n)) 空间非确定机器 N。存在只依赖 N 的常数 c,使其配置可编码为至多 cs(n) 位。令

C(n)=2cs(n),

则合法配置数不超过 C(n)。若存在接受路径,就存在不重复配置、长度小于 C(n) 的接受路径。令 k=log2C(n),定义谓词

R(u,v,i)=1u 到 v 存在长度至多 2i 的配置路径.

基例检查 u=vu 能否一步转移到 v。对 i>0,有

R(u,v,i)=mCx(R(u,m,i1)R(m,v,i1)),

其中 Cx 是输入 x 上所有合法配置。确定性算法按字典序逐个枚举中点 m,先深度优先检查左半段;只有左半段可达时才检查右半段。调用返回后只保留一个真值并复用其空间。

直觉

直接模拟非确定选择会面对一棵指数宽的树;保存一条完整接受路径也可能需要“路径长度乘配置长度”的指数空间。Savitch 的中点递归改问:两份配置之间是否有一条长度受限的路径。每次把允许长度减半,递归深度只剩路径长度的对数,也就是 O(logC)=O(s(n))

每层只保存端点 u,v、当前中点、枚举状态和常数个结果位,总计 O(s(n)) 位。沿一条深度优先递归链累加,空间满足

S(i)S(i1)+O(s(n)),

i=O(s(n)) 层后得到 O(s(n)2)。指数多个候选中点从未同时驻留;算法用反复枚举的时间换掉了保存整张图或整条路径的空间。

Savitch 定理示意图
例子与边界

四配置路径的递归拆分

设配置图只有边

ua,ab,bv.

因为共有四个配置,检查长度至多 4 的路径可调用 R(u,v,2)。顶层枚举到中点 b 时,左侧 R(u,b,1) 检查至多两步的 uab,右侧 R(b,v,1) 检查一步边 bv;两者再降到一步基例。算法在任一时刻只保留当前递归链上的端点和中点,没有保存完整路径 (u,a,b,v) 的数组。

时间代价

若每层枚举至多 C(n) 个中点,粗略时间递推为

T(i)C(n)(2T(i1)+poly(s(n))).

深度为 O(logC),所以时间可达

C(n)O(logC(n))=2O(s(n)2).

s(n)=logn 时,这是 nO(logn) 的拟多项式时间,而不是多项式时间。平方空间确定化不能照搬成多项式时间去非确定化。

假设与结论边界

s(n)logn 使输入头位置和配置计数可纳入 O(s(n)) 位;低于该阈值时,模型约定会影响陈述。定理也没有证明 NSPACE(s)=DSPACE(s):取 s=logn 只得到 NLDSPACE(log2n),并未解决 L 是否等于 NL。

推论与应用

对任意 k 应用定理,

NSPACE(nk)DSPACE(n2k)PSPACE.

再结合每台确定机器都可视为不分支的非确定机器,得到

NPSPACE=PSPACE.

这解释了为什么非确定性不会扩大多项式空间类,却没有推出 P=NP:确定模拟付出的时间可能是 2nO(1)。Savitch 的递归可达法也成为隐式指数图上小空间搜索的标准范式;Immerman–Szelepcsényi 定理关于 NSPACE 对补封闭的结论则使用另一套计数思路,不能从本定理直接读出。

参考资料
  • Walter J. Savitch, “Relationships Between Nondeterministic and Deterministic Tape Complexities,” Journal of Computer and System Sciences 4(2), 1970, pp. 177–192.
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §4.3.1.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §8.1.
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

被这些条目使用