结论与进一步研究
1 结合规划与程序合成
在现代计算机科学中,自动编程和程序合成一直是热门话题。自动编程的目标是尽可能自动化地生成计算机程序,从而减轻程序员的负担。归纳程序合成(Inductive Program Synthesis)和演绎程序合成(Deductive Program Synthesis)是两种主要的方法。归纳程序合成从不完全信息中构建程序,尤其是从输入/输出示例中归纳出递归函数。而演绎程序合成则是从完整的、形式化的规范中自动推导出正确的程序。
1.1 通用规划与归纳程序合成的结合
为了实现这一目标,我们提出了一种结合通用规划(Universal Planning)和归纳程序合成的方法。通用规划首先为具有少量对象的问题生成一个通用计划,然后将这个计划转换为一个有限的程序项,最后将这个项折叠成一个递归程序方案。这种方法的优势在于,通用规划和折叠可以通过强大的、领域无关的算法来执行,而计划转换则是知识依赖的。
通用规划器 DPlan
DPlan 是一个基于状态的、非线性的、全序的逆向规划器。它不是表示将单个初始状态转化为满足顶层目标的状态的动作序列的计划,而是构造一个计划,表示规划问题中所有属于该问题的状态的最优动作序列。DPlan 的简短历史和实现细节可以在附录 A1 中找到。
有限程序项的折叠
通过模式匹配将有限程序项折叠成一个(一组)递归程序。对于归纳泛化,可以“反转”固定点语义的概念:将给定的有限程序视为未知递归程序的第 n 次展开。如果可以分解该术语,使得术语的每个段落都与相同的子项(称为骨架)匹配,并且如果骨架相对于每个段落的实例化可以用一个唯一的替换(在骨架中用项
规划与程序合成结合的研究及应用
超级会员免费看
订阅专栏 解锁全文
5084

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



