线性代换演算中求值策略的复杂度分析
在计算理论中,不同的求值策略对于程序的执行效率有着显著的影响。本文将深入探讨线性代换演算(LSC)中按名调用(Call-by-Name,CBN)、按值调用(Call-by-Value,CBV)和按需调用(Call-by-Need,CBNeed)三种求值策略的复杂度,揭示实用值(practical values)在优化求值过程中的重要作用。
1. 研究背景与贡献
研究主要有两个重要贡献:为按值调用和按需调用提供了线性界限。通常认为,按值调用和按需调用能够加速按名调用的求值过程,因为它们在参数替换之前减少了参数中的可约式(redexes),实现了一种共享机制。研究结果表明,与按名调用相比,它们还能提供更微妙、更深入的加速效果。存在一些项,在按名调用和按值调用中达到正规形式所需的β - 步数相同,但它们的微步求值在按名调用中需要$O(k^2)$步,而在按值调用和按需调用中仅需要$O(k)$步。
2. 按名调用分析
- 术语和上下文
- 线性代换演算的语言由以下语法生成:
t, u, w, r ::= x | λx.t | tu | t[xu]
- 其中,$t[xu]$ 是显式替换(explicit substitution),表示在 $t$ 中用 $u$ 替换 $x$。$\lambda x.t$ 和 $t[xu]$ 都在 $t$ 中绑定 $x$。初始项是没有自由变量且没有显式替换的闭项
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



