Genetic programming uses either trees (in case of classical GP) or acyclic graphs (CGP and in a certain sense LGP), to represent evolved programs (phenotypes).
Is there any reason, why cyclic graphs aren't used?
Computer Science Stack Exchange is a question and answer site for students, researchers and practitioners of computer science. It only takes a minute to sign up.Sign up to join this community
Perhaps one reason is that constraints (perhaps somewhat arbitrary ones) would have to be imposed on what it means to interpret a program represented in this fashion.
However, recent work with CGP has actually explored the addition of cycles: Recurrent CGP
It's true that little research has been done on cyclic graph-based GP, but both:
Cartesian genetic programming by J.F. Miller, P. Thomson (2000).
The standard form of CGP is constrained to be acyclic, however the paper describe the possibility of adjusting a parameter to allow cyclic individuals.
specifically noted the ability of these representations to handle cyclic graphs.
There are also other less well-known papers (but anyway very interesting) that describe cyclic representations and various recombination operators:
Algorithm evolution with Internal Reinforcement for Signal Understanding by Astro Teller (1998).
Take a look at the Neural Programming chapter which describes an inherently cyclic representation.
Two problems with cyclic GP are:
Approaches to speed up cyclic GP are described in Strategies to Minimise the Total Run Time of Cyclic Graph Based Genetic Programming with GPUs by T.E. Lewis and G.D. Magoulas (2009).
As noted by NietzscheanAI there is a renewed interest about this topic.