Tree-based Genetic Programming
In tree-based GP, the computer programs are represented in tree structures that are evaluated recursively to produce the resulting multivariate expressions. Traditional nomenclature states that a tree node (or just node) is an operator [+,-,*,/] and a terminal node (or leaf) is a variable [a,b,c,d].
Lisp was the first programming language applied to tree-based GP, as the structure of this language matches the structure of the trees. However, many other languages such as Python, Java, and C++ have been used to develop tree-based GP applications.
Tree-based GP was the first application of Genetic Programming. There are several other types (as presented on the home page of this website) such as linear, Cartesian, and stack-based which are typically more efficient in their execution of the genetic operators. However, Tree-based GP provides a visual means to engage new users of Genetic Programming, and remains viable when built upon a fast programming language or underlying suite of libraries.
Karoo GP is an example of a scalable, tree-based GP application suite built in Python and the TensorFlow library for multicore and GPU support. More on the Software page.