Answers:
Ohad对于lambda微积分作为讨论复杂性类的基础所面临的问题非常正确。在表征lambda演算中的可简化性的复杂性方面,已经做了相当多的工作,尤其是围绕Lèvy博士论文中的标记和最佳还原的工作。一般而言,用于lambda演算的良好成本模型不应为所有beta降低赋予恒定权重:直观地讲,将大子项替换为多个范围不同的地方应该比签约一个小的K redex花费更多,并且如果有人要一定的金额在不同的重写策略下成本不变的问题,这变得至关重要。
两个链接:
有一个非常有趣的基于线性逻辑的工作线,称为隐式复杂性理论,它通过在lambda微积分上施加各种类型规则来表征各种复杂性类。IIRC,这项工作是在Bellantoni和Cook和Leivant弄清楚如何使用类型系统绑定原始递归来捕获各种复杂性类时开始的。
通常,使用λ结石的吸引力在于,有时可能会发现各种内涵特征的更多可扩展(即,在数学上更易于处理)表征,从而使像图灵机这样的模型具有强大的功能。例如,图灵机和纯lambda演算之间的区别是,由于图灵接收程序代码,因此客户端可以手动实现超时,实现燕尾加工-从而可以并行计算。但是,超时也可以按度量进行建模,并且Escardo推测(我不知道其状态)lambda演算的度量空间模型对于PCF +超时是完全抽象的。度量空间都非常充分研究的数学对象,而且它是非常好的,是能够利用理论的该机构。
但是,使用lambda演算的困难在于,它迫使您从起点就直接面对高阶现象。这可能是非常微妙的,因为Church-Turing命题在较高类型下失败了-计算的自然模型在较高类型上有所不同,因为它们在允许您使用计算表示形式方面有所不同。(由于在LC和TM之间存在差异,因此“平行或”是此现象的简单示例。)此外,由于功能空间的相反性意味着更大的表达力,因此甚至在不同模型之间甚至没有严格的包含。一阶意味着较低的表现力一阶。
您还可以查找显式替换的演算,这些演算会将lambda演算的元级替换分解为一系列显式的还原步骤。这说明了查尔斯的观点,即在考虑时间复杂度时不应将所有替代都视为相同。
请参阅Nils Anders Danielsson,《纯功能数据结构的轻型半形式时间复杂度分析》,该方法在Agda中作为库实现。本文中的引用看起来也很有希望。
对我来说,一个关键的要点是,在简单类型的lambda演算中推导算法的时间复杂性是适当/有用/合理/半自动化的,特别是如果那些算法在其中容易表达(即纯函数),并且特别是如果那些算法主要使用了“按名称呼叫”语义。伴随着这一点,很明显的一点是,在给定的评估策略下,人们不仅仅在“ lambda演算”中而是在lambda演算中计算复杂度。