层次定理是计算复杂性中很基础但却很重要的内容,用通俗语言来概括的话就是更多的运行时间或者更大的运行空间带来的是更大的能力。层次定理主要分为三个部分:确定性时间层次定理(Deterministic Time Hierarchy Theorem, DTHT)、非确定性时间层次定理(Nondeterministic Time Hierarchy Theorem, NTHT)、空间层次定理(Space Hierarchy Theorem, SHT)。为什么没有非确定性空间层次定理呢?这是因为空间复杂性对非确定性是封闭的,具体来说有,因此空间层次定理只需要有确定性即可。DTHT和SHT都很容易证明,主要就是利用了通用图灵机在模拟图灵机的运算时最多有一个对数的时间加倍和常数的空间加倍这个性质以及对角化思想。定理叙述如下:
定理1(DTHT):如果和都是时间可构造函数并且满足,那么。
定理2(SHT):如果和都是空间可构造函数并且满足,那么。
NTHT的证明则要困难一些,主要是因为如果用类似于DTHT的证明方式即对角化思路进行证明的话需要对图灵机在某个输入上的结果取反,但是非确定性时间类对补却很可能是不封闭的(假设)!因此不能简单的用对角化来进行证明,需要一些额外的技巧。下面的证明是Donnell在他的高级计算复杂性课上的证明思路,这儿只是转述。定理叙述如下:
定理3(NTHT):如果和都是时间可构造函数并且满足,那么。
证明:前面说过NTHT不能简单地用对角化思想来证明,这里用到的是一种称为惰性对角化的思想。我们令表示由一元串进行编码的非确定性图灵机(NTM),它接受的输入也用一元表示(为了方便,这里的一元表示直接写为了正整数)。
然后我们定义另外一个NTM :首先找到满足,其中代表一个正整数区间,即正整数被划分为无穷多个区间,这一步就是找到属于哪个区间;然后如果,则在内模拟的执行,输出就是的输出,如果在步内没有停机,则接受;如果,则对在步内的结果取反,注意这一步实际上执行的是确定性步骤,因为只有遍历在步内的所有计算分支才能确定的输出。
令表示接受的语言,容易看出,现在我们证明。用反证法,假设,则说明存在NTM 使得。因为图灵机可以有无限多表示(只需添加无用文字即可),因此一定存在正整数使得。然后我们观察的执行,由于且,因此模拟的执行,而且根据定理中的条件可知可在内执行完毕,从而有。然后观察的执行,还是一样的思路可知,最后可得。这个时候就可以用对角化的思想了,因为根据的定义可以看出,产生了矛盾,定理得证。
可以看出,这个证明和传统的对角化证明不同之处在于,它不是一开始就在一个输入上取反,而是利用一个在右端点处“绕回”的操作才进行对角化,这也是称为“惰性对角化”的原因。