论文标题
迭代遗传改善:缩放随机程序合成
Iterative Genetic Improvement: Scaling Stochastic Program Synthesis
论文作者
论文摘要
程序合成的目的是{\ it自动}从满足给定规范的基础编程语言中查找程序。尽管这有可能革新计算,但如何有效地搜索庞大的程序空间是程序合成中未解决的挑战。如果解决方案需要大的程序,通常认为{\ it随机}搜索比其他类别的搜索技术具有优势。不幸的是,现有的随机程序合成器在遇到可伸缩性问题的情况下不能很好地满足这一期望。在这里,我们为随机程序合成提出了一个新的框架,称为迭代遗传改进以克服这个问题,这是一种受软件开发过程实践启发的技术。迭代遗传改善的关键思想是应用遗传改善以改善当前的参考计划,然后迭代地替换参考程序,以最佳的程序替换参考程序。与传统的随机合成方法相比,迭代遗传改善可以以更健壮的方式逐步构建程序的复杂性。我们评估了两个程序合成域的方法:列表操纵和字符串转换。我们的经验结果表明,在可扩展性和解决方案质量方面,这种方法比几种代表性的随机程序合成技术具有相当大的优势。
Program synthesis aims to {\it automatically} find programs from an underlying programming language that satisfy a given specification. While this has the potential to revolutionize computing, how to search over the vast space of programs efficiently is an unsolved challenge in program synthesis. In cases where large programs are required for a solution, it is generally believed that {\it stochastic} search has advantages over other classes of search techniques. Unfortunately, existing stochastic program synthesizers do not meet this expectation very well, suffering from the scalability issue. Here we propose a new framework for stochastic program synthesis, called iterative genetic improvement to overcome this problem, a technique inspired by the practice of the software development process. The key idea of iterative genetic improvement is to apply genetic improvement to improve a current reference program, and then iteratively replace the reference program by the best program found. Compared to traditional stochastic synthesis approaches, iterative genetic improvement can build up the complexity of programs incrementally in a more robust way. We evaluate the approach on two program synthesis domains: list manipulation and string transformation. Our empirical results indicate that this method has considerable advantages over several representative stochastic program synthesizer techniques, both in terms of scalability and of solution quality.