Genetic programming is, in artificial intelligence, a technique of evolving programs, starting from a population of unfit programs, fit for a particular task by applying operations analogous to natural genetic processes to the program population. This is basically a heuristic, i.e. looking within the space of all programs for an optimal or at least suitable programme. The operations are: selection of the most suitable reproductive programs (crossover) and mutation based on a predefined fitness test, usually ability at the desired function. The crossover process involves exchanging random sections of selected pairs (parents) to generate new and separate offspring which will become part of the new program generation.