Skip to content

定义Definition

复杂度类 L

施工中 · 内容逐步修订

Complexity class L · Deterministic logspace

可在确定性对数空间内判定的语言类。

形式陈述 ​

复杂度类 L=DSPACE(log⁡n) 是确定性空间类的对数预算情形,由可被确定性图灵机使用 O(log⁡n) 工作空间判定的语言组成。输入带只读、工作带可读写、输出或接受状态不计入工作空间;判定机必须在所有输入上停机。在固定输入上,若工作带有 clog⁡n 格,其内容有 |Γ|clog⁡n=nO(1) 种;再乘有限状态、输入头的 n+2 个位置和工作头位置,完整配置仍只有 nO(1) 种。确定机重复同一配置后将永远重复同一后续轨迹,所以停机运行的时间自动是多项式。常数因子和标准工作带模型的转换不改变该类。

直觉

L 只允许 O(log⁡n) 个工作位,却可反复读取只读输入,因此它不是“只能看对数个输入字符”。对数空间足以保存常数个顶点编号、输入位置、计数器或指针和有限状态,但不能把整个输入复制到内存,也无法显式存储长度为 n 的访问数组;算法必须反复扫描输入并复用极少状态。由于可用配置数是多项式级,确定性对数空间停机计算可限制在多项式步内。

例子与边界

判断回文时,先扫描取得长度 n。然后依次取 i=1,…,⌊n/2⌋,定位第 i 位,暂存一个字符,再移动到第 n+1−i 位比较;一旦不同便拒绝,全部相同则接受。位置计数器和 n 各占 O(log⁡n) 位,暂存字符只占常数空间。单个输入头来回移动可花 O(n2) 时间,却始终不需要保存整串,因此该语言属于 L。小输入统一以 max(1,log⁡n) 处理。

无向图 s-t 可达性属于 L(Reingold 定理);更基础的例子是比较两个二进制数或扫描输入计算模固定常数的余数,只需对数甚至常数工作空间。深度优先搜索若保存整个递归栈和 visited 集通常使用线性空间,不能直接作为 L 算法。

输出带通常只写不读且不计入工作空间,否则算法可把无限记忆藏在输出中。输入头位置是否计入配置、机器是否必须停机等细节需采用标准模型,但合理变体通常只造成常数因子差异。

推论与应用

L⊆NL⊆P。对数空间归约能够流式生成输出,因而比多项式时间归约更精细;它常用于描述解析、图遍历和电路求值中的低内存计算。

流式输出不等于可以把输出免费读回。STCON 的 NL 完全性中的虚拟输入模拟只保存目标输入头索引,每次需要第 j 位就从头重算归约输出到该位,同时保留目标机的工作区。输出长度为多项式,所以索引、重算区和目标工作区合计仍为对数空间;这补全了 L 在对数空间归约下的封闭性论证。

空间复杂度 的可复用性使 L 能做比同等“存储位数”看起来更多的计算。它包含于 NL 和 P,并与 logspace-uniform NC 电路、流式算法和归约计算紧密相连。

参考资料
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009,Ch. 4, deterministic space complexity and logspace。
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Ch. 8, space complexity and class L。
关系图谱6 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

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