In a more recent development, known as genetic programming, the solutions are defined by trees of lisp-like expressions. The genetic operations of mutation and cross-over can operate at any node of the tree. In the case of cross-over, a node is chose at random in (typically) two different trees. The nodes, and all of their higher branches and leaves are simply swapped between the trees.
In the case of mutation, the node of one tree could be replaced by a randomly selected node with the same number of descendent branches, leaving the higher branches and leaves unchanged, or a node with more or fewer branches could be put in its place, requiring that some higher branches be added or eliminated. Or, the node and all its higher branches and leaves could be replaced. In the case of mutational branch replacement and addition, the source of origin of the replacement branches and their structure, is arbitrary, and can be generated by a random process.
In this method, the form of the solution does not have to be defined in advance, and so can also evolve. This allows a more creative use of the process of evolution and has been applied to a wide array of problems, notably by John Koza [14,16].
One observed property of GP evolution is a tendency for the size of the trees to grow over time through evolution. This can be viewed as an evolution to higher levels of complexity, thereby achieving one of the main goals of synthetic evolution research. However, it is also likely, that in the absence of any selection against, or relative cost to large size, size increase can involve the incorporation of essentially meaningless ``junk'' code. In the GP, this code will none-the-less be evaluated by the system, with large trees taking more computational effort to evaluate. For this reason it is desirable for GPs to incorporate mechanisms that work against this tendency towards meaningless growth in size.
Although the GP exhibits a free-form solution space, it shares with the GA a total control in the nature of the ``fitness function'' and the process of replication.