既不是P也不是NP完全的NP问题

来源:互联网 发布:mysql 1215 编辑:程序博客网 时间:2024/05/22 03:37

介绍

P=?NP问题是计算复杂性理论里面最重要的问题之一,它的重要性在于如果P=NP是成立的那么life is easy,因为这意味着如果一个问题是容易验证的那么也会容易解决。不过目前的主流观点更倾向于认为PNP,因为一方面这是密码学里面很多hard assumption的基础,另一方面现在的很多结果也支持这一结论。

本文讨论的问题是:如果PNP,那么是否存在一个问题既不属于P也不属于NPC?

这个问题的答案是肯定的,它最初由Ladner证明,我们接下来给出这个证明。

Ladners theorem

Ladner证明的主要思路是构造一个可计算集合A使得其属于NP,使其增长的比P要“快”,但比NPC“慢”。

M1,M2,,Mn,是所有确定性多项式图灵机的一个枚举,使得Mi(x)|x|i的时间内给出判定。类似的,令fi表示对所有多项式时间可计算函数的枚举。

我们给出如下两个条件:

  1. Ri:AL(Mi)
  2. S_i:Si:对任意x,要么xSATfi(x)A,要么xSATfi(x)A

我们定义集合A如下:

A={xxSAT  f(|x|) }
注意到,如果f(n)能在poly(n)内计算完成,那么ANP

我们递归的定义f(n)。首先,令f(0)=f(1)=2。若n>1,我们定义f(n+1)为:如果logf(n)(n)n,那么令f(n+1)=f(n)。否则,考虑一下两种情况:

  1. f(n)=2i: 检查是否存在x满足|x|log(n)使得满足下面两者之一
    • Mi(x)接受,并且f(|x|)是偶数与xSAT不同时满足
    • Mi(x)拒绝,并且f(|x|)是偶数与xSAT同时满足

如果这样的x存在,那么f(n+1)=f(n)+1,否则f(n+1)=f(n)

  1. f(n)=2i+1: 检查是否存在x满足|x|\le \log(n)|x|log(n)使得满足下面两者之一
    • xSAT,并且f(|fi(x)|)是偶数与fi(x)SAT不同时满足
    • xSAT,并且f(|fi(x)|)是偶数与fi(x)SAT同时满足

如果这样的x存在,那么f(n+1)=f(n)+1,否则f(n+1)=f(n)

由于f(n)的计算只检查了|x|log(n)x并且

|x|ilogi(n)logf(n)(n)f(n)
所以f(n)能在poly(n)内计算完成。

我们现在来讨论为什么AP。注意到当f(n)=2i时的条件等价为AL(Mi),如果A=L(Mi)对某个i成立,那么f(n)将一直为偶数(n>i)即ASAT只有有穷个不同,这与PNP矛盾。

A也不属于NPC,这是因为f(n)=2i+1的条件等价为Si。所以若存在SATA的一个归约函数fi(x),那么条件Si将一直不满足,即f(n)一直为奇数(n>i)。这将导致A为有限集合,这将使得SATP(有限集合的计算为O(1)),与PNP矛盾。

Reference

[1]. http://oldblog.computationalcomplexity.org/media/ladner.pdf

1 0
原创粉丝点击