为什么co-NP不是NP的子集

时间:2016-06-17 16:32:56

标签: complexity-theory

有人问我这个问题,我发现即使花了一些时间重新阅读我的大学课本,我也无法回答这个问题。具体来说,这里是许多教科书中co-NP的定义:

定义1

“问题A在co-NP中,当且仅当存在多项式时间过程V(·,·)和多项式约束p()使得x∈A当且仅当∀y:| y | ≤p(| x |),V(x,y)= 1“

  1. 这是不是意味着如果A在共同NP中,那么它必须有证书(因为每个y都是证书)因此,A也在NP中?

  2. 有些想法,我不确定上面的定义是否正确。鉴于NP的以下定义:

  3. 定义2

    “当且仅当存在多项式时间时,决策问题A在NP中 过程V(·,·)和多项式时间限制p()使得x∈A当且仅当∃y。| y | ≤p(| x |)∧V(x,y)= 1“

    co-NP的直接定义似乎是:

    定义3

    “决策问题A在co-NP中,当且仅当存在多项式时间限制p()时,x∈A当且仅当∀y:| y |≤p(| x |)时不存在多项式时间过程V(。,。),使得V(x,y)= 1“

    但是,定义3不等同于定义1,因为V(。,。)可能是不可判定的。我错过了什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

  

这是不是意味着如果A在共同NP中,那么它必须有证书(因为每个y都是证书)因此,A也在NP中?

没有。在NP的定义意义上,V不是问题A的验证者。要使V在这个意义上成为验证者,我们需要能够通过找到单个y来确定x∈A,使得V(x,y)= 1.使用此V,我们需要检查y的所有可能值

您提出的"直截了当的定义"共同NP的错误。对于任何问题A,我们可以选择V作为忽略其参数并立即返回1的过程。因此,根据您的定义,co-NP中不会出现任何问题。