Lambda微积分中复杂性理论的等价表述?


11

在复杂性理论中,时间和空间复杂性的定义均参考通用图灵机:resp。停止前的步骤数以及触摸到的磁带上的单元数。

给定Church-Turing论文,也应该有可能用lambda演算来定义复杂性。

我的直觉概念是,时间复杂度可以表示为β约简的数目(我们可以使用De Brujin索引定义α转换,反正η几乎不是约简),而空间复杂度可以定义为β约简的数目。符号(λ,DB索引,“应用”符号)减少幅度最大

它是否正确?如果是这样,我在哪里可以得到参考?如果没有,我怎么会误会?


这听起来像是隐式的计算复杂性
塔庆丁

Answers:


15

正如您指出的那样,λ演算具有看似简单的时间复杂性概念:只需计算β还原步骤的数量即可。不幸的是,事情并不简单。我们应该问:

 Is counting β-reduction steps a good complexity measure?

为了回答这个问题,我们首先要弄清复杂性度量的含义。Slot和van Emde Boas的理论给出了一个很好的答案:任何好的复杂性度量都应该与使用Turing机定义的时间复杂性的规范概念具有多项式关系。换句话说,应该有一个从λ微积分项到图灵机的合理编码tr(。),这样对于大小为每个项:当减小为的值时,减小为的值。M|M|Mpoly(|M|)tr(M)poly(|tr(M)|)

长期以来,尚不清楚是否可以在λ微积分中实现。主要问题如下。

  • 有些项会以多项式步长的形式生成指数形式的范式。参见(1)。即使写下标准格式也要花费指数时间。

  • 所选的减排策略也起着重要作用。例如,存在一系列项,这些项减少了并行β步的多项式数量(就最佳λ约简(2)而言,但其复杂度是非基本的(3,4)。

论文(1)通过显示合理的编码来澄清这个问题,该编码假设最左最外层的Call-By-Name减少了保留复杂性类PTIME。关键的见解似乎是,指数爆炸只会由于无趣的原因而发生,而这些原因可以通过适当共享子项来克服。

请注意,类似(1)的论文表明,无论您计算β步长还是图灵机步长,诸如PTIME的粗略复杂度类都是一致的。这并不意味着较低复杂度的类(如O(log n))也会重合。当然,在图灵机模型的变化下(例如1磁带与多磁带),此类复杂性类别也不稳定。

D. Mazza的工作(5)证明了库克-莱文定理(SAT的𝖭𝖯完全性)是使用函数语言(λ微积分的一种变型)而不是图灵机。关键见解是:

BooleancircuitsTuring machines=affine λ-termsλ-terms

我不知道有关空间复杂性的情况。


  1. B. Accattoli,U。Dal Lago,Beta减少是不变的,的确如此

  2. J.-J. 征税,减少纠正和优化dans le lambda-calcul。

  3. JL Lawall,HG Mairson,最优性和低效率:λ演算的成本模型不是什么

  4. 答:Asperti,H。Mairson, 并行beta减少不是基本递归

  5. D. Mazza,教会遇见库克和莱文


8

计算约简是演算的一种复杂性度量,但是一种更为灵活和合理的方法是成本语义,其中操作语义会因各种成本概念而增加。一个很好的起点是 Jan Hoffmann 撰写的OPLSS 2018关于成本语义的讲座(视频和讲座材料可在链接上获得)。βλ


5

关于空间复杂性的说明。正如马丁在他的回答中指出的那样,计算时间复杂度的天真的方法效果很好,但是您所建议的空间复杂度的定义很容易被认为是不充分的。的确,在空间的情况下,您确实希望能够讲到亚线性复杂度,例如,您希望能够恢复类(确定性对数空间,即对时间间隔进行确定) ,并且您的定义显然不允许您这样做:在任何缩减,您至少要计算的大小,该大小在输入大小中是线性的。LPMNMM

这个故事的寓意是重写不适合计算空间。UlrichSchöpp和Ugo Dal Lago率先倡导使用所谓的相互作用几何(GoI)处理亚线性空间复杂性(请参阅ESOP 2010论文“亚线性空间中的功能编程”)。据我所知,GoI在所有基于lambda微积分的亚线性空间类的表征中都以一种或另一种方式使用。我不想了解这里的GoI。让我们说这是一种执行lambda项而不减少它的方法(即,不触发 -redexes),而是通过“遍历”带有特定辅助信息的语法树来执行的。β

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.