证明Ladner定理:NP不等于P时NPI问题的存在

需积分: 9 1 下载量 113 浏览量 更新于2024-08-29 收藏 4KB MD 举报
Ladner定理是计算复杂性理论中的一个核心结果,它表明如果P不等于NP(P与NP是计算机科学中用于分类问题难度的两个主要类别,P类包含可以在多项式时间内解决的问题,而NP类包含那些验证解在多项式时间内可行的问题),那么存在一类被称为Non-Polynomially Checkable (NPI)的问题,它们既不在P也不在NPC(NPC问题是指那些可以被NP类算法验证但不能被P类算法在多项式时间内解决的问题)。Ladner定理通过构造一个特定的语言来证明这一点。 首先,我们回顾一下Cook-Levin定理,它指出SAT(布尔 satisfiability,即找出逻辑表达式的真值赋值)问题是NPC问题。为了证明Ladner定理,构建了一个名为$\mathrm{SAT}_H$的语言,其定义如下: $$ \mathrm{SAT}_H = \{\psi0\underbrace{11\cdots1}_{n^{H(n)}个1}|\psi\in\mathrm{SAT}, |\psi|=n\} $$ 这里的$H(n)$是一个非递减函数,其目的是确保对于所有$|x|\le\log n$的输入$x$,有一个最小的整数$i$使得存在一个图灵机$\mathbbM_i$能在$i|x|^i$步内正确判断$\mathrm{SAT}_H(x)$。如果这样的$i$不存在,则$H(n)$取$\log\log n$。 证明的关键在于设计一个计算$H(n)$的算法。这个算法包含三个主要部分: 1. 遍历所有可能的$i$值(从0到$\log\log n - 1$),对于每个$i$: - 对于所有$|x|\le\log n$,模拟$\mathbbM_i(x)$的计算,使用通用图灵机$\mathbbU(i,x)$,这需要$O(cC\log C)$时间,其中$c$和$C$分别与$i$和$x$的大小有关。 2. 确定$\psi'$的长度$n'$,并验证它是否属于SAT,这一步消耗$O(n)$的时间。 3. 计算$H(n')$,考虑到$n' \leq |x|$,这涉及递归调用算法,时间复杂度为$T(\log n)$,以及计算$n'^{H(n')}$和检查末尾1串长度的过程,总时间复杂度为$O((\log n)^{\log\log n'})$。 结合这些步骤,计算$H(n)$的总时间函数$T(n)$满足以下关系: $$ T(n) \leq (\log\log n)(2^{1+\log n})(cC\log C + O(n) + T(\log n) + \cdots) $$ 其中$c$和$C$是关于$\log\log\log n$的函数,$C = i|x|^i$。这个递归结构表明$T(n)$的增长速度不会是多项式级的,因为每个递归层次都会引入额外的指数增长,进一步证明了当P≠NP时,存在NPI问题,即$\mathbf{P}\cup\mathbf{NPC}\ne\mathbf{NP}$。 Ladner定理通过构造$\mathrm{SAT}_H$和$H(n)$函数的特性,展示了复杂性理论中的一个关键洞察,即即使P≠NP,仍存在一类问题,它们既不在P类也不在NPC类,这在理论计算机科学中对理解问题分类的边界有着深远的影响。