跳转到内容

萨维奇定理

维基百科,自由的百科全书

这是萨维奇定理当前版本,由和平-bot留言 | 贡献编辑于2023年1月3日 (二) 06:33 機器人:摘掉已符合跨語言連結規範之條目{{Link Style}}標記)。这个网址是本页该版本的固定链接。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)

萨维奇定理(英語:Savitch's theorem)是计算复杂性理论中的一个定理,由沃尔特·萨维奇英语Walter Savitch于1970年证明。定理的结论为对于任何函数满足,下列关系成立:

亦即,如果一台非确定型图灵机能够利用空间解决某个问题,那么一台确定型图灵机能够在至多空间解决相同的问题。尽管非确定性的引入能够在时间上带来指数的提升,但是,这种引入对于空间而言作用有限。

证明

[编辑]

萨维奇定理的证明是构造性的。证明过程为设计一个针对有向图连通性问题的算法(其它问题可以通过图灵机的格局图归约到此问题)。有向图连通问题可以简述为对于一个有向图和给定的两个顶点st,是否存在从st的有向路径。对于n顶点,存在一个算法在空间内解决这一问题。这一算法的基本思路是利用递归解决一个更一般化的问题:检查是否存在从st的一条至多包含k条边的有向路径,k是递归的输入参数。原始的有向图连通问题当时与此问题等价。为了测试是否存在一条从st的长度为k有向边,可以测试是否存在一条从st的以u为中点的有向边。如果存在,那么对从su和从ut递归此算法。

伪代码表示如下(Python语法):

def k-edge-path(s,t,k):
    if k == 0:
        return s == t
    else if k == 1:
        return (s,t) in edges
    else for u in vertices:
        if k-edge-path(s,u,k/2) and k-edge-path(u,t,k/2):
            return true
    return false

这一递归过程的递归深度为层,每层需要位来存储该层的函数参数和局部变量。因此,算法的总空间复杂度为。上述算法尽管是使用高级语言进行描述,然而,相同的算法使用图灵机实现时所需要的空间上界在渐近意义下是等同的。

由于有向图连通性问题为NL完全问题,因而任意NL中的语言都在复杂度类中(这一复杂度类也常常被写作L2).

推论

[编辑]

从萨维奇定理可以得到许多重要的推论:

  • PSPACE = NPSPACE
    • 得出这一结论因为多项式函数的平方仍然是一个多项式。尽管对于空间,确定性类与非确定性类相等,但是一般认为,对于时间的确定性类P和非确定性类NP,这种关系不成立,尽管这一假设尚是一个悬而未决的问题
  • NLL2
    • 直接规定定理结论中的即可。

参见

[编辑]

参考资料

[编辑]

外部链接

[编辑]