归纳合成低级循环程序的垫脚石
人工智能
2018-11-28 v1 机器学习
编程语言
摘要
从输入/输出样例进行的归纳程序合成,可在不预设解算法形式的情况下提供从零自动创建程序的机会。对于带循环的一般程序(相对于无循环程序或领域特定语言的合成)的归纳,当前技术水平仅相当于入门编程作业水平。大多数需要算法巧妙性的问题,如快速排序,在没有显著问题特定背景知识辅助的情况下仍难以解决。一个关键挑战是识别可用于引导搜索朝向正确循环程序的线索。我们提出 MAKESPEARE,一种简单的延迟接受爬山方法,可从输入/输出样例合成低级循环程序。在搜索过程中,延迟接受绕过微小收益,以识别显著改进的垫脚石程序,这类程序倾向于泛化并促成进一步进展。该方法在一组既定基准上表现良好,并成功解决了此前未解的“Collatz 数”程序合成问题。其他基准包括快速排序整数数组的问题,其中我们观察到 comb sort(一种经验上快速的 Shell sort 变体)的出现。MAKESPEARE 还在 TIS-100 汇编语言编程游戏的一个谜题上合成了创纪录的程序。
引用
@article{arxiv.1811.10665,
title = {Stepping Stones to Inductive Synthesis of Low-Level Looping Programs},
author = {Christopher D. Rosin},
journal= {arXiv preprint arXiv:1811.10665},
year = {2018}
}
备注
AAAI 2019