大家好,我知道填充技巧使我们可以向上转换复杂度类-例如。填充是通过“放大”输入,运行转换(例如从转换为)来工作的,这产生了一个“魔术”算法,您可以在填充的输入上运行。尽管这在技术上是合理的,但我对它的工作原理一无所知。这到底是怎么回事?有什么简单的类比填充物吗?P
可以提供一个常识性的理由吗?
大家好,我知道填充技巧使我们可以向上转换复杂度类-例如。填充是通过“放大”输入,运行转换(例如从转换为)来工作的,这产生了一个“魔术”算法,您可以在填充的输入上运行。尽管这在技术上是合理的,但我对它的工作原理一无所知。这到底是怎么回事?有什么简单的类比填充物吗?P
可以提供一个常识性的理由吗?
Answers:
我认为对这个问题有直觉的最好方法是思考指数时间类的全部问题。例如,NE的完全问题是简洁描述的输入上的标准NP完全问题,例如,给定描述图邻接矩阵的电路,图3是否可着色?然后,E = NE是否等于在简洁描述的输入(例如,有效Kolmogorov复杂度较小的输入)上的多项式时间内NP问题是否可解决的问题。显然,这并不比它们在所有输入上都可解决要强。时间范围越大,相关输入的Kolmogorov复杂度就越小,因此对于较大的时间范围而言,崩溃实际上是对较小的输入子集起作用的算法。
罗素(Russell Impagliazzo)
好了,你的目标是要表明,基础上(我们不没有指定此类的确切含义,我们只知道它们在某种程度上已根据输入大小进行了参数化。我们有一种语言,由某种算法决定。现在我们通过在填充每个单词来制作语言,以使其长度现在为,并且我们看到它包含在(我们的新算法基本上是只是忽略添加的零,并在实数,短输入上运行)。
我们要做的是:我们从较大的类中提取一种语言,并对其进行填充,以便可以通过较弱的算法来解决它,从而将我们包含在较小的类中-较弱的算法可以做到这一点,因为它具有相同数量的“实际工作”可以像以前一样进行,但是通过扩展输入,它有其局限性(取决于输入长度)。
现在我们知道,,因此 (通过某种算法决定)。我们想从这里到达。但这很简单-算法决定只是相应地填充输入,然后在填充的输入上运行。
此步骤可以总结如下:我们想在更大,更灵活的类中决定使用我们的额外资源,我们填充输入并运行确定填充语言的算法。
当然,这里涉及一些技术细节(例如,我们必须确保可以在我们考虑的类中实现填充),但是为了给出一般的直觉,我只是忽略了它们。
我看到了关于表示紧凑性的填充参数。想想两台翻译机Turing机器:炸毁实例,再次压缩它们。
padding参数与,方法是将与较低确定性类别中语言的TM的确定性版本组合在一起。的输出共同构成了不能紧凑表示的语言,因此这变得“更容易”。
使用不可能以另一种方式应用该思想,因为仅通过硬类中的语言来生成easy类中的某些语言。
为了使其更加直观,让我们更抽象地了解正在发生的事情!
我们有两种变换,一种用于输入,一种用于问题。我将用表示它们,从上下文中可以清楚看出它是第一个,何时是第二个。
这两个转换具有以下属性:
一,对所有问题的,对所有输入X ∈ Σ *:
显然,用于填充的转换具有这些属性。
我没有正式的论据,为什么目前没有这样的转变,但是从直觉上来说,安德拉斯·萨拉蒙所说的是正确的。增加输入的大小很容易,但是不清楚如何压缩它们?