平方空间的确定性模拟

Savitch定理是比较确定性与非确定性空间复杂度的模拟定理。采用足够的常用条件,例如空间界s(n)可构造且s(n)≥n时,它给出NSPACE(s(n))⊆SPACE(s(n)²)。非确定性算法使用s量级空间,确定性模拟只需其平方量级,而不必保存全部计算分支。

这里n是输入长度,可构造性保证能在相应空间预算内安排所需存储。研究小空间时,可改用不计入工作空间的只读输入带;在这一模型下,定理的标准对数空间应用给出NL⊆SPACE(log² n)。表述时必须同时交代模型和空间界,不能把任意小的空间函数无条件代入。

参考:[2] [3]

把计算写成隐式图

机器在一个时刻的状态、磁带内容和读头位置合称配置。固定输入后,把合法配置作为顶点,把一步可行转移作为有向边,便得到配置图。非确定性机器接受输入,当且仅当初始配置可以到达某个接受配置;可预先规范化机器,使接受配置只有一个。

在上述空间预算下,每个配置用O(s(n))比特即可描述,配置总数至多为2的O(s(n))次方。存在接受路径时可删去环,因此只需考察不超过配置数的路径。但不能先把这张可能指数大的图完整写入内存,边是否存在应直接根据原机器的转移规则按需检查。

参考:[1] [2]

递归枚举路径中点

设R(a,b,k)询问能否在至多k步内从配置a走到b。若k很小,直接检查相等或一步转移;否则依次枚举候选中点m,递归检查从a到m和从m到b的两段路径,长度上限分别约为k的一半。只要某个m使两段都成立就返回真,否则返回假。

这是确定性枚举,不是重新引入非确定性猜测。一次只处理一个中点、一个子调用,返回后复用空间。路径上限每层减半,所以递归深度是O(log k);每层保存端点、中点及长度计数,需要O(s(n))空间。因k至多指数于s,深度为O(s(n)),两者相乘得到O(s(n)²)。

参考:[1] [2]

省空间不等于省时间

多项式平方仍为多项式,因此定理推出PSPACE=NPSPACE。它揭示空间可以在不同计算分支之间反复利用,非确定性在这一尺度上不会产生新的多项式空间语言。相比之下,逐次重算的时间并不会随空间一起消失,递归过程可能非常耗时。

所以这个结果不能证明P=NP。它也没有证明L=NL,因为log² n并非O(log n),对数空间模拟仍有额外增长。平方开销是所给模拟方法的上界,不表示每一个具体语言都必须付出平方空间,更不应解释成对所有算法最优空间的统一精确值。

参考:[1] [2] [3]