I'm doing research on automatic programming techniques available in the literature but only those which use AI. The o开发者_运维知识库nly such technique I can find is genetic programming.
Are there any other techniques which transform a high level problem specification, which the programmer need not know how to solve, into a working program? What's the category of these search techiques called?
There isn't really a specific name for the category, although the term genetic programming is often used not just to mean the original genetic programming using lisp S-expressions represented as trees, but more widely to refer to all automatic programming techniques using evolutionary algorithms. That of course does not include non-evolutionary methods, but it is a large proportion of the research literature.
Other techniques that tend to come under this broad "Genetic Programming" category that you might like to consider include Grammatical Evolution, Gene-Expression Programming, Linear GP and Cartesian GP.
There is also Evolutionary Programming, which is distinct from (although in some regards similar to) genetic programming. A small amount of research has been done on using Ant Colony Optimisation for automatic programming. Although, I don't think it was very successful. You can find this best using Google Scholar.
To my knowledge, genetic programming is currently the dominant approach to automatic programming techniques. Outside of this you may want to look at
- program induction/program inference
- optimal program search (Universal Search)
- self-improving programs (Gödel Machine)
The general caegory would be machine learning. Other techniques include boosting, I'm sure you can find more on your own now that you know where to look.
You may also want to look into neural networks.
Other search techniques include Tabu Search and Simulated Annealing. In the planning competitions I've entered, they generally even outperform Genetic Algorithms: for example in ITC2007 track 1 finalist 1, 2, 3 and 4 used Tabu Search and/or Simulated Annealing, while finalist 5 used Genetic Algorithms.
However, I haven't seen them applied for automatic programming techniques yet, it might be they are unsuited for that.
精彩评论