Skip to content

空间复杂度

Space complexity

计算在输入长度函数下使用的工作存储单元数量。

条目类型
定义

形式陈述

固定一台带只读输入带和有限条可读写工作带的图灵机。对一次运行 ρ,记第 j 条工作带上曾被读写头扫描过的格子集合为 Vj(ρ),定义

space(ρ)=j|Vj(ρ)|.

在标准顺序纸带上,已访问区域可取为包含所有已访问格子的最短区间;固定带数时,这与逐带计数只差常数。对判定机 M,逐长度的最坏工作空间是

SM(n)=maxxΣnspace(ρM,x).

SMO(s),就称 M 使用 O(s(n)) 空间;这里的上界沿用渐近记号。输入带只读且不计入工作空间。若模型包含输出带,通常规定它只写、不可回读,否则输出会变成不收费的工作带。有限控制与固定机器描述也不随输入增长,因而不计入空间。

非确定机器的空间先对同一输入的所有分支取最大值,再对长度为 n 的输入取最大值。空间复杂度从不把不同分支的存储相加;每条分支仍须遵守同一工作空间预算。

直觉

时间复杂度累计执行过多少步,空间复杂度统计一条运行中需要开辟多少工作格。同一格可以擦除后存放新内容,重写一千次仍只占一个格;因此时间可以远大于空间。所谓“同时保留的信息峰值”是这种复用的直观说法,正式计量则以曾访问的工作带区域为准。

只读输入与只写输出把“给定的数据”“中间工作区”“产生的结果”分开。若把输入本身算进工作空间,所有长度为 n 的实例都会先付 Ω(n),对数空间和其他亚线性现象就被模型约定掩盖。

例子与边界

三位计数器展示空间复用

工作带上的三个位可以依次经历

000,001,010,011,100,101,110,111.

这段运行执行多次进位,却始终只访问三个工作格。一般地,s 位计数器可经历 2s 个不同内容,说明 O(s) 空间的计算完全可能运行指数于 s 的步数。反过来,运行 t 步的标准机器至多在每条带上新访问 t+1 个格,因此时间上界会给出同阶的粗略空间上界。

工作空间复用

计费边界

递归调用栈、显式队列、哈希表元数据和保存的指针都属于工作空间,不能只统计主要数组。复杂度理论中的格子数也不同于进程 RSS;运行库、内存分配器、代码页和缓存属于另一套工程测量模型。

s(n)<logn 时,机器能否保存输入位置都成为实质问题。单带还是多带、输入头位置是否可由有限控制获得、纸带是否随机访问,会改变这一区域的表达能力。因此空间层级和 Savitch 一类标准结论通常在 s(n)logn 且模型固定后陈述。

推论与应用

空间计量导出DSPACE和非确定空间类。配置由状态、头位置与工作带内容组成;空间界限制配置编码长度,进而限制可能配置总数。这条“空间 → 配置图 → 时间或可达性”的路径是 L、NL、PSPACE 与 Savitch 定理共同的技术基础。

工程模型还需说明计量单位:n 个机器字占 Θ(nw) 位。简洁数据结构比较信息论最少位数与冗余,线性 Sketch还报告失败概率,外存模型则区分内存容量、磁盘空间和块传输。

只写“O(n) 空间”而不说明 bit、word、输入与索引,无法判断实际节省了哪一类资源。

L把预算固定为 O(logn)PSPACE取所有多项式空间的并。空间可构造性不是单次空间计量的定义条件,但在空间层级等需要机器识别自身预算的定理中通常会显式加入。

参考资料
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, Chapter 4.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §8.1.
关系图谱39 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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