patternMinor
Research regarding algorithm generation/discovery/heuristics
Viewed 0 times
researchheuristicsregardingdiscoveryalgorithmgeneration
Problem
Say I have a specification of preconditions and postconditions for a function. Is there a field of computer science that studies the automated generation of functions that satisfy those specifications?
For example:
Preconditions:
elements in I
Postcondition:
The set of functions that satisfy this (I hope unambiguous) specification are the sorting algorithms. So, how do we get a computer to take this specification, and give us a sorting algorithm?
For example:
Preconditions:
- I is a list
- Q is a binary relation specifying a total order on the
elements in I
Postcondition:
- O is a list
- There exists a bimap B (and its complement B') such that
- O[B[j]] = I[j], and
- O[j] = I[B'[j]],
- for every j, 0
- For every x, 0
The set of functions that satisfy this (I hope unambiguous) specification are the sorting algorithms. So, how do we get a computer to take this specification, and give us a sorting algorithm?
Solution
The phrase to look for is "program synthesis". There's lots of literature in the programming literature on this topic; I suggest using Google Scholar to search through the literature and find relevant publications.
These days one hot approach is using "program sketching". In program sketching, the programmer specifies a template for the code: partial code, with some holes left blank. The tool then automatically tries to fill in those holes in a way that is consistent with the preconditions/postconditions, or is consistent with some provided test cases. There's lot of literature on this topic. For an introduction to this line of work, I'll suggest the following tutorial:
The Sketching Approach to Program Synthesis. Armando Solar-Lezama. Tutorial at PLDI 2012.
These days one hot approach is using "program sketching". In program sketching, the programmer specifies a template for the code: partial code, with some holes left blank. The tool then automatically tries to fill in those holes in a way that is consistent with the preconditions/postconditions, or is consistent with some provided test cases. There's lot of literature on this topic. For an introduction to this line of work, I'll suggest the following tutorial:
The Sketching Approach to Program Synthesis. Armando Solar-Lezama. Tutorial at PLDI 2012.
Context
StackExchange Computer Science Q#41318, answer score: 2
Revisions (0)
No revisions yet.