是否存在在多项式时间内可解决但在多项式时间内无法验证的任务?


34

我和我的一位同事刚刚打了一位我们教授的笔记。注释指出,有些任务可以在多项式时间内解决(属于PF类),但不能在多项式时间内验证(不在NPF类别中)。

要详细说明这些类:​​我们得到一些输入X并产生一些输出Y,使得(X,Y)在关系R中表示我们的任务。如果可以在多项式时间内获得X的Y,则该任务属于PF类。如果可以验证多项式长度证明书Z证明在多项式时间内元组(X,Y)与关系R有关,则该任务属于NPF类。

我们不是在谈论决策问题,答案只是“是”或“否”(如果某个字符串属于某种语言,则更为正式)。对于决策问题,似乎PF是NPF的适当子集。但是,对于其他任务,可能会有所不同。

您是否知道可以在多项式时间内解决但无法在多项式时间内验证的任务?


8
也许我误会了,但是为什么以下不是多项式时间验证算法?给定(x,y),使用多项式时间算法自己计算函数f(x),如果,则返回“正确” f(x)=y。您是否可能会误读或教授打错了电话,而是说存在多项式时间内可验证但多项式时间内无法解决的问题?
Lieuwe Vinkhuijzen

1
@LieuweVinkhuijzen“要说在多项式时间内可以验证但在多项式时间内无法解决的问题?” [参考 需要]
T. Verron

@ T.Verron Haha是的,我也很高兴看到教授的证明;)
Lieuwe Vinkhuijzen

Answers:


44

仅当给定输入有许多允许的输出时,才有可能。即,当关系R不是函数时,因为它违反了唯一性。

例如,考虑以下问题:

鉴于(在一元表示)和一个TM 中号,产生另一个TM Ñ使得大号中号= 大号Ñ ñ > Ñ(其中Ñ代表的编码方式(哥德尔数)ñ成自然数)nNMNL(M)=L(N)#N>n#NN

解决这个问题很简单:继续向TM 添加一些冗余状态,可能在它们之间进行一些虚拟转换,直到其编码超过n为止。这是TM上的填充引理的基本重复应用。这将需要n个填充,每个填充可以添加一个状态,因此可以在多项式时间内完成。Mnn

另一方面,在给定无法确定N是否是输入n M的正确输出。实际上,检查大号中号= 大号Ñ 是不可判定(应用水稻定理),和约束Ñ > Ñ仅丢弃有限多个ñ从那些秒。因为我们从一个不确定的问题中删除了有限数量的元素,所以我们仍然遇到一个不确定的问题。n,M,NNn,ML(M)=L(N)#N>nN

您也可以替换不确定的属性以获得仍可计算但NP硬/完整的变化。例如,给定n(一元),计算内部具有n -clique 的图G是微不足道的。但是给定n G很难检查n是否存在。L(M)=L(N)nGnn,Gn


1
预计情况并非如此。好答案!
菲利普·哈格隆德

7
这不能回答问题。OP特别要求解决一个通常意义上无法验证的问题,在该问题中,除了输入内容和所称的答案外,我们还会获得证书,用于证明答案的正确性。在您的情况下,证书是用于不确定性地生成新的等效图灵机的位。考虑到中号ñž,很容易检查是否ž给出了机器中号。如果没有z,问题是生成NPC语言的硬实例是否容易,仅在Minicrypt和Cryptomania中如此。zM,NzzMz
Lieuwe Vinkhuijzen

2
@chi并非所有对都可以认证,但是可以验证由算法生成的对M N对。证书是您的算法从M生成N的成绩单(例如“以M开头,然后添加此状态,然后添加此过渡,然后...和voilà,N!”)。通常,如果T是给定x的非确定性算法,则总是计算可允许的y,则T x 的计算路径的转录本就是给定y允许的证明。M,NM,NNMMNTxyT(x)y
Lieuwe Vinkhuijzen

3
@chi问题有点细微差别:对于任意关系,可能并非所有可允许的y都是可证明的,您可以举一个优雅的例子。然而,问题不问是否可以受理,但uncertifiable关系存在(答案是肯定的,你的榜样),相反,它会询问我们是否可以产生受理,uncertifiable输出的算法。由于上面的论点,这里的答案必须为noRy
Lieuwe Vinkhuijzen

2
@chi我不知道OP打算问什么,但是我发现您的答案仍然很有启发性,我学到了一些知识!imo可以用您的方式来理解问题,或者可以说是“ 存在单向函数吗? ”(也许)或“ 容易产生NP问题的困难实例吗? ”(对于RSA我希望如此),或者,我读的方式,为“ NPP ”(无)。
Lieuwe Vinkhuijzen '16

1

这只是对@chi答案的第一句话的阐述,因为我发现它并不明显。

这个想法是,如果您有一种算法可以在多项式时间内找到某些问题的答案,那么有两种可能性:

  1. 您先前已经(数学上)证明了算法的输出是解决问题的方法,在这种情况下,算法的步骤本身就构成了正确性的证明。

  2. 您有不同的算法来检查输出是否确实是一种解决方案,在这种情况下,您必须运行此算法(否则,您将属于情况#1),这意味着您正在多项式时间内执行该算法。

因此,不会有这样的问题。


我不明白#2。什么意味着不同的算法在多项式时间内运行?
艾伯特·亨德里克斯

@AlbertHendriks:如果验证程序未在多项式时间内运行,则原始求解器无法声称已在多项式时间内找到正确的解,因为它需要运行验证程序以确保其解正确。
Mehrdad '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.